![]() |
Re: Welcher ToolButton ruft PopupMenu auf?
@teebee: Bir mir auch nicht!
@Ultimator geht nicht, die Buttons haben alle dieselbe Proc. als OnClick, ich werte .Tag aus! |
Re: Welcher ToolButton ruft PopupMenu auf?
@Kroko1999,
hast du das Popup der TToolbar oder dem TToolbutton zugewiesen? Du weißt jedem TToolbutton dein PopupMenu zu und schreibst folgendes:
Delphi-Quellcode:
Also bei mir funktioniert das 100%ig.
var
Form1: TForm1; SenderPopup: TObject; implementation {$R *.DFM} procedure TForm1.PopupMenu1Popup(Sender: TObject); begin SenderPopup:=TPopupMenu(Sender).PopupComponent; end; procedure TForm1.Test1Click(Sender: TObject); begin if TToolButton(SenderPopup).Name='ToolButton4' then Label1.Caption:='OK'; end; Oder habe ich falsch verstanden was du machen´willst ??? |
Re: Welcher ToolButton ruft PopupMenu auf?
Zitat:
|
Re: Welcher ToolButton ruft PopupMenu auf?
Zitat:
Und bei diesem Vorgehen steht in PopupComponent leider nicht der Toolbutton sondern die ganze Toolbar... Gruß, teebee |
Re: Welcher ToolButton ruft PopupMenu auf?
@legolas
ich habe zwei TToolbuttons in einer TToolbar und ich weise den Buttons.DropDownMenu das Popupmenu zu! @ultimator weil außer einer zuweisung, die von Button abhängt, das jeweilige PopupMenu gleich ist, also Button1 = integer Button2 = real und im Menu die Zahlen von 1 bis 10, und je nach Button möchte ich Integer oder real rechnen, daher die Frage! |
Re: Welcher ToolButton ruft PopupMenu auf?
Ich hab das mal so gelöst :
(keine "Schöne Lösung", aber es funzt !)
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ComCtrls, ToolWin; type TForm1 = class(TForm) ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; PopupMenu1: TPopupMenu; MenuItem11: TMenuItem; procedure MenuItem11Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ToolButton3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } LastSender : TToolButton; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.MenuItem11Click(Sender: TObject); begin showmessage(LastSender.Name); //oder was auch immer mit dem Object machen end; procedure TForm1.FormCreate(Sender: TObject); begin LastSender := TToolButton.Create(self); end; procedure TForm1.ToolButton3MouseMove(Sender: TObject; Shift: TShiftState; //im OnMouseMove aller Buttons X, Y: Integer); begin LastSender :=Sender as TToolButton; end; end. |
Re: Welcher ToolButton ruft PopupMenu auf?
Wieso erstellst du denn LastSender im OnCreate?
Lieber so:
Delphi-Quellcode:
procedure TForm1.MenuItem11Click(Sender: TObject);
begin if Assigned(LastSender) then Showmessage(LastSender.Name); //oder was auch immer mit dem Object machen end; |
Re: Welcher ToolButton ruft PopupMenu auf?
Habe jetzt in den Tiefen der API-Doku eine Möglichkeit gefunden, die das ganze ziemlich solide macht (ohne Mausposition oder MouseOver).
Delphi-Quellcode:
Gruß, teebee
type
TForm1 = class(TForm) ... private { Private-Deklarationen } public { Public-Deklarationen } DropButton: Integer; Procedure WMNotify(Var Msg: TWMNotify); message WM_NOTIFY; end; ... Procedure TForm1.WMNotify(Var Msg: TWMNotify); Begin If Msg.NMHdr^.code=TBN_DROPDOWN Then DropButton := PNMTOOLBAR(Msg.NMHdr)^.iItem; inherited; End; procedure TForm1.PopupMenu1Popup(Sender: TObject); begin ShowMessage('Gedrückt von: '+ToolBar1.Buttons[DropButton].Name); // hier wahlweise auch Tag-Auswertung :-) end; |
Re: Welcher ToolButton ruft PopupMenu auf?
Thx , klappt alles prächtig!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 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