全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1146
推到 Plurk!
推到 Facebook!

按鈕Button如何使其Caption時隱時現?

答題得分者是:海星
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-04 14:36:19 IP:219.132.xxx.xxx 未訂閱
大家好! 我有一個按鈕,想做ON,OFF的功能.比如說:當是ON的時候,點擊它,其caption變為OFF,若為OFF時,點擊它則變為ON(預設為OFF.) 並且當是ON的時候,希望caption有時隱時現的效果以提示用戶.(請問此效果是否一定要用Timer元件做?又如何寫代碼呢?),當用戶再點擊時,則出現一提示信息,是否變為OFF ?若選擇是則變為OFF,否則不做任何動作.    我的代碼如下:
var
  Form1: TForm1;
  bTest : Boolean ;    procedure TForm1.FormCreate(Sender: TObject);
begin
  bTest := true ;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  bTest := not(bTest) ;       if bTest then
   if messageDlg('是否OFF ? ',mtConfirmation,[mbYes,mBno],0) = mrNo then
      begin
        bTest := not(bTest) ;
        Abort ;
      end;      if bTest then
     Button1.Caption := 'OFF'
  else
     Button1.Caption := 'ON' ;
end;
我現在的問題是: 1. 請大家幫忙看一下這樣寫是否正確,雖然測試是可以,但是總覺得這樣寫不太對勁 2. 請問caption時隱時現的功能要怎麼做呢?請指教,謝謝!
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-04 15:35:08 IP:211.20.xxx.xxx 未訂閱
就是要放一個 Timer 阿~~而且 Timer 的Enabled 預設值是 False;    
 
procedure TForm1.Button1Click(Sender: TObject);
begin
    if ( Button1.Caption = 'OFF' ) then
    begin
        Button1.Caption := 'ON';
        Timer1.Enabled := True
    end
    else
    begin
        Button1.Caption := 'OFF';
        Caption := '現在按鈕是OFF';
        Timer1.Enabled := False;
    end;    end;    procedure TForm1.Timer1Timer(Sender: TObject);
begin
    if( Caption = '' ) then
        Caption := '現在按鈕是ON'
    else
        Caption := '';    end;    end.    
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-04 15:47:48 IP:61.222.xxx.xxx 未訂閱
bTest ->改為直接使用Button1.Tag 省了一個變數 Const On_Off : Array[0..1] of String = ('ON','OFF'); begin Button1.Tag := ORD(Button1.Tag=0); if Button1.Tag=1 then if MessageDlg...... Button1.Caption := On_Off[Button1.Tag]; Timer1.Enabled := Button1.Tag=0; 在 OnTimer 事件中 添加 begin Timer1.Tag := ORD(Timer1.Tag=0); Button1.Visible := Timer1.Tag=1; end; 寫的很亂!參考參考!閃爍的效果最好是 隱藏時間較短顯示時間較長一點。 Sorry! 搶題了 ...... 發表人 - wameng 於 2005/04/04 15:56:43
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-04 16:24:05 IP:211.20.xxx.xxx 未訂閱
Var BL : Boolean ;
procedure TForm1.Button1Click(Sender: TObject);
begin
  If BL then
    begin
      if MessageDlg('Do you OFF??',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then
        begin
          Button1.Caption:='OFF';
          BL:= False;
        end;        end else begin
      Button1.Caption:='ON';
      BL:=True;
    end;
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  BL:=True;
end;
發表人 - juneo 於 2005/04/04 16:26:03
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-04 16:25:03 IP:219.132.xxx.xxx 未訂閱
海星大大你好!Caption顯示效果測試ok.謝謝您的指導 >
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-04 19:20:11 IP:219.81.xxx.xxx 未訂閱
當Button1.Tag := 0 時 條件式 Button1.Tag = 0 成立時,以布林值來說就是 True ORD(True) = 1 。 因此 當Button1.Tag = 0 時,Button1.Tag 就會等於 1 反之,Button1.Tag := 1時。 條件不成立(False),ORD(False) = 0 .....
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-04 20:09:45 IP:219.130.xxx.xxx 未訂閱
引言:
Var BL : Boolean ;
procedure TForm1.Button1Click(Sender: TObject);
begin
  If BL then
    begin
      if MessageDlg('Do you OFF??',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then
        begin
          Button1.Caption:='OFF';
          BL:= False;
        end;        end else begin
      Button1.Caption:='ON';
      BL:=True;
    end;
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  BL:=True;
end;
發表人 - juneo 於 2005/04/04 16:26:03
謝謝juneo大大的熱心幫助.我稍改一下范例程式碼就可以了 < class="code"> procedure TForm1.FormCreate(Sender: TObject); begin BL:=False ; //預設為OFF end; TO: wameng大大:謝謝你耐心的教導!讓我學到了新的東西(對於我這個Delphi新手來說).< > 再次謝謝各位大大!!!< >
zxy666666
中階會員


發表:108
回覆:150
積分:86
註冊:2005-01-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-04 20:13:18 IP:219.130.xxx.xxx 未訂閱
引言:
Var BL : Boolean ;
procedure TForm1.Button1Click(Sender: TObject);
begin
  If BL then
    begin
      if MessageDlg('Do you OFF??',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then
        begin
          Button1.Caption:='OFF';
          BL:= False;
        end;        end else begin
      Button1.Caption:='ON';
      BL:=True;
    end;
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  BL:=True;
end;
發表人 - juneo 於 2005/04/04 16:26:03
謝謝juneo大大的熱心幫助.我稍改一下范例程式碼就可以了 < class="code"> procedure TForm1.FormCreate(Sender: TObject); begin BL:=False ; //預設為OFF end; TO: wameng大大:謝謝你耐心的教導!讓我學到了新的東西(對於我這個Delphi新手來說).< > 再次謝謝各位大大!!!< >
系統時間:2024-06-01 22:52:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!