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

鍵盤按鍵與SpeedButton事件

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


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-09-04 21:56:42 IP:163.17.xxx.xxx 訂閱
寫一個SpeedButton測試程式
當我按下空白鍵時Lable1會顯示有按到嗎
在SpeedButton裡面顯示Lable2有按到
當SpeedButton事件被觸發時才會執行到Lable
我查了一些SpeedButton關於事件的用法
但是我還是改不出來
想請問高手如何用鍵盤去觸發SpeedButton按鍵按下

空白鍵的ASCII為32

[code cpp]

#pragma hdrstop
#include "Unit1.h"
#include
#include

//---------------------------------------------------------------------------
#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)
{
//Label1->Caption = (int)Key;
if(Key== 32)
{ Label1->Caption = "有按到嗎:"; }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
Label2->Caption = "有按到";
}
//---------------------------------------------------------------------------

[/code]

GrandRURU
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-09-05 00:04:14 IP:118.167.xxx.xxx 未訂閱
SpeedButton...
把AllowAllUp設為true
把GroupIndex群組設為大於0
就可以控制SpeedButton的Down...達到您說的效果

那一篇寫得很清楚……

另外,請自己下中斷點確認是不是會進入O nKeyPress事件。

最後,針對你的程式,我有做出來,但最後加上Down時當機,就懶得抓圖了,先看看吧

================================
真懷擬是不是我表達能力出了問題……- -|||
編輯記錄
GrandRURU 重新編輯於 2009-09-05 00:07:04, 註解 增加抓圖結果‧
超級賽亞人3
一般會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-09-05 13:38:33 IP:163.17.xxx.xxx 訂閱
GrandRURU大大
我照你的方法,
把AllowAllUp設為true,把GroupIndex設為1,那救大於0
可是你執行的那個結果,Label2並沒有顯示,就是SpeedButton1Click並沒有執行到
我有下過中斷點,可是不會去執行SpeedButton1Click這一段程式
SpeedButton裡面沒有KeyDown之類的事件所以...我還是不太明白
超級賽亞人3
一般會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-09-05 14:11:06 IP:163.17.xxx.xxx 訂閱
我看完其他篇的SpeedButton終於知道了
SpeedButton裡面有個屬性是Down
true按下去,False放開
我寫了下面的程式
可是SpeedButton1->Down=true
之後應該被按下去
可是我卻要去手動按上來他才會變False
這要怎麼改阿

[code cpp]
#pragma hdrstop
#include "Unit1.h"
#include
#include

//---------------------------------------------------------------------------
#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)
{
//Label1->Caption = (int)Key;
if(Key == 32)
{
Label1->Caption = "有按到嗎:";
SpeedButton1->Down = true;

}

}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{

Label2->Caption = "有按到";
Sleep(500);
SpeedButton1->Down = false;
}
//---------------------------------------------------------------------------

[/code]

超級賽亞人3
一般會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-09-05 14:47:35 IP:163.17.xxx.xxx 訂閱
感謝GrandRURU大大的回答

小弟寫出來了
參考delphi.ktop.com.tw/board.php

supman大大的回答
反向思考一下,當Form1的Button按下後直接去呼叫Form2的Button的Event就可以了。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Button1Click(Sender);
}

而且我發現
Form2->Button1Click(Sender);這一行是無敵的
因為不需要去設定太多
直接Sender出去就好
因為結果是一樣的

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