AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

manuel erstelltes Popup ignoriert OnClick

Ein Thema von Mossi · begonnen am 1. Sep 2006 · letzter Beitrag vom 1. Sep 2006
Antwort Antwort
Mossi

Registriert seit: 6. Feb 2004
Ort: Wenzenbach
35 Beiträge
 
Delphi 7 Enterprise
 
#1

manuel erstelltes Popup ignoriert OnClick

  Alt 1. Sep 2006, 23:12
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?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: manuel erstelltes Popup ignoriert OnClick

  Alt 1. Sep 2006, 23:15
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?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Mossi

Registriert seit: 6. Feb 2004
Ort: Wenzenbach
35 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: manuel erstelltes Popup ignoriert OnClick

  Alt 1. Sep 2006, 23:22
Also fixColumn wird gesetzt. das hab ich schon getestet. Die Methode ist so deklariert:
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: manuel erstelltes Popup ignoriert OnClick

  Alt 1. Sep 2006, 23:26
Hast du mal
mnuFixieren := TMenuItem.Create(GetPopupMenu); versucht ?
Markus Kinzler
  Mit Zitat antworten Zitat
Mossi

Registriert seit: 6. Feb 2004
Ort: Wenzenbach
35 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: manuel erstelltes Popup ignoriert OnClick

  Alt 1. Sep 2006, 23:28
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
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: manuel erstelltes Popup ignoriert OnClick

  Alt 1. Sep 2006, 23:29
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  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 04:53 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