Ich hab leider keine Ahnung wie der Prozedurtyp genannt wirt, ich nenne es
Messageprozedur. Ob das eine richtige Bezeichnung ist weiss ich allerdings nicht.
Zuerst ein wenig Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| type TForm1 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMSysCommand; begin if (Msg.CmdType = SC_MINIMIZE) then begin ShowMessage('Das Fenster wird nun minimiert'); end; if (Msg.CmdType = SC_MAXIMIZE) then begin ShowMessage('Das Fenster wird nun maximiert'); end; inherited; end; |
Wichtig ist diese Zeile
Quelltext
1:
| procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; |
Diese Prozedur fängt alle Messages die an das Formular gesendet werden. Zusamengesetzt ist die aus:
WMSysCommand - Auch wenn der Name jetzt wichtig aussieht, so ist es nut eine Bezeichnung. Es wird meistens eine Bezeichnung gewählt die der Message ähnlich ist. Ist aber kein Muß.
(var Msg: TWMSysCommand) - Parameter und sehr wichtig. Mit der Message werden Parameter mitgeschickt. Es handelt sich hier um eine Recordvariable die mehrere Werte enthalten kann. Vor der Variable muß das VAR stehen. Dadurch ist es Möglich die Werte zu überschreiben. Abhängig von der Message ist auch der Variablentyp. Was für ein Typ es sein soll steht meistens in der Hilfe dabei. Bei selbstdefinierten Messages kann die TMessage genommen werden.
message WM_SYSCOMMAND - Die Message. Es gibt Listen mit allen Messages und deren bedeutung. Stehen irgendwo in der API. Ist eingentlich eine Konstante für ein Integerwert. Man kann auch eine eigene Message definieren.