2012-09-18 12 views
8

पर दिखाई देने वाले सभी नियंत्रणों को ढूंढें I उपयोगकर्ता के लिए वर्तमान में दिखाई देने वाले फ़ॉर्म पर सभी नियंत्रण कैसे प्राप्त कर सकते हैं? यानी उन सभी नियंत्रणों को सूचीबद्ध करें जिन्हें टैबबैड किया जा सकता है और दृश्य से छिपा नहीं है (उदा। एक गैर-दृश्यमान टैब शीट पर)।उपयोगकर्ता को

+2

'i.e.' से पहले का हिस्सा करना है। इसके बाद भाग से बिल्कुल मेल नहीं खाता है। उदाहरण के लिए, इससे पहले, 'नियंत्रण' को विंडो नहीं किया जाना चाहिए, और उन्हें अक्षम किया जा सकता है। इसके बाद, उन्हें खिड़कीदार और सक्षम दोनों होना चाहिए। –

उत्तर

14

चूंकि आप लिखते हैं कि आप उन नियंत्रणों को सूचीबद्ध करना चाहते हैं जिन्हें आप टैब कर सकते हैं, मुझे लगता है कि आप खिड़की वाले नियंत्रणों के बारे में बात कर रहे हैं।

तो आप बस कर सकते हैं

procedure TForm1.Button1Click(Sender: TObject); 
var 
    i: integer; 
begin 
    for i := 0 to ComponentCount - 1 do 
    if Components[i] is TWinControl then 
     if TWinControl(Components[i]).CanFocus then 
     Memo1.Lines.Add(Components[i].Name) 
end; 

यदि आप जानते हैं कि प्रपत्र अपने सभी बच्चों और कोई अन्य नियंत्रण का मालिक है। अन्यथा, आपको

procedure AddVisibleChildren(Parent: TWinControl; Memo: TMemo); 
var 
    i: Integer; 
begin 
    for i := 0 to Parent.ControlCount - 1 do 
    if Parent.Controls[i] is TWinControl then 
     if TWinControl(Parent.Controls[i]).CanFocus then 
     begin 
     Memo.Lines.Add(Parent.Controls[i].Name); 
     AddVisibleChildren(TWinControl(Parent.Controls[i]), Memo); 
     end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    AddVisibleChildren(Self, Memo1); 
end; 
संबंधित मुद्दे