Jak dodac dynamicznie cos do POPUP menu?

0

Opisze problemik :/
Mam sobie programik jedna forma i na niej sa takie komponenty:
POPUPmenu, edit1, button

Popupmenu jest przypisany do FORM1 ze po nacisnieciu prawego przycisku na formie glownej otwiera sie wlasnie menu popup. teraz po uruchomieniu programu na przyklad wpisuje tresc w edit1. i wciskam button1 to jaka linijke trzeba wpisac w button1 zeby dodac nowe menu do POPUPMENU

Mam namysli cos jakj sie dodaje do ListBox np listbox.lines.add('aa') czy do memo czy insert ale w POPUPIE nie wiem juz co wpisac probowalem Popupmenu1.items.add i insert

Moze ktos pomoc?

0

var MenuItem: TMenuItem;
begin
MenuItem := TMenuItem.Create(PopUpMenu);
MenuItem.Caption := 'caption itemu';
MenuItem.OnClick := JakasProcedura; //w formacie procedure JakasProcedura(Sender: TObject);
PopUpMenu.Items.Add(MenuItem);

0

var MenuItem: TMenuItem;
begin
MenuItem := TMenuItem.Create(PopUpMenu);
MenuItem.Caption := edit1.text; <--zmienilem
MenuItem.OnClick := JakasProcedura; //w formacie procedure
JakasProcedura(Sender: TObject);
PopUpMenu.Items.Add(MenuItem);
end;

i wszystko pieknie
ale z tym nie moge poradzic
MenuItem.OnClick := JakasProcedura; //w formacie procedure

to jak ma ta procedurka wygladac w formie
procedure JakasProcedura(...........) <- co tu wpisac
BEGIn

END;

0

Pełno tego typu rzeczy na forum.

procedure (Sender: TObject);

Wpisz "MenuItem.OnClick", wklep "(" (nawias) i pojawi ci się dymek z listą argumentów. Albo jeszcze inaczej - sprawdź jaką prockę wygeneruje Delphi jeśli obsłużysz to zdarzenie w fazie projektowania.

0
procedure JakasProcedura(Sender: TObject);
begin
...
end;

...

MenuItem.OnClick := JakasProcedura;
0

Probowwalem wpisac tak jak moiwsz matrox i nic :( Moze jakis taki malusienki przykladzik taki tyci) chyba ze sie nie da. bo to ma byc tak ja dodaje to dynamicznie i pod nazwa brana z edit1 to musze tez w onclic umiescic ta nazwe dodana dynamicznie ?? juz sie pogubilem [glowa]

0

W OnClick ustawiasz sobie procedure, która ma być wykonywana po kliknięciu dodawanej poyzcji np

procedure PopUpProc(Sender: TObject);
var s: string;
begin
  s := 'Kliknięto dynamiczny popup o captionie ' + (Sender as TMenuItem).Caption;
  Showmessage(s);
end;

...

MenuItem.OnClick := PopUpProc;

Lepiej wytłumaczyć nie potrafie.

0

Sorki ze tak marudze ale wyskaku je mi taki komunikat

[Error] Unit1.pas(51): Incompatible types: method pointer and regular procedure

0

Wsystko spoko... ale nikt nie dodał, że procka musi należeć do jakiejś klasy. Dodaj ją np. do private formy.

0

a moglbys na sekundke wejsc na GG i mnie znalezc jesli nie spisz 2027630

0

Ok zrobilem :) Dziekuje slicznie pieknie Niedopatrzenie moje A powinno byc

...
private
{ Private declarations }
procedure PopUpProc(Sender: TObject);
...

implementation

{$R *.DFM}

procedure TForm1.PopUpProc(Sender: TObject);
var s: string;
begin
s := 'Kliknięto dynamiczny popup o captionie ' + (Sender as TMenuItem).Caption;
Showmessage(s);
end;
// wlasnie powyzej dodac trzebabylo Tform1 z klasy a ja przegapilem to

i w OnClickButton np

MenuItem := TMenuItem.Create(PopUpMenu);
MenuItem.Caption := edit1.text;
MenuItem.OnClick := PopUpProc; //w formacie procedure JakasProcedura(Sender: TObject);
PopUpMenu.Items.Add(MenuItem);

ADF88, MATROX Dziekuje WAM

0

Włącze się do dyskusji :-)

Właśnie kombinuje cos z tym automatycznym tworzeniem menu.
Chce zrobić coś takiego: do menu dodaja sie pozycje odpowiadajace rodzajom napedow w kompie. Po wybraniu konkretnego dysku pojawi sie messagebox informujacy o np. pojemnosci dysku i wolnym miejscu. I skoro tworze elementy menu pod ta sama nazwa, i wywoluje ta sama procedure, to skad ta procedurza (wyswietlajace msgbox) ma wiedziec, pojemnosc ktorego dysku podac ?? Jak sprawdzić, który element menu, dynamicznie utworzony, kliknieto ??

Moze ktos wie i mi pomorze

Chodzi mi o sama zasade, ktora i tak chce w zupelnie innym programie wykorzystac. To podalem tylko dla przykladu :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1