TPopUpMenu - skąd wywołanie

0

Witam.
Pojawił mi się drobny problemik. Mam komponent TPopUpMenu z jedną pozycją. Przypisany jest on do trzech różnych TComboBox-ów. Do tej jednej pozycji w tym menu mam przypisaną procedurę:

procedure TForm1.Dodajnowe1Click(Sender: TObject);
begin
Form4 := TForm4.Create(Self);
if Sender = ComboBox2 then
begin
Form4.Caption := 'Nowe zdarzenie inicjujące';
Label1.Caption := 'Nazwa zdarzenia inicjującego:';
Label2.Caption := 'Częstość występowania:';
end;
if Sender = ComboBox3 then
begin
Form4.Caption := 'Nowe zabezpieczenie - zapobieganie';
Label1.Caption := 'Nazwa zabezpieczenia:';
Label2.Caption := 'Prawdopodobieństwo:';
end;
if Sender = ComboBox4 then
begin
Form4.Caption := 'Nowe zabezpieczenie - zapobieganie';
Label1.Caption := 'Nazwa zabezpieczenia:';
Label2.Caption := 'Prawdopodobieństwo:';
end;

Form4.ShowModal;
Form4.Free;
end;

Jednak przy wywołaniu procedury omijane są warunki if. Co jest nie tak?? W jaki sposób, i w którym miejscu sprawdzić, z którego TComboBox-a zostało wywołane menu??

0

Sender'em, jak się nie mylę, jest kliknięty item, a nie komponent, do którego jest podpięte PopupMenu.

0

Hmm nie mam teraz Delphi ale przyszła mi do głowy taka myśl:

Sender.Sender.Sender.

Oczywiście z odpowiednim rzutowaniem - aby Sender istniał (nie pamietam czy istnieje w TObject)

Wtedy mamy:

(element --> Menu kontekstowe --> szukany Combo)

0

Ja zrobiłem to tak i działa:

Wygeneruj zdarzenie OnContextPopup dla któregoś z ComboBoxów, "podepnij" je do wszystkich pozostałych i w ciele zdarzenia wpisz:

komponent:=TComboBox(Sender).Name; // komponent jest zmienną globalną typu String.

Następnie w zdarzeniu OnClick danego itemu w TPopupMenu wpisujesz na przykład taką treść:

if komponent=ComboBox1.Name then
 // dalsze instrukcje

;)

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