Hallo taktaki,
dann wollen wir mal versuchen es zu erklären (bin da leider keine Experte):
Jedes (?) fensterbasierte Control hat eine Schnittstelle, die die von Windows an das Control gesendeten Botschaften entgegennimmt und verteilt. Wenn man sich in diese Prozedur "einklinkt", kann man auf diese Botschaften reagieren, noch bevor das Control darauf reagieren kann und dadurch das Verhalten des Controls beeinflussen. Zitat der Hilfe: "Mit Hilfe von WindowProc können Sie die Fensterprozedur des Steuerelements vorübergehend ersetzen oder unterklassifizieren". Weitere Infos findest du in der Windows-Hilfe zu "WindowProc".
Folgende Schritte sind notwendig:
1. Deklaration der Zeigervariablen für die Originaladresse (lokal im Implementationsteil deiner
Unit), z.B.
var BevelOrgWinProc : TWndMethod;
2. "Einklinken" deiner eigenen Fensterprozedur (im OnCreate deines Formulars), z.B.
Delphi-Quellcode:
BevelOrgWinProc :=Bevel.WindowProc; // Originaladresse merken
Bevel.WindowProc:=myBevelWinProc; // deine eigene Fensterprozedur "einklinken"
3. Deklaration deiner eigenen Fensterprozedur (im private-Abschnitt deiner
Unit), z.B.
Delphi-Quellcode:
procedure TForm1.myBevelWinProc(var Msg:TMessage);
procedure ToggleCursor;
begin
if Bevel.Cursor=crDefault then Bevel.Cursor:=crNone
else Bevel.Cursor:=crDefault;
end;
begin
if Msg.Msg=WM_LButtonUp then ToggleCursor // Reaktion von LeftButtonUp
// soll verändert werden
else BevelOrgWinProc(Msg); // sonst Original aufrufen
end;
Das sollte eigentlich den gewünschten Effekt haben...
Gruß
PS: und bitte >> kapieren mit EINEM k