AGB  ·  Datenschutz  ·  Impressum  







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

TComboBox in TPopupMenu

Ein Thema von Schwedenbitter · begonnen am 28. Jan 2016 · letzter Beitrag vom 29. Jan 2016
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

TComboBox in TPopupMenu

  Alt 28. Jan 2016, 09:28
Hallo,

gibt es eine Möglichkeit, in einem TPopupMenu eine TComboBox zu integrieren?

Mir ist bekannt, dass ich mir zur Not ein Fenster ohne Rahmen selbst basteln und statt des TPopupMenu anzeigen lassen könnte. Diesen komplizierten Weg würde ich aber ungern gehen, wenn es anders ging.
Ich habe bereits eine ganze Weile gesucht. Ich finde bedauerlicher Weise immer bloß Probleme damit, dass zu einer TComboBox noch ein TPopupMenu hinzugefügt werden soll.
Ich versuche es mal "aufzumalen":

Code:
MenuItem 1
MenuItem2
ComboBox 1 - Item 1
           - Item 2
           - Item 3
ComboBox 2 - Item 1
           - Item 2
           - Item 3
MenuItem 3
Bitte nicht meckern, falls das Thema hier schon besprochen wurde. Dann war ich nur zu dusselig zum Suchen und würde mich über einen Link freuen.
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#2

AW: TComboBox in TPopupMenu

  Alt 28. Jan 2016, 09:32
Das dürfte schwierig werden.

Wie wäre es stattdessen mit einem Untermenü aus RadioItems?

Edit: Alternativ gingen vermutlich Third-Party-Komponenten (TB2000, DevEx?)
Uli Gerhardt
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: TComboBox in TPopupMenu

  Alt 28. Jan 2016, 09:43
Danke für die schnelle Antwort.
Das dürfte schwierig werden.
Ich hatte es vermutet.

Wie wäre es stattdessen mit einem Untermenü aus RadioItems?
Das passt leider nicht. In beiden Boxen sollen Zahlen stehen; in der einen TComboBox von 0 - 20 und in der anderen von 1 bis 100. Das ist mir zu viel Aufwand. Außerdem ist der Charme der ComboBoxen, dass sie immer nur einen Ausschnitt, dafür aber eine Scrollleiste, anzeigen.
Dann werde ich es über ein Fenster machen...
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: TComboBox in TPopupMenu

  Alt 28. Jan 2016, 10:30
Nicht mit dem "normalen" Windows-Menü, aber Fremdkomponenten können das eventuell. (z.B. bei DevExpress TdxRibbon+TdxBarApplicationMenu)

Du kannst im Parent ja den aktuellen Wert anzeigen und als Untermenü die Auswahl.
Oder man zeigt in dem Item den aktuellen Wert und beim Klick wird ein Popup oder anderes Auswahlfenster angezeigt.
$2B or not $2B
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: TComboBox in TPopupMenu

  Alt 28. Jan 2016, 17:41
... Oder man zeigt in dem Item den aktuellen Wert und beim Klick wird ein Popup oder anderes Auswahlfenster angezeigt.
Cool. Danke. Das hat mich auf eine Idde gebracht. Ich musste erstmal nachlesen, wie man MenuItems zur Laufzeit erstellt. Aber das wäre ein befriedigender Ansatz.
Ich habe jetzt bloß 1 Problem: das "Dropdown" wird über die gesamte Höhe des Bildschirms angezeigt. Ich habe mal einen Screenshot angehängt.

Kann man das irgendwie begrenzen?
Im Objektinspektor finde ich dort auf Anhieb nichts.

[edit]
Und dann war mir entgangen, dass die Schriftgröße auch nicht zum Rest passt. Meine App/Mein Programm hat eine ziemlich große Schriftgröße zur besseren Lesbarkeit. Das PopupMenu leider nicht.

Kann man diese Größe auch irgendwie ändern?
[/edit]
Miniaturansicht angehängter Grafiken
popup-liste.png  
Alex Winzer

Geändert von Schwedenbitter (28. Jan 2016 um 18:06 Uhr)
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: TComboBox in TPopupMenu

  Alt 29. Jan 2016, 00:40
Ich habe weiter probiert:
Man kann die Größe ändern, indem man das Menü selbst malt und die Parameter in OnDrawItem und OnMeasureItem für jedes einzelne Element anpasst. Aber das Ergebnis befriedigt mich optisch nicht. Zum anderen Problem des riesigen Auswahlfensters habe ich nichts gefunden.

Ich bin jetzt so weit, dass ich ein Fake-Menü über eine Form gebastelt und das Aussehen/Verhalten dem von TPopupMenu angepasst habe. Allerdings habe ich ein Problem mit der Rückmeldung:
Wenn ich das Fenster mit ShowModal anzeige, wäre alles schick. Allerdings passt dann das Verhalten als PopupMenu nicht mehr. Z.B. wird das Fenster nicht bei einem Klick woanders hin geschlossen und es ändert die Position nicht.
Zeige ich es mit Show , klappt das zwar. Aber ich tue mich schwer damit den Status des Fensters mitzubekommen.

Gibt es ein Ereignis im Hauptform, dass das Schließen eines SubForms meldet?

Anderenfalls muss ich in den sauren Apfel beißen und mit Messages arbeiten. Den Quelltext habe ich angehängt. Manchmal sagt der mehr als Worte.
Angehängte Dateien
Dateityp: zip FakePopup.zip (2,6 KB, 2x aufgerufen)
Alex Winzer
  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 17:22 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