![]() |
Combobox mit Bitmaps
Hallo,
Ich will eine Combobox erweitern. Es sollten Bilder vor die Einträge gezeichnet werden. Das wird auch schon gemacht.
Delphi-Quellcode:
Allerdings möchte ich bei einem Klick auf die verschiedenen Elemente eines Items unterschiedliche Sachen ausführen.
Procedure TForm4.TntComboBox1DrawItem(Control : TWinControl;Index : Integer;
Rect : TRect;State : TOwnerDrawState); Var Bitmap : TBitmap; Offset : Integer; Colorloc : TColor; Begin offset := 0; With TNTComboBox1.Canvas Do Begin Colorloc := Color; FillRect(Rect); If tLayer(TNTComboBox1.Items.Objects[index]).IsVisible Then Bitmap := Layerlist.BmpLayerOn Else Bitmap := Layerlist.BmpLayerOff; //copy bitmap to combobox coordinate BrushCopy(Bounds(Rect.Left +2, Rect.Top , 16, 16), Bitmap, Bounds(0, 0, 16, 16), clred); //Set a caption to each item Font.size := 10; TextOut(Rect.Left + 40, Rect.Top, TNTCombobox1.Items[Index]); Brush.Color := tLayer(TNTComboBox1.Items.Objects[index]).GetColor; FillRect(Bounds(Rect.Left + 20, Rect.Top + 1, 14, 14)); End; End; Leider habe ich keine Ahnung wie ich herausfinden kann auf welchen Bereich geklickt wurde... Hat jemand eine Idee??? |
Re: Combobox mit Bitmaps
Hi,
ich verstehe die Frage nicht ganz, was für Bereiche hast du? Die Combobox hat dafür nur ein Event "OnChange", wenn ein Eintrag ausgewählt wurde. |
Re: Combobox mit Bitmaps
Ich habe vor jedem Listeneintrag je zwei Bitmaps und will auf einen Klick auf die Bitmap anders reagieren als beim Klick auf den Listeneintrag.
|
Re: Combobox mit Bitmaps
Da wirst du dir schon für jeden Eintrag merken müssen wie groß die Bitmap ist und welche x-Bereich sie damit einnimmt.
|
Re: Combobox mit Bitmaps
Ja das ist nicht das Problem, aber ich weiß nicht mit welcher Funktion ich das abfangen kann. Es gibt kein onMousedown bei TCombobox.
|
Re: Combobox mit Bitmaps
OnMouseDown gibt es auch bei TComboBox.
Bei TControl ist das OnMouseDown als protected deklariert. Mach es public bei deinem Control und go.... ;) |
Re: Combobox mit Bitmaps
Das hab ich auch schon probiert. Das funzt leider auch nur bei dem grauen Feld rechts und nicht bei den Items.
|
Re: Combobox mit Bitmaps
Und was funktioniert dabei nicht?
Delphi-Quellcode:
...
published property OnMouseDown; end; |
Re: Combobox mit Bitmaps
Ich bezweifel, dass das so einfach geht.
Eine ComboBox ist nun mal nicht dafür gedacht in ihrer DropDown-Liste "Pseudo-Buttons" zu handhaben. |
Re: Combobox mit Bitmaps
Wieso sollte es nicht gehen?
Er muss es doch nur verwalten. Bei OnMouseDown kennt er x und y. Wenn er in einer ObjectListe feshält, welcher Eintrag welche Daten bekommen hat, kann er anhand davon bestimmen ob er gerade auf einem Bild geklickt hat oder auf den Textbereich. Ich seh grad nicht wieso das nicht lösbar sein soll. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz