Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ComboBox mit extra Button (https://www.delphipraxis.net/159152-combobox-mit-extra-button.html)

Nersgatt 16. Mär 2011 12:16

ComboBox mit extra Button
 
Moin,

ich hab ein Problem und ich finde nicht so wirklich einen Einstieg.
Ich möchte eine Komponente ableiten. Hauptsächlich soll es eine TcxLookupComboBox (DevExpress) sein. Neben dem DropDown-Pfeil soll noch ein zusätzlicher Button sein. Beim Klick auf den Button soll die Eigentschaft EditValue der ComboBox auf Null gesetzt werden. Das ist eigentlich schon alles.
Der Button muss nicht unbedingt neben dem Pfeil sein. Ich könnte mir auch vorstellen, ihn in die Textarea zu machen. Wichtig ist, dass der User ein optisches Element hat, womit er das Ding auf Null setzen kann. Auf Backspace oder Entf zu drücken (beides ist bei mir bereits möglich) bekommen meine User leider nicht auf Reihe... ist wohl zuviel verlangt :|

Ich finde nicht so wirklich einen Einstieg, wie ich das löse. Ich könnte eine Ableitung von TWinControl machen. Dann dynamisch die Combobox und den neuen Button erstellen. Hätte den Nachteil, dass ich praktisch alle Eigenschaften der Combobox pratisch "durchreichen" muss.
Ich könnte auch ne Ableitung von TcxLookupCombobox machen und versuchen, mich ins malen des Controls einzuklinken. Und dabei halt meinen extra Button zu zeichen. Könnte aber reichlich kompliziert werden, oder?

Prinzipell möchte ich mit der ursprünglichen Combobox kompatibel bleiben, damit ich alle Comboboxen in meiner Anwendung einfach ersetzen kann.

Wie würdet ihr das angehen?

pustekuchen 16. Mär 2011 12:26

AW: ComboBox mit extra Button
 
Ich würd einfach eine neue Komponente erstellen mit dem Button und diese Komponente dann einsetzen. Oder seh ich grade nicht dein Problem?

Nersgatt 16. Mär 2011 12:30

AW: ComboBox mit extra Button
 
Wovon würdest Du denn die neue Komponente ableiten?

stahli 16. Mär 2011 12:43

AW: ComboBox mit extra Button
 
Als einfache Lösung ein Panel und darauf die ComboBox und daneben Deinen Button. Deine Komponente wäre dann aber halt ein Panel-Nachfolger...

ChrisE 16. Mär 2011 14:04

AW: ComboBox mit extra Button
 
Hallo,

oder du schaust dir an wie TLabeledEdit das macht (VCL-Komponente aus Edit und Label).

Da kann man sich sicher auch einiges "abschauen" für Dein Problem.

Gruß, Chris

Nersgatt 16. Mär 2011 14:23

AW: ComboBox mit extra Button
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab jetzt für mich folgende Lösung gefunden:
das TcxLookupCombobox hat ne Property "ButtonGlyph". Damit kann man den DropDown-Pfeil ändern. Nimmt man ein Glyph, was größer ist als normal, wird der Button auch automatisch größer.
Also habe ich ein Glyph genommen, was doppelt so breit ist, so dass es aussieht, als wären das 2 Button. Dann noch MouseDown überschrieben und x und y ausgewertet, um zu entscheiden, ob der User aufklappen will, oder leeren will. Das "originale" Aufklappen verhindere ich und kümmer mich selbst ums Aufklappen. Fertig! :thumb:

uligerhardt 16. Mär 2011 14:50

AW: ComboBox mit extra Button
 
Das können die DevEx-Edits von Haus aus:
Delphi-Quellcode:
var
  btn: TcxEditButton;
begin
  btn := cxLookupComboBox1.Properties.Buttons.Add;
  btn.Kind := bkText;
  btn.Caption := 'X';
end;

Nersgatt 16. Mär 2011 14:57

AW: ComboBox mit extra Button
 
Zitat:

Zitat von uligerhardt (Beitrag 1089019)
Das können die DevEx-Edits von Haus aus:

Super! Da werde ich meine Lösung noch mal ändern. Das ist ja viel sauberer. :thumb:
Danke!

pustekuchen 16. Mär 2011 15:08

AW: ComboBox mit extra Button
 
Zitat:

Zitat von stahli (Beitrag 1088965)
Als einfache Lösung ein Panel und darauf die ComboBox und daneben Deinen Button. Deine Komponente wäre dann aber halt ein Panel-Nachfolger...

Genau das meinte ich ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz