Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TComboBox - MouseMove

  Alt 11. Aug 2018, 20:49
Ich gebe Dir ein Beispiel okay, da ich Deinen Source nicht kenne ist es universal Einsetzbar.
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    procedure ApplicationIdle(sender: TObject; var Done: boolean);
  end;
Delphi-Quellcode:
procedure TForm1.ApplicationIdle(sender: TObject; var Done: boolean);
var
  pt: TPoint;
  wnd: HWND;
  buf: array[0..128] of Char;
  i: Integer;
begin
  GetCursorPos(pt);
  wnd := WindowFromPoint(pt);
  If wnd <> 0 then
    begin
      buf[0] := #0;
      GetClassName(wnd, buf, SizeOf(buf));
      If StrIComp(buf, 'ComboLBox') = 0 Then
        Begin
          Windows.ScreenToClient(wnd, pt);
          i := SendMessage(wnd, LB_ITEMFROMPOINT, 0, lparam(PointToSmallpoint(pt)));
          If i >= 0 Then
            Begin
              SendMessage(wnd, LB_GETTEXT, i, integer(@buf));
              Label1.Caption := buf; // <<<< HIER ÄNDERE DEN EMPFÄNGER, MIR IST DEIN SOURCE UNBEKANNT
              Exit;
            End;
        End;
    end;
end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.DropDownCount := 2;
  Application.OnIdle := ApplicationIdle;
end;
Dieser Code bewirkt das mir im Label1 ein Item aus einer aufgeklappten ComboBox wo Maus gerade drüber ist angezeigt wird.
Ob Du nun den Item Text darstellst oder per Pos() nach irgend was suchst um den Output anzupassen obliegt Deiner Phantasie.
Löst das Dein Problem oder habe ich es falsch verstanden?

Ps: Getestet mit D2009, da reicht es mit dem DropDownCount zu arbeiten.
Gruß vom KodeZwerg

Geändert von KodeZwerg (11. Aug 2018 um 21:09 Uhr)
  Mit Zitat antworten Zitat