2015-01-05 10 views
6

मैं एकाधिक बटनों के लिए एक प्रक्रिया का उपयोग करने का एक तरीका ढूंढ रहा हूं। यह एक प्रश्नोत्तरी के लिए है जैसे आपको प्रश्न 1 के लिए बटन 1 दबा देना है, लेकिन 36 बटन के लिए पूरे कोड को कॉपी और पेस्ट करना और 36 बटन के लिए चर बदलना किसी के लिए वास्तव में मजेदार नहीं है।पास्कल में एकाधिक बटनों के लिए एक प्रक्रिया का उपयोग करने का कोई तरीका है?

तो मैंने सोचा कि कुछ इस तरह संभव हो जाएगा:

procedure TForm1.Button[x]Click(Sender: TObject); 
begin 
    DoTask[x]; 
end; 

एक्स चर जा रहा है।

क्या ऐसा कुछ संभव है या एक ही परिणाम प्राप्त करने के अन्य तरीके हैं?

+0

पुन: प्राप्त करें "x" tbutton (प्रेषक) के बजाय .name से? संख्यात्मक अंकों के लिए बस पीछे की ओर स्कैन करें। –

उत्तर

6

यह करने के लिए सबसे आसान तरीका है:

  1. संख्या आदेश उनमें आसानी से करने के लिए वस्तु इंस्पेक्टर (या जब वे बनाए रहे कोड में) में Tag संपत्ति का उपयोग कर बटन। (या उस बटन को असाइन करें जिसे आप अपनी प्रक्रिया/फ़ंक्शन पर पारित करना चाहते हैं, जब उस बटन पर क्लिक किया जाता है।)

  2. एक ईवेंट हैंडलर बनाएं, और उसे उसी बटन द्वारा नियंत्रित किए जाने वाले सभी बटनों को असाइन करें।

  3. Sender पैरामीटर प्राप्त होता है जो ईवेंट प्राप्त होता है बटन क्लिक किया जाएगा, जिसे आप TButton के रूप में डाला जा सकता है।

    procedure TForm1.ButtonsClick(Sender: TObject); 
    var 
        TheButton: TButton; 
    begin 
        TheButton := Sender as TButton; 
        DoTask(TheButton.Tag); 
    end; 
    
+0

ठीक है, कृपया मदद के लिए कृपया श्रीमान धन्यवाद। हालांकि, मैं वास्तव में पास्कल के साथ वास्तव में अनुभवहीन नहीं हूं ... यदि आप बहुत दयालु होंगे तो चरण 2 पर विस्तृत किया जा सकता है? जैसे कि मुझे वास्तव में पता नहीं है कि इवेंट हैंडलर का उपयोग कैसे करें, इसे अकेले स्क्रैच से बनाएं, भले ही यह मूलभूत हो। – Pascalerino

+0

आईडीई में किसी भी बटन पर डबल-क्लिक करें, जो दिनचर्या का खोल बनाएगा (उदाहरण के लिए, 'बटन 1 क्लिक करें')। ऑब्जेक्ट इंस्पेक्टर में उस बटन के लिए इवेंट टैब का उपयोग कुछ और सामान्य (जैसे 'बटनन्सक्लिक ') के नाम पर करने के लिए करें। उस फ़ॉर्म पर सभी बटनों को Ctrl-क्लिक करें जिन्हें आप एक ही ईवेंट साझा करना चाहते हैं, ऑब्जेक्ट इंस्पेक्टर इवेंट टैब पर स्विच करें, और सभी सामान्य बटनों के लिए ऑनक्लिक हैंडलर के रूप में उस जेनेरिक 'बटनन्सक्लिक' ईवेंट का चयन करें। (या ऑब्जेक्ट इंस्पेक्टर का उपयोग करके इसे अलग से अलग करें।) –

+0

अच्छा धन्यवाद यह बहुत स्पष्ट बनाता है! लेकिन एक और त्वरित सवाल यह है कि मैं एक चर के लिए Tbutton.tag कैसे असाइन कर सकता हूं? प्रश्न संख्या: = टीबटन। टैग; स्पष्ट कारण के लिए काम नहीं करेगा – Pascalerino

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

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