![]() |
ComboBox mit anderem Button-Layout
Hallo,
ich suche nach eine Lösung, wie man der Standard-Combobox einen anderen DropDown-Button verpassen kann. Das Grundverhalten sollte also zu 100% von der ComboBox abgeleitet sein. Lediglich das Layout und Design des Buttons möchte ich verändern. Warum möchte ich das tun: Ich verwende im selben Projekt bereits eine eigene, abgeleitete Komponente in Form eines DropDownGrids die aus einem TComboBtn, TEdit und TStringGrid besteht. Das Problem ist nun aber, dass unter Win Vista/7 der Button der TComboBtn nicht gleich aussieht bzw. dargestellt wird, wie der Button der TComboBox-Komponente. Nun sieht das Layout auf dem Form einfach mies aus, wenn eine CombBox mal so und mal anders aussieht. Hat jemand einen Ansatz, wie man das am besten bewerkstelligt oder hat eventuell jemand sogar ein Beispiel aufgrund einer ähnlichen Anforderung? Danke Euch für mögliche Tips. Gruss Delphitrixer |
Re: ComboBox mit anderem Button-Layout
Hat niemand einen Tipp oder Ansatz für mich?
|
Re: ComboBox mit anderem Button-Layout
Vielleicht kannst Du bei
![]() |
Re: ComboBox mit anderem Button-Layout
Also vll kann dir ThemeServices helfen, ich habe das genutzt um einen SpeedButton nach meinen Wünschen anzupassen.
Delphi-Quellcode:
Über die Delphi-Reference solltest du über ThemeServices alles wichtige herausfinden können. :) procedure TThemesDropDownSpeedBtn.Paint; var oThemeDetails: TThemedElementDetails; oThemeStyle: TThemedComboBox; begin if ( ThemeServices.ThemesEnabled ) and not (csDesigning in ComponentState) then begin if Enabled then begin if (Down) or (FState = bsDown) then begin oThemeStyle := tcDropDownButtonPressed; end else begin if MouseInControl then coThemeStyle := tcDropDownButtonHot else oThemeStyle := tcDropDownButtonNormal; end; end else begin oThemeStyle := tcDropDownButtonDisabled; end; oThemeDetails := ThemeServices.GetElementDetails(oThemeStyle); ThemeServices.DrawElement(Canvas.Handle, oThemeDetails, ClientRect); end else begin inherited; end; end; MfG Alaitoc |
Re: ComboBox mit anderem Button-Layout
Danke Euch für die ersten Tipps. Leider hat weder die MaxComponents noch der Lösungsansatz mit den Themes weitergeholfen.
Die TmXFlatPack leiten zwar eine ComboBox ab und Painten diese neu. Allerdings auf die unschöne Art. Dort wird nur ein Button auf den darunterliegenden, aus der Standard-ComboBox vorhandenen DropDown-Button, darübergesetzt. Das sieht bei einem MouseOver dann etwas hässlich aus. Es ist wohl nicht so einfach, die ComBox in einem anderen Layout darzustellen. Den Lösungsansatz von Alaitoc mit den Themes habe ich ebenfalls mal versucht auf eine ComboBox anzuwenden. Klappt aber irgendwie überhaupt nicht. Ist es denn überhaupt möglich, das Design einer CombBox zu ändern, ohne dass man alles gleich selbst zeichnen muss? Hat das schon einmal jemand versucht? |
Re: ComboBox mit anderem Button-Layout
Zitat:
|
Re: ComboBox mit anderem Button-Layout
Das habe ich leider vermutet. Zeit um eine eigene ComboBox zu bauen habe ich leider nicht. Das wäre mir jetzt zu viel Arbeit.
Ich könnte mein Problem natürlich von der anderen Seite her "aufrollen" und das Layout des TComboBtn an den DropDown-Button einer Standardcombox im Win7-Style anpassen. Wie stehen die Chancen dafür und hat sich damit (oder ähnlich) schon mal jemand versucht? |
Re: ComboBox mit anderem Button-Layout
Evtl. bietet ja das
![]() Kann mit eigenen (Windows-Unabhängigen) Theming betrieben werden. |
Re: ComboBox mit anderem Button-Layout
Naja mein Beispiel war ja auch vom SpeedButton, du müsstest dir dann das notwendige
schon aus der Delphi-Reference für die Combobox raussuchen. Im Endeffekt überrschreibe ich ja auch nur die Paint-Methode, hole mir das für das Windows-Theme passende "Bild" des Buttons und zeichne ihn. Wenn die Themes deaktiviert sind benutze ich halt die normale Paint-Methode. MfG Alaitoc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 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-2025 by Thomas Breitkreuz