Einzelnen Beitrag anzeigen

MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Was ist hier los? (TListBox, LBN_SELCHANGE, onMouseMove)

  Alt 12. Nov 2019, 00:52
Hallo,
mir ist kein richtiger Titel eingefallen.
Ich habe mal eine ganz neue Anwendung gemacht um alle Faktoren meines Projekts auszuschließen.

Also eine neue VCL Anwendung.
1. Eine ListBox auf die Form und ein paar Items hinzufügen
2. ListBox mit Ereignis OnMouseMove verbinden und dort ein "Beep" rein.
2. Ein TPanel auf die Form

Folgender Code noch dazu:
Delphi-Quellcode:
type
  TListBox = class(Vcl.StdCtrls.TListBox)
    private
      procedure CNCommand(var AMessage: TWMCommand); message CN_COMMAND;
end;

procedure TListBox.CNCommand(var AMessage: TWMCommand);
begin
  inherited;
  if (AMessage.NotifyCode = LBN_SELCHANGE) then
  begin
    form1.panel1.width := form1.panel1.width + 10;
  end;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
beep;
end;
Wenn man nun die Maus auf die ListBox bewegt, dann Beep es. Logisch. Lasst mal die Maus auf der ListBox liegen und danach mit den Pfeiltasten andere Items auswählen. Hier wird dann CNCommand / LBN_SELCHANGE gefeuert. Soll ja auch. Dort wird dann das Panel in der Breite immer ein wenig breiter gemacht. Das komische ist nun, dass dadurch OnMouseMove von der TListBox auch ausgeführt wird. Das soll aber nicht und ich verstehe es nicht, wieso das passiert.

Gruß Mic
  Mit Zitat antworten Zitat