![]() |
manuel erstelltes Popup ignoriert OnClick
Ich hab gerade ein kleines problem. Der folgende Code soll in einer abgeleiteten StringGrid-Komponente einem eventuell definiertem Menü einen zusätzlichen Menüpunkt hinzufügen. das funktioniert so weit auch. nur eben, dass das OnClick-Ereignis nicht ausgeführt wird und ich hab irgendwie keine Ahnung woran das liegen kann
Delphi-Quellcode:
Was mache ich falsch, dass das zugewiesene Ereignis nicht anerkannt wird?
procedure TEnhStringGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer); var p: TPoint; Col, Row: Integer; mnuFixieren, mnuLine: TMenuItem; begin inherited; MouseToCell(X, Y, Col, Row); if (row = 0) and (Button = mbRight) then begin // create header popup menu mnuFixieren := TMenuItem.Create(self); mnuFixieren.Caption := 'Fixieren'; mnuFixieren.OnClick := fixColumn; mnuFixieren.Tag := Col; mnuLine := TMenuItem.Create(self); mnuLine.Caption := '-'; if GetPopupMenu <> nil then begin GetPopupMenu.Items.Insert(0, mnuFixieren); GetPopupMenu.Items.Insert(1, mnuLine); end else begin PopupMenu := TPopupMenu.Create(self); GetPopupMenu.Items.Add(mnuFixieren); end; if ((FixedCols - 1) < Col) then GetPopupMenu.Items[0].Checked := false else GetPopupMenu.Items[0].Checked := true; GetCursorPos(p); GetPopupMenu.Popup(p.X, p.Y); end; end; |
Re: manuel erstelltes Popup ignoriert OnClick
Müsste eigentlich gehen.
Setz mal in fixcolumn nen Breakpoint und schau ob er ausgeführt wird oder schreib asm int 3 end; rein. Achja und wie ist die Methode deklariert? |
Re: manuel erstelltes Popup ignoriert OnClick
Also fixColumn wird gesetzt. das hab ich schon getestet. Die Methode ist so deklariert:
Delphi-Quellcode:
was meinst du mit 'asm int 3 end;' ?
procedure TEnhStringGrid.fixColumn(ASender: TObject);
ich hab mir jetzt gerade gedacht, dass es vielleicht daran liegt, dass die Methode fixColumn innerhalb der Componente liegt. das Menü zu dem ich den menüpunkt aber hinzufüge wird in der Klasse erzeugt, in der die Komponente eingesetzt wird. Aber selbst dann müsste es funktionieren, wenn in der Klasse in der die Komponente eingesetzt wird eben kein menü verwendet wird. Und das geht eben auch nicht. |
Re: manuel erstelltes Popup ignoriert OnClick
Hast du mal
Delphi-Quellcode:
versucht ?
mnuFixieren := TMenuItem.Create(GetPopupMenu);
|
Re: manuel erstelltes Popup ignoriert OnClick
ha... danke dir... Genau das war der Punkt. Also liegt es wirklich darum, weil das menü aussen definiert ist.
Vielen Dank für die Hilfe |
Re: manuel erstelltes Popup ignoriert OnClick
asm int 3 end; ist ein kleiner Trick. Das könntest du machen, wenn in der Methode noch kein Code stünde. Microsoft hat geschlampt und daher ruft int 3 immer einen Breakpoint auf, bei dem Delphi natürlich anhält. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 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 by Thomas Breitkreuz