2011-05-28 8 views
8

से संबंधित होना चाहिए, लेकिन यह मुझे नहीं देख सकता है।डेल्फी - आप कैसे पता लगाते हैं कि कौन सा TPopupMenu एक TMenuItem

PopupMenu1.PopupComponent 

लेकिन कैसे आप पॉपअप मेनू कि TMenuItem कि बदले में किया गया है कि पर क्लिक किया होता है यह पता लगाना है:

आप घटक है कि दायाँ क्लिक किया है के साथ एक पॉपअप मेनू प्रदर्शित करने के लिए गया था पर पता कर सकते हैं मेन्यू?

एक उदाहरण के लिए समस्या को आसान बनाने के लिए:

मैं एक अलग शीर्षक के साथ प्रत्येक लेबल की एक श्रृंखला, है, और मैं एक पॉपअप मेनू है कि लेबल में से प्रत्येक के PopupMenu संपत्ति को असाइन किया गया है।

जब कोई सही-क्लिक लेबल में से एक और पॉपअप मेनू को लाता है, और फिर MenuItem1 पर क्लिक करता है, मैं कोड हैं:

procedure TForm1.MenuItem1Click(Sender: TObject); 

begin 
MsgBox (Format ('The label right-clicked has the caption %', [xxxx.Caption ])) ; 
end ; 

xxxx क्या होना चाहिए?

कार्यान्वित उत्तर

दोनों उत्तरदाताओं के लिए धन्यवाद।

procedure TForm1.MenuItem1Click(Sender: TObject); 

var 
    AParentMenu : TMenu ; 
    AComponent : TComponent ; 
    ALabel  : TLabel ; 

begin 
AParentMenu := TMenuItem (Sender).GetParentMenu ; 
AComponent := TPopupMenu (AParentMenu).PopupComponent ; 
ALabel  := TLabel (AComponent) ; 
MsgBox (Format ('The label right-clicked has the caption %', [ALabel.Caption ])) ; 
end ; 

जो भी पूछताछ जो TMenuItem शामिल किया गया था और इसलिए मुझे कोड मैं कम संशोधन के साथ अन्य OnClick संचालकों में ड्रॉप कर सकते हैं का एक टुकड़ा देता है: क्या मैं के साथ समाप्त हो गया इस था।

उत्तर

9

मैं आपके प्रश्न से थोड़ा उलझन में हूं लेकिन चूंकि आपने बाकी सब कुछ अस्वीकार कर दिया है, मैं केवल कल्पना कर सकता हूं कि आप TMenuItem.GetParentMenu खोज रहे हैं।

+0

मुझे पता था कि यह आसान होगा ... मैं TMenuItem के गुणों के तहत देख रहा था और कभी भी तरीकों को देखने के लिए सोचा नहीं था। बहुत धन्यवाद। – rossmcm

6
procedure TForm1.MenuItem1Click(Sender: TObject); 
var pop:TPopupMenu; 
    lbl:TLabel; 
begin 
    // Firstly get parent TPopupMenu (needs casting from TMenu) 
    pop:= TPopupMenu(MenuItem1.GetParentMenu()); 
    // pop.PopupComponent is the "source" control, just cast it to Tlabel 
    lbl:= TLabel(pop.PopupComponent);    

    ShowMessage(Format('The label right-clicked has the caption %s',[lbl.Caption])); 
end; 
संबंधित मुद्दे

 संबंधित मुद्दे