sendmessage bei MouseWheel-Ereignis

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Kornelius
Beiträge: 2
Registriert: Sa 4. Okt 2008, 18:01

sendmessage bei MouseWheel-Ereignis

Beitrag von Kornelius »

Hallo,

ich möchte gerne bei einem MouseWheel-Ereignis in einem Memo-Feld das Drehen des Maus-Rades in ein VK_UP bzw. VK_DOWN Ereignis umwandeln. Dazu habe ich geschrieben:

Code: Alles auswählen

 
procedure TMemoTestFrm.Memo1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
  Msg : tagMSG;
  i : integer;
begin
 
  if WheelDelta > 0
      then Msg.wParam := VK_UP
      else Msg.wParam := VK_Down;
  Msg.lParam:=0;
  i := sendMessage(Application.handle, WM_KEYDOWN, Msg.wParam, Msg.lParam);
  Handled := true;
 
end;
 
 


Aber leider zeigt sich das Programm völlig unbeeindruckt, d. h. es tut nichts, das Ergebnis von sendMessage (i) ist 0.

Was mache ich falsch? (da relativ neu in Lazarus sind selbst die blödesten Fehler bei mir denkbar)

Vielen Dank im Voraus für gute Tipps und alles Gute in diesen schweren Zeiten
Kornelius

Kornelius
Beiträge: 2
Registriert: Sa 4. Okt 2008, 18:01

Re: sendmessage bei MouseWheel-Ereignis

Beitrag von Kornelius »

peinlich, aber ich hab's gefunden, es muss ganz einfach heissen

Code: Alles auswählen

 
procedure TMemoTestFrm.Memo1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
  Msg : tagMSG;
  Key : Word;
begin
 
  if WheelDelta > 0
      then Key := VK_UP
      else Key := VK_DOWN;
  UpDownInMemo(Memo1, Key, MemoLine);
  Handled := true;
 
 
end;             
 


(UpDownInMemo ist eine Funktion von mir, die jeweils eine Zeile in Memo1 markiert)

VK_UP und VK_DOWN soll ja in Memo1 ausgeführt werden und nicht irgendwo sonst.

Da ist SendMessage natürlich völliger Quatsch :roll:

Sorry, und noch einen schönen Abend
Kornelius

Antworten