Zitat von
BenniP:
Um das Verhalten der auszuwählenden Einträge hab ich mir noch keine Gedanken gemacht.
Es geht mir nur um das Problem das der komplette Text markiert wird beim Anklicken der ComboBox.
Wenn sich das Verhalten der Auswahl von Einträge auch ändern ist mir das (relativ) egal.
Ganz einfach OwnerDraw benutzen und die Einträge selbst zeichnen. Ist wirklich ganz einfach! Such mal im Forum danach (Evtl. auch im
VCL-Quelltext wie Borland das macht). In der Routine wird normalerweise einfach der Hintergrund des markierten Eintrages gesetzt. Wenn Du die Zeile weglässt hast Du das was Du möchtest. Dein OnDrawItem wird nur ca. 10 Zeilen lang sein - ist also wirklich nicht schwer!
SCRaT
//EDIT: Habe gerade bemerkt, daß Du was für eine Combobox suchst. Wer lesen kann ist klar im Vorteil.
Trotzdem möchte ich Dir folgenden Quelltext nicht vorenthalten, evtl. kannst Du Dir davon was für Dein Problem abschauen. Vergiß nicht, vorher im
OI den STyle auf OwnerDraw zu stellen!!! Viel Spaß...
Delphi-Quellcode:
procedure TForm2.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox).Canvas do begin // in ListBox zeichnen
if odSelected in State then
Brush.Color := $00FF00
else
Brush.Color := $FFFFFF;
Brush.Style := bsSolid;
FillRect(Rect);
Brush.Style := bsClear;
TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]); // Text schreiben
end;
end;