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

Button結合按鍵的問題

答題得分者是:GrandRURU
超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-09-04 15:08:42 IP:163.17.xxx.xxx 訂閱
我寫了一個程式想要測試出某個結果

[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *aa;
if(aa == "38")
{
Button1->Enabled= true;
}
if(Button1->Enabled == true)
{
Button2->Enabled= false;
}
if(Button2->Enabled == false)
{
Label1->Caption = "試試看" ;
}
}
//---------------------------------------------------------------------------

[/code]

我的問題是
1.Button按下去是Button->Enabled=true Button放開是Button->Enabled=false 是這樣子嗎?
2.希望我按下鍵盤的方向鍵上能對Button產生致能。
這個程式該如何修改

GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-09-04 15:31:36 IP:203.75.xxx.xxx 未訂閱
建議你用TSpeedButton來處理,它有個叫Up、Down的屬性

方向鍵的話就用OnKeyPress事件來抓吧
===================引 用 超級賽亞人3 文 章===================
我寫了一個程式想要測試出某個結果

[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *aa;
if(aa == "38")
{
Button1->Enabled= true;
}
if(Button1->Enabled == true)
{
Button2->Enabled= false;
}
if(Button2->Enabled == false)
{
Label1->Caption = "試試看" ;
}
}
//---------------------------------------------------------------------------

[/code]

我的問題是
1.Button按下去是Button->Enabled=true Button放開是Button->Enabled=false 是這樣子嗎?
2.希望我按下鍵盤的方向鍵上能對Button產生致能。
這個程式該如何修改

超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-09-04 16:06:42 IP:163.17.xxx.xxx 訂閱
修改後,可是還是沒動作
把KEY值放入Label3
Label3應該會有個動作。

[code cpp]
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
Label3->Caption = (int)Key;
if(Label3->Caption == 38){ Button1->Enabled= true; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender )
{

if(Button1->Enabled == true)
{
Button2->Enabled= false;
}
if(Button2->Enabled == false)
{
Label1->Caption = "試試看" ;
Button3->Caption = "亂按";
}
}

[/code]

GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-09-04 16:13:10 IP:203.75.xxx.xxx 未訂閱
你的Focus什麼時候會指到Form上呢?


===================引 用 超級賽亞人3 文 章===================
修改後,可是還是沒動作
把KEY值放入Label3
Label3應該會有個動作。

[code cpp]
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
Label3->Caption = (int)Key;
if(Label3->Caption == 38){ Button1->Enabled= true; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender )
{

if(Button1->Enabled == true)
{
Button2->Enabled= false;
}
if(Button2->Enabled == false)
{
Label1->Caption = "試試看" ;
Button3->Caption = "亂按";
}
}

[/code]

超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-09-04 16:21:08 IP:163.17.xxx.xxx 訂閱
我是參考範例寫的
它的全文是
[code cpp]
//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
Label4->Caption = (int)Key;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
Label3->Caption = (int)Key;
}
//---------------------------------------------------------------------------

[/code]

因為我看測試可以跑
可是加入button元件後就不能跑了


GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-09-04 16:35:39 IP:203.75.xxx.xxx 未訂閱
因為你的焦點一直在button上啊…orz

用這個試試看吧
[code cpp]
//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1KeyPress(TObject *Sender, char &Key)
{
Button2->Caption = (int)Key;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2KeyPress(TObject *Sender, char &Key)
{
Button1->Caption = (int)Key;
}
//---------------------------------------------------------------------------
[/code]

===================引 用 超級賽亞人3 文 章===================
...43...
因為我看測試可以跑
可是加入button元件後就不能跑了


超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-09-04 16:46:11 IP:163.17.xxx.xxx 訂閱
這個我不能跑
你屬性那邊的設定是
怎麼設定的呢?
超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-09-04 16:47:24 IP:163.17.xxx.xxx 訂閱
怎麼樣設定
才會讓焦點不在button上面
超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-09-04 20:45:53 IP:163.17.xxx.xxx 訂閱
我寫好了,不過device沒動作,Button事件阿!!按下去跟放開要怎麼寫阿!


[code cpp]
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
Label6->Caption = (int)Key;
Label6->Caption = Label6->Caption;
if(Label6->Caption == 96) { Button1->Enabled= true;Label6->Caption ="STOP"; }
if(Label6->Caption == 104) { Button2->Enabled= true;Button11->Enabled= true;Label6->Caption ="上"; } //上
if(Label6->Caption == 100) { Button3->Enabled= true;Button8->Enabled= true;Label6->Caption ="左";} //左
if(Label6->Caption == 102) { Button4->Enabled= true;Button9->Enabled= true;Label6->Caption ="右";} //右
if(Label6->Caption == 98) { Button5->Enabled= true;Button12->Enabled= true;Label6->Caption ="下";} //下
if(Label6->Caption == 103) { Button6->Enabled= true;Button13->Enabled= true;Label6->Caption ="遠";} //近
if(Label6->Caption == 105) { Button7->Enabled= true;Button14->Enabled= true;Label6->Caption ="近";} //遠

}

[/code]



GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-09-04 22:01:57 IP:118.167.xxx.xxx 未訂閱
超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-09-04 22:38:47 IP:163.17.xxx.xxx 訂閱
似乎沒辦法加入鍵盤按鍵進去
我要藉由KeyDown去讀ASCII碼
判別是否有按下
但是我在ButtonWndProc(TMessage& Message )下沒辦法加入 WORD &Key
也就是讀不到值

不過還是謝謝你
我有改用其他方式試著去解決這問題
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=99303

先結案了
超級賽亞人3
一般會員


發表:38
回覆:53
積分:23
註冊:2007-06-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2009-09-04 22:40:18 IP:163.17.xxx.xxx 訂閱

===================引 用 超級賽亞人3 文 章===================
似乎沒辦法加入鍵盤按鍵進去
我要藉由KeyDown去讀ASCII碼
判別是否有按下
但是我在ButtonWndProc(TMessage& Message )下沒辦法加入 WORD &Key
就是沒辦法在ButtonWndProc(TMessage& Message )下沒辦法加入 WORD &Key這類的行別跟引數。
也就是讀不到值

系統時間:2024-04-25 0:40:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!