Einzelnen Beitrag anzeigen

pstruh
(Gast)

n/a Beiträge
 
#9

Re: Mouseover bei Object Bevel / Cursor ausblenden

  Alt 24. Sep 2007, 16:30
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
  Mit Zitat antworten Zitat