![]() |
TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
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. |
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Normal via
![]() falls hier der Button und nicht das ButtonEdit übergeben wird. :stupid: |
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Zitat:
|
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Der Aufrufer muß das übergeben, also der Button des ButtonEdit.
* Manche vergessen es zu setzen :wall: * und Andere achten nicht richtig drauf, was sie übergeben, bei solchen kombinierten Komponenten. |
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Der Quelltext sieht so aus:
Delphi-Quellcode:
Heißt:
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 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. |
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Zitat:
popupcomponent ist nur gesetzt, wenn ich das menu in der popupmenu property eintrage, jedoch NIl wenn ich es in der dropdownmenu property eintrage. |
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Zitat:
|
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Zwei Popupmenüs (die Items kann man ja kopieren lassen)
oder das Popup selber aufrufen. (anstatt es dem Button zuzuweisen)
Delphi-Quellcode:
procedure TForm4.ButtonedEdit1LeftButtonClick(Sender: TObject);
var P: TPoint; begin P := ButtonedEdit1.ClientToScreen(Point(8, 8)); // P := Screen.CursorÄhhhhhhhh; .., OK oder GetCursorPos(P); PopupMenu1.PopupComponent := TComponent(1); // ein Dummy-Objektzeiger, außer du hast ein richtiges Objekt dafür PopupMenu1.Popup(P.X, P.Y); end; |
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Wisst ihr, was daran auch noch schlimm ist, wenn jemand das garnicht zuweist?
Sie hätten wenigstewns NIL zuweisen müssen, denn
Delphi-Quellcode:
und nun häng das Popup an diese Buttons und an diese oder eine andere Komponente.
procedure TForm4.PopupMenu1Popup(Sender: TObject);
begin if Assigned(PopupMenu1.PopupComponent) then ShowMessage(PopupMenu1.PopupComponent.ClassName + ' ' + PopupMenu1.PopupComponent.Name) else ShowMessage('nil'); end; * auf Button linksklicken = nil * auf die Komponente oder Button rechtsklicken = Komponentenname * nochmal auf Button linksklicken = NICHT nil :freak: [add] Vor allem gibt es Referenzen, welche man verwenden kann, denn .LeftButton und .RightButton werden rausgegeben. |
AW: TButtonEdit, buttons und dropdown menu - wie Aufrufer finden?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe es wie vorgeschlagen manuell gemacht und es klappt nun.
Zum Testen wird der Menu Text in das buttonededit control eingefügt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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