【副程式】想把一種程序流程集在某一副程式中做處理 |
答題得分者是:chih
|
uuujjj
一般會員 發表:31 回覆:59 積分:18 註冊:2002-09-28 發送簡訊給我 |
各位高手前輩們,大家好:
稍早前我有利用搜尋引擎來找過相關的文章…
但,我希望再問詳細一點兒的…
我發現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 發送簡訊給我 |
|
uuujjj
一般會員 發表:31 回覆:59 積分:18 註冊:2002-09-28 發送簡訊給我 |
引言: procedure abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; TRY TRY SEEchih前輩您好… 我照做了…@@" 可是程式要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 發送簡訊給我 |
|
uuujjj
一般會員 發表:31 回覆:59 積分:18 註冊:2002-09-28 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
uuujjj
一般會員 發表:31 回覆:59 積分:18 註冊:2002-09-28 發送簡訊給我 |
引言: 其實Vb的物件導向的支援很肉腳,你如果習慣VB後,再用delphi可能就會你遇到的問題,因為你把delphi=VB了,但delphi是支援物件導向的..所以delphi,vb兩者的寫法不同,這點你可能要特別注意,建議你先將delphi中的object pascal語法弄清楚一點,會幫助你的是ㄚ…學了Delphi才知道VB的程式結構及支援其實並不周嚴… 之前有買一本書在練習,但是,並非教得很仔細… 現在又買了一本新的書在學習了… 黑黑厚厚的一本…@@ 教得算蠻仔細的…^^ 謝謝您的建議~ 我會多多學習、將其語法弄清楚… 如果遇到仍無法瞭解的…還望各位前輩們能多多指導^^ |
aip999
初階會員 發表:10 回覆:63 積分:44 註冊:2002-03-29 發送簡訊給我 |
引言:你觀念不夠清楚吧.. 用這樣也可以 procedure abc; begin Form1.label2.Caption :='test2'; Form1.label3.Caption :='test3'; end;引言: procedure abc; begin label2.Caption :='test2'; label3.Caption :='test3'; end; procedure TForm1.Button2Click(Sender: TObject); begin label1.Caption :='test1'; abc; end; TRY TRY SEEchih前輩您好… 我照做了…@@" 可是程式要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 |
uuujjj
一般會員 發表:31 回覆:59 積分:18 註冊:2002-09-28 發送簡訊給我 |
引言: 你觀念不夠清楚吧.. 用這樣也可以 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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |