線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1276
推到 Plurk!
推到 Facebook!

【副程式】想把一種程序流程集在某一副程式中做處理

答題得分者是:chih
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-12 22:09:41 IP:61.218.xxx.xxx 未訂閱
各位高手前輩們,大家好: 稍早前我有利用搜尋引擎來找過相關的文章… 但,我希望再問詳細一點兒的… 我發現Delphi同一表單內的副程式撰寫及呼叫… 並不似VB的那麼容易…^^" 特來請教一下前輩們… 比如說我現在寫了一下的程式: 【我的form上有label1、label2、label3、button1、button2、button3】 procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption :='test1'; label2.Caption :='test2'; label3.Caption :='test3'; end; 而現下,我想讓button2、button3的作用為 「執行上面紅色字的程式」… 我該怎麼去撰寫這個副程式… 讓button2、button3、亦或是button1都能去呼叫呢?? 此用意無非是想讓整個程式精簡化… 我試過寫…… procedure abc(Sender: TObject); begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc(sender); end; 然後再type下,宣告 procedure abc(Sender: TObject); 這樣下來,於Button2Click程序下不會有錯誤… 因為有宣告了abc… 但是…^^" 在abc程序下…就跑出錯誤的訊息了… 它會說…我的label2…沒有宣告的啦等等… 嗚……~"~ 還是說我該宣告該副程式的地方錯誤了呢??? 我也參考過幾篇文章… 但…似乎未能了卻我的疑問…… 希望有熱心的前輩們能伸出援手…解惑解惑…謝謝~ 發表人 - uuujjj 於 2003/03/12 22:17:36
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-12 22:19:44 IP:61.216.xxx.xxx 未訂閱
procedure abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; TRY TRY SEE
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-12 22:44:34 IP:61.218.xxx.xxx 未訂閱
引言: procedure abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; TRY TRY SEE
chih前輩您好… 我照做了…@@" 可是程式要Run的時候… 它會出現如下: procedure abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; 就是程式有誤時會出現的反白字咖啡色底… 然後下面會出現這些未宣告導致錯誤的字樣: [Error]Unit1.pas(33):Undeclared identifier:'label2' [Error]Unit1.pas(34):Undeclared identifier:'label3' [Error]Unit1.pas(40):Not enough actual parameters 發表人 - uuujjj 於 2003/03/12 22:46:02
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-12 22:54:33 IP:61.216.xxx.xxx 未訂閱
procedure TForm1.abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; TRY TRY SEE
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-13 00:40:12 IP:211.74.xxx.xxx 未訂閱
引言: procedure TForm1.abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; TRY TRY SEE
謝謝~^0^~chih前輩~ 太敬愛您了…成功了…~謝謝~ 原來就是因為少了TForm1… 它才會把那些原本就有的元件,視為未宣告(無)… 以下是我成功的程式,特post來與大家分享之: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); private procedure abc; //宣告該副程式 { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.abc; //副程式abc 就是這裡要加上TForm1. 喔!!! begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; end. 發表人 - uuujjj 於 2003/03/13 00:46:39
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-13 11:12:32 IP:61.219.xxx.xxx 未訂閱
其實Vb的物件導向的支援很肉腳,你如果習慣VB後,再用delphi可能就會你遇到的問題,因為你把delphi=VB了,但delphi是支援物件導向的..所以delphi,vb兩者的寫法不同,這點你可能要特別注意,建議你先將delphi中的object pascal語法弄清楚一點,會幫助你的
------
星期一,二...無窮迴圈@@
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-14 20:21:07 IP:61.218.xxx.xxx 未訂閱
引言: 其實Vb的物件導向的支援很肉腳,你如果習慣VB後,再用delphi可能就會你遇到的問題,因為你把delphi=VB了,但delphi是支援物件導向的..所以delphi,vb兩者的寫法不同,這點你可能要特別注意,建議你先將delphi中的object pascal語法弄清楚一點,會幫助你的
是ㄚ…學了Delphi才知道VB的程式結構及支援其實並不周嚴… 之前有買一本書在練習,但是,並非教得很仔細… 現在又買了一本新的書在學習了… 黑黑厚厚的一本…@@ 教得算蠻仔細的…^^ 謝謝您的建議~ 我會多多學習、將其語法弄清楚… 如果遇到仍無法瞭解的…還望各位前輩們能多多指導^^
aip999
初階會員


發表:10
回覆:63
積分:44
註冊:2002-03-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-14 23:45:50 IP:218.187.xxx.xxx 未訂閱
引言:
引言: procedure abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; TRY TRY SEE
chih前輩您好… 我照做了…@@" 可是程式要Run的時候… 它會出現如下: procedure abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; 就是程式有誤時會出現的反白字咖啡色底… 然後下面會出現這些未宣告導致錯誤的字樣: [Error]Unit1.pas(33):Undeclared identifier:'label2' [Error]Unit1.pas(34):Undeclared identifier:'label3' [Error]Unit1.pas(40):Not enough actual parameters 發表人 - uuujjj 於 2003/03/12 22:46:02
你觀念不夠清楚吧.. 用這樣也可以 procedure abc; begin Form1.label2.Caption :='test2'; Form1.label3.Caption :='test3'; end;
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-15 11:58:06 IP:61.218.xxx.xxx 未訂閱
引言: 你觀念不夠清楚吧.. 用這樣也可以 procedure abc; begin Form1.label2.Caption :='test2'; Form1.label3.Caption :='test3'; end;
多謝aip999前輩的指導…^_^ 經過這麼多前輩的指導,現在瞭解了更多 嗯嗯!!!觀念要完全掌握,方法自然就會更多,還要好好多多學習~ 謝謝您的指點…讓我這新手菜鳥領悟更多了…^0^ 您提供的這個方法不用做宣告就可以用了 使用在簡短的副程式時,還滿方便的…^_^ 但,用在冗長的副程式,就比較麻煩了, 所以,我修改為如下分享給大家^^: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; procedure abc; //abc因不使用類別封裝所以,在此宣告即可(不宣告也可使用) implementation {$R *.dfm} procedure abc; begin with Form1 do begin Label2.Caption :='test'; Label3.Caption :='test'; end; end; 這樣子就可以精簡副程式了…^^ 發表人 - uuujjj 於 2003/03/15 12:16:11
系統時間:2024-05-08 4:03:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!