Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi manuel erstelltes Popup ignoriert OnClick (https://www.delphipraxis.net/76309-manuel-erstelltes-popup-ignoriert-onclick.html)

Mossi 1. Sep 2006 22:12


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:
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;
Was mache ich falsch, dass das zugewiesene Ereignis nicht anerkannt wird?

3_of_8 1. Sep 2006 22:15

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?

Mossi 1. Sep 2006 22:22

Re: manuel erstelltes Popup ignoriert OnClick
 
Also fixColumn wird gesetzt. das hab ich schon getestet. Die Methode ist so deklariert:
Delphi-Quellcode:
procedure TEnhStringGrid.fixColumn(ASender: TObject);
was meinst du mit 'asm int 3 end;' ?

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.

mkinzler 1. Sep 2006 22:26

Re: manuel erstelltes Popup ignoriert OnClick
 
Hast du mal
Delphi-Quellcode:
mnuFixieren := TMenuItem.Create(GetPopupMenu);
versucht ?

Mossi 1. Sep 2006 22:28

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

3_of_8 1. Sep 2006 22:29

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 08:32 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