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.