AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ComboBox mit anderem Button-Layout

Ein Thema von delphitrixer · begonnen am 16. Feb 2010 · letzter Beitrag vom 19. Feb 2010
Antwort Antwort
delphitrixer

Registriert seit: 12. Aug 2004
55 Beiträge
 
Delphi 10.3 Rio
 
#1

ComboBox mit anderem Button-Layout

  Alt 16. Feb 2010, 15:23
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
  Mit Zitat antworten Zitat
delphitrixer

Registriert seit: 12. Aug 2004
55 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: ComboBox mit anderem Button-Layout

  Alt 18. Feb 2010, 09:13
Hat niemand einen Tipp oder Ansatz für mich?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: ComboBox mit anderem Button-Layout

  Alt 18. Feb 2010, 09:23
Vielleicht kannst Du bei MaxComponents spicken. Schau Dir dazu mal das TmxFlatPack an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: ComboBox mit anderem Button-Layout

  Alt 18. Feb 2010, 09:28
Also vll kann dir ThemeServices helfen, ich habe das genutzt um einen SpeedButton nach meinen Wünschen anzupassen.

Delphi-Quellcode:

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;
Über die Delphi-Reference solltest du über ThemeServices alles wichtige herausfinden können.

MfG Alaitoc
  Mit Zitat antworten Zitat
delphitrixer

Registriert seit: 12. Aug 2004
55 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: ComboBox mit anderem Button-Layout

  Alt 18. Feb 2010, 14:39
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?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: ComboBox mit anderem Button-Layout

  Alt 18. Feb 2010, 14:43
Zitat von delphitrixer:
Hat das schon einmal jemand versucht?
Ja, und mein Ergebnis für mich war, das es das beste war eine völlig eigene Combobox zu erstellen (abgeleitet von TCustomControl) die zu 100% meinen Wünschen entspricht. Einfach nur das Aussehen der vorhandenen Combobox zu ändern war schlichtweg nicht so möglich wie ich es wollte.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
delphitrixer

Registriert seit: 12. Aug 2004
55 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: ComboBox mit anderem Button-Layout

  Alt 18. Feb 2010, 14:51
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: ComboBox mit anderem Button-Layout

  Alt 18. Feb 2010, 14:54
Evtl. bietet ja das ElPack genau das was du willst.
Kann mit eigenen (Windows-Unabhängigen) Theming betrieben werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: ComboBox mit anderem Button-Layout

  Alt 19. Feb 2010, 08:27
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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