AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Thema durchsuchen
Ansicht
Themen-Optionen

TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

Ein Thema von softtouch · begonnen am 29. Aug 2023 · letzter Beitrag vom 30. Aug 2023
Antwort Antwort
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
218 Beiträge
 
Delphi 12 Athens
 
#1

TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

  Alt 29. Aug 2023, 18:43
Ich habe mehrere TButtonEdit controls, alle haben linken und rechten button sichtbar.
Die linken buttons haben alle das gleiche TPopupmenu als dropdown menu zugewiesen bekommen.
Wenn ich nun einen Menu Eintrag auswähle, wie weiss ich dann, welches TButtonEdit control das Popup menu angezeigt hat, damit ich im richtigen edit Feld Änderungen vornehmen kann?
Die property TPopupMenu.PopupCompopnent scheint nur bei normalen popup menus zu funktionieren, bei einem Dropdown menu ist es immer nil.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

  Alt 29. Aug 2023, 19:37
Normal via Delphi-Referenz durchsuchenTPopupMenu.PopupComponent


falls hier der Button und nicht das ButtonEdit übergeben wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Aug 2023 um 19:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
218 Beiträge
 
Delphi 12 Athens
 
#3

AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

  Alt 29. Aug 2023, 19:41
Normal via Delphi-Referenz durchsuchenTPopupMenu.PopupComponent


falls hier der Button und nicht das ButtonEdit übergeben wird
Wenn ich das popupmenu in die dropdownmenu property eintrage, klappt das nicht, da ist popupcomponent immer nil.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

  Alt 29. Aug 2023, 19:44
Der Aufrufer muß das übergeben, also der Button des ButtonEdit.

* Manche vergessen es zu setzen
* und Andere achten nicht richtig drauf, was sie übergeben, bei solchen kombinierten Komponenten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.404 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

  Alt 29. Aug 2023, 19:49
Der Quelltext sieht so aus:
Delphi-Quellcode:
    WM_LBUTTONDOWN:
      if FButton.FDropDownMenu <> nil then
      begin
        if not (csDesigning in Parent.ComponentState) then
        begin
          LPoint := ClientToScreen(Point(0, FButton.EditControl.Height));
          FButton.FDropDownMenu.Popup(LPoint.X, LPoint.Y);
        end;
      end
Heißt:
Du hast keinerlei Information, welcher Button dahintersteckt. Das Menü wird einfach nur an Punkt X/Y aufgemacht.

Einziger Weg:
Nachschauen, welcher Button an der Popupstelle liegt. Schön ist das nicht.

Warum klonst du nicht einfach das Menü beim Start des Programms und gibst jedem Button eine eigene Kopie? Dann packst du eine ID in die Eigenschaft Tag (oder nennst das Menü in Name wie den Button plus einen kleinen Zusatz) und kannst die Menüs (und damit die Buttons dazu) so voneinander unterscheiden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
218 Beiträge
 
Delphi 12 Athens
 
#6

AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

  Alt 29. Aug 2023, 19:50
Der Quelltext sieht so aus:
Delphi-Quellcode:
    WM_LBUTTONDOWN:
      if FButton.FDropDownMenu <> nil then
      begin
        if not (csDesigning in Parent.ComponentState) then
        begin
          LPoint := ClientToScreen(Point(0, FButton.EditControl.Height));
          FButton.FDropDownMenu.Popup(LPoint.X, LPoint.Y);
        end;
      end
Heißt:
Du hast keinerlei Information, welcher Button dahintersteckt. Das Menü wird einfach nur an Punkt X/Y aufgemacht.

Einziger Weg:
Nachschauen, welcher Button an der Popupstelle liegt. Schön ist das nicht.

Warum klonst du nicht einfach das Menü beim Start des Programms und gibst jedem Button eine eigene Kopie? Dann packst du eine ID in die Eigenschaft Tag (oder nennst das Menü in Name wie den Button plus einen kleinen Zusatz) und kannst die Menüs (und damit die Buttons dazu) so voneinander unterscheiden.
Ja, das scheint wohl die einzigste Möglichkeit zu sein.
  Mit Zitat antworten Zitat
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
218 Beiträge
 
Delphi 12 Athens
 
#7

AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?

  Alt 29. Aug 2023, 19:49
Der Aufrufer muß das übergeben, also der Button des ButtonEdit.

* Manche vergessen es zu setzen
* und Andere achten nicht richtig drauf, was sie übergeben, bei solchen kombinierten Komponenten.
popupcomponent ist definitiv NIL.
popupcomponent ist nur gesetzt, wenn ich das menu in der popupmenu property eintrage, jedoch NIl wenn ich es in der dropdownmenu property eintrage.
  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 21: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