AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi PopupMenü.Items.OnClick neue Prozedur zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

PopupMenü.Items.OnClick neue Prozedur zuweisen

Ein Thema von barnti · begonnen am 16. Apr 2004 · letzter Beitrag vom 16. Apr 2004
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:19
Hallo,
ich habe eine Popupmenü, zu dem ich zur Laufzeit MenüItems hinzufüge. Jetzt möchte ich jedem Item den Eventhandler
'OnClick' zuweisen. Wird ein Item im PopupMenu geklickt, soll diese Prozedur ausgeführt werden.

Meine Vorgenhensweise:
Delphi-Quellcode:
procedure TForm_Main.FormCreate(Sender: TObject);
begin
  PopupMenu1.Items.OnClick:= PopMenuOnClick;
end;


procedure TForm_Main.PopMenuOnClick(Sender: TObject);
begin
  Showmessage('Klick!')
end;


procedure AddPopMenue(Tablename: String);
var Item: TMenuItem;
begin
  Item:= TMenuItem.Create(Form_Main.PopupMenu1);
  Item.Caption:= Tablename;
  Form_Main.PopupMenu1.Items.Add(Item);
end;
Wobei 'AddPopMenue' alle Tabellennamen einer DB zum Popupmenue hinzufügt.

Leider geht es so nicht. Die Prozedur in 'FormCreate' wird zwar zugewiesen, aber beim Klick auf einen PopupmenüItem wird die Prozedur 'PopMenuOnClick' nicht ausgeführt?!

Wo liegt mein Fehler? Habe ich die Prozedur falsch zugewiesen? Kann ich überhaupt jedem Item so diese Prozedur zuweisen?

Danke!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:24
und wie sieht es damit aus?

Code:
procedure AddPopMenue(Tablename: String);
var Item: TMenuItem;
begin
  Item:= TMenuItem.Create(Form_Main.PopupMenu1);
  Item.Caption:= Tablename;
  [color=red]Item.OnClick:= Form_Main.PopMenuOnClick;[/color]
  Form_Main.PopupMenu1.Items.Add(Item);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:27
Zitat von himitsu:
und wie sieht es damit aus?...
Dann wird der Compiler schimpfen weil er PopMenuOnClick nicht kennt denke ich.

Code:
procedure [color=red]TForm_Main.[/color]AddPopMenue(Tablename: String);
var Item: TMenuItem;
begin
  Item:= TMenuItem.Create(Form_Main.PopupMenu1);
  Item.Caption:= Tablename;
  item.OnClick := PopMenuOnClick;
  Form_Main.PopupMenu1.Items.Add(Item);
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:28
Soll das so was werden:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    PopupMenu1: TPopupMenu;
    procedure Button1Click(Sender: TObject);
    procedure PopupItemClick(Sender: TObject);
  private
    { Private declarations }
    ItemCount: Cardinal;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PopupItemClick(Sender: TObject);
begin
  case (Sender as TMenuItem).Tag of
  1: ShowMessage(IntToStr((Sender as TMenuItem).Tag));
  2: ShowMessage(IntToStr((Sender as TMenuItem).Tag));
  else
    ShowMessage('foo');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Item: TMenuItem;
begin
  Inc(ItemCount);
  Item := TMenuItem.Create(PopupMenu1);
  Item.Caption := IntToStr(ItemCount);
  Item.Tag := ItemCount;
  Item.OnClick := PopupItemClick;
  PopupMenu1.Items.Add(Item);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:38
Hi,

Zitat von Luckie:
Soll das so was werden:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    PopupMenu1: TPopupMenu;
    procedure Button1Click(Sender: TObject);
    procedure PopupItemClick(Sender: TObject);
  private
    { Private declarations }
    ItemCount: Cardinal;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PopupItemClick(Sender: TObject);
begin
  case (Sender as TMenuItem).Tag of
  1: ShowMessage(IntToStr((Sender as TMenuItem).Tag));
  2: ShowMessage(IntToStr((Sender as TMenuItem).Tag));
  else
    ShowMessage('foo');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Item: TMenuItem;
begin
  Inc(ItemCount);
  Item := TMenuItem.Create(PopupMenu1);
  Item.Caption := IntToStr(ItemCount);
  Item.Tag := ItemCount;
  Item.OnClick := PopupItemClick;
  PopupMenu1.Items.Add(Item);
end;
Genau!
Ach Mensch! Stimmt! Ich muss jedem Item die Eventbehandlung einzeln zuweisen!

Danke Leute!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:39
Bin ich nicht gut? Bin ich nicht genial? Nun sagt schon und spart nicht mit Lob, ich habe es verdient.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:42
ich war schneller

@Sharky
ich hab ja nur die Änderung gepostet - PopMenuOnClick stand ja schon bei barnti drin
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:46
Zitat von himitsu:
.... PopMenuOnClick stand ja schon bei barnti drin
Aber seine Procedure zum erstellen der Items war nicht bei der TForm deklariert. Darum mein Hinweis
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#9

Re: PopupMenü.Items.OnClick neue Prozedur zuweisen

  Alt 16. Apr 2004, 09:56
Das dürfte ja nicht das Problem sein:
Code:
procedure AddPopMenue(Tablename: String);
var Item: TMenuItem;
begin
  Item:= TMenuItem.Create([color=red]Form_Main.[/color]PopupMenu1);
  Item.Caption:= Tablename;
  Item.OnClick:= [color=red]Form_Main.[/color]PopMenuOnClick;
  [color=red]Form_Main.[/color]PopupMenu1.Items.Add(Item);
end;
OK, der kleine Fehler wurde behoben
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 05:52 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