如何反覆更改物件屬性 |
尚未結案
|
marklue
一般會員 發表:33 回覆:55 積分:17 註冊:2005-02-09 發送簡訊給我 |
各位前輩大家好:
小弟初學DELPHI,遇到一個需求
就是要同時更改某些物件的屬性(False.True)
開始我嘗試用procedure(Var x1,x2,x3...:boolean)
begin;
x1:=not x1;
.....
end;
可是發覺屬性無法放進去傳遞
後來改procedure(x1,x2,x3...:Boolean)
可以傳出去,可是傳不回來 我之前是學DOS的程式
請問各位前輩
DELPHI可以反覆執行一段程式
但是不用限制一定要傳參數就可以改變資料的方式
好像BASIC的GOTO或是COBOL的PERFORM那種
感恩!
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 你原來寫的程式是 work 的啊, 怎麼說不行, 如,
procedure Trans(var b1, b2, b3: boolean); begin b1 := not b1; b2 := not b2; b3 := not b3; end; procedure TForm1.Button1Click(Sender: TObject); var a1, a2, a3: Boolean; begin a1 := true; a2 := true; a3 := true; ShowMessage('a1=' BoolToStr(a1,true) ',a2=' BoolToStr(a2, true) ',a3=' BoolToStr(a3, true)); Trans(a1, a2, a3); ShowMessage('a1=' BoolToStr(a1,true) ',a2=' BoolToStr(a2, true) ',a3=' BoolToStr(a3, true)); end;應該是沒有問題的! 至於你後面提的功能可以再明確一點嗎? 看不是很懂. |
marklue
一般會員 發表:33 回覆:55 積分:17 註冊:2005-02-09 發送簡訊給我 |
timhuang前輩您好: 對不起!我沒說清楚
後面的問題是我想解決前面問題的方法。
我有幾個按鈕,剛好相反,比如說A.C.D按鈕失效的時候B.E.F就生效(簡稱狀況一)
A.C.D按鈕生效的時候B.E.F就失效(狀況二)
因為有另外幾個按鈕會控制狀況一或狀況二或是與目前狀況相反
所以我想把按鈕屬性經過一段程式做相反的動作
(不然程式同樣的重複多次.佔空間又難維護)
如Btn1.Enable:= not Btn1.Enable;
可是我在Procedure宣告好像一定要傳參數
無法在Begin與End之間直接改變按鈕屬性! 感恩您!
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
ok, 在 procedure 中, 是可以不傳參數的沒問題, 寫法如下
// 在你的 TForm1 的 private 裡(或 public裡, 看使用狀況決定), 定義 procedure procedure SetButton; // 後面將內容實作為: procedure TForm1.SetButton; begin Button1.Enabled := not Button1.Enabled; Button2.Enabled := not Button2.Enabled; Button3.Enabled := not Button3.Enabled; Button4.Enabled := not Button4.Enabled; end;這樣即可! |
marklue
一般會員 發表:33 回覆:55 積分:17 註冊:2005-02-09 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 應該是不會有這種現象, 可能你誤會我的意思, 我是指宣告在前, 實作在後, 列出整個程式如下, 希望能解決你的困惑.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure SetButton; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.SetButton; begin Button1.Enabled := not Button1.Enabled; Button2.Enabled := not Button2.Enabled; Button3.Enabled := not Button3.Enabled; Button4.Enabled := not Button4.Enabled; end; procedure TForm1.Button5Click(Sender: TObject); begin SetButton; end; end. |
marklue
一般會員 發表:33 回覆:55 積分:17 註冊:2005-02-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |