2010年11月18日 星期四

多按鈕共用相同Click事件

小功能成就大系統...

介面設計最常使用的元件就是按鈕,
在BCB底下有多種不同功用的按鈕,Button, BitBtn, SpeedButton...等。

我們常常要撰寫當按下某個按鈕執行某個事件的功能,
BCB能方便地在設計者雙擊按鈕後,產生一個Click事件,
以便於撰寫對應的功能。

一個按鈕對應一個Click事件是很合理且直覺的作法,
若今天有10個按鈕則會有10個Click事件(廢話....),
但如果這10個Click事件底下所執行的動作很簡短,
並且有一定的相關性的時,如"計算機按下數字按鈕顯示於螢幕上"
則可以選擇更Smart且簡化程式的方式,如下說明:

1. 於Form上建立5個Button及1個Edit,如下圖所示


2. 分別為5個Button的Tag屬性設立從1到5
3. 雙擊btn1,在事件中寫入底下程式
  1. void __fastcall TFormMain::btn1Click(TObject *Sender)
  2. {
  3. TSpeedButton *tempBtn;
  4. tempBtn = (TSpeedButton *)Sender;
  5. switch(tempBtn->Tag)
  6. {
  7. case 1:
  8. // Tag 1 action
  9. edt_show->Text = tempBtn->Caption;
  10. break;

  11. case 2:
  12. // Tag 2 action
  13. edt_show->Text = tempBtn->Caption;
  14. break;

  15. case 3:
  16. // Tag 3 action
  17. edt_show->Text = tempBtn->Caption;
  18. break;

  19. case 4:
  20. // Tag 4 action
  21. edt_show->Text = tempBtn->Caption;
  22. break;

  23. case 5:
  24. // Tag 5 action
  25. edt_show->Text = tempBtn->Caption;
  26. break;

  27. default:
  28. break;
  29. }
  30. }
4. 最後把剩餘的Btn Click事件全部指到btn1Click
5. 完成,下班!!

沒有留言: