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

如何由StringGrid上建立之Button得知是在哪個Cell?

答題得分者是:老大仔
GDGD
一般會員


發表:6
回覆:1
積分:1
註冊:2009-12-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-04-09 14:37:25 IP:111.252.xxx.xxx 訂閱
 如題  小弟在StringGrid動態建立了Button (某一Col上所有Row)

procedure TAAA.PreBtn;
var
ARect: TRect;
begin
for idx:= 1 to StringGrid1.RowCount - 1 do
begin
ARect:= StringGrid1.CellRect(_Btn, idx);
ABtn:= TButton.Create(Self);
ABtn.Parent:= sgGiveMed;
ABtn.OnClick:= ABtnClick;
ABtn.OnMouseUp:= ABtnMouseUp;
ABtn.Name:= _BtnName IntToStr(idx);
ABtn.Caption:= 'TEST';
ABtn.Height:= StringGrid1.DefaultRowHeight - 2;
ABtn.Width:= 18;
ABtn.Left:= ARect.Left Round((ARect.Right - ARect.Left) / 2 - (ABtn.Width / 2));
ABtn.Top := ARect.Top Round((ARect.Bottom - ARect.Top) / 2 - (ABtn.Height / 2));
end;
end;

procedure TAAA.DelBtnClick(Sender: TObject);
begin
......
end;

procedure TAAA.ABtnMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
......
end;


1. 請問我如何在Button按下時取得目前是在StringGrid1上的哪個Row?
2. Button按下時未何無法觸發 ABtnMouseUp?
編輯記錄
GDGD 重新編輯於 2010-04-09 14:38:13, 註解 無‧
GDGD 重新編輯於 2010-04-09 14:38:57, 註解 無‧
taishyang 重新編輯於 2010-04-09 16:22:04, 註解 無‧
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-04-09 16:20:29 IP:59.120.xxx.xxx 未訂閱
1. 建議您在Create Button時, 連帶把變數也寫到tag, 如此一來在按下按鈕後,
只要判斷按鈕的tag值就知道是哪個row

2. 呃~是我看錯了嗎....您貼的語法所呼叫的是不是同一個啊??(請見紅色字)


===================引 用 GDGD 文 章===================
?如題 ?小弟在StringGrid動態建立了Button (某一Col上所有Row)

procedure TAAA.PreBtn;
var
??ARect: TRect;
begin
??for idx:= 1 to StringGrid1.RowCount - 1 do
??begin
?? ?ARect:=?StringGrid1.CellRect(_Btn, idx);
?? ?ABtn:= TButton.Create(Self);?? ?
?? ?ABtn.Parent:= sgGiveMed;
?? ?ABtn.DelBtnClick(Sender: TObject);
begin
?? ......
end;

procedure TAAA.ABtnMouseUp(Sender: TObject; Button: TMouseButton;
?
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Shift: TShiftState; X, Y: Integer);
begin
?? ?......
end;


1. 請問我如何在Button按下時取得目前是在StringGrid1上的哪個Row?
2. Button按下時未何無法觸發?ABtnMouseUp?
編輯記錄
老大仔 重新編輯於 2010-04-09 16:26:03, 註解 無‧
GDGD
一般會員


發表:6
回覆:1
積分:1
註冊:2009-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-04-09 17:22:37 IP:111.252.xxx.xxx 訂閱
 紅字的部份其實是我簡寫的 其實是

DelBtn.OnClick:= ABtnClick;
編輯記錄
GDGD 重新編輯於 2010-04-09 17:25:50, 註解 無‧
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-04-09 17:54:01 IP:59.120.xxx.xxx 未訂閱
疑...我的紅色字明明有兩段啊...
再補一次~

ABtn.onclick:= DelBtnClick(Sender: TObject);
begin
......
end;

照理說您的ABtn的On Click事件應該是要指向DelBtnClick....
這樣看來
您會不會是呼叫錯了??還是命名錯了??

實做??簡單來說~
當在您Create Button時
不是會把一些值給Button嗎??
(Ex:ABtn.Caption:= 'TEST';-->把test這個值給caption)
那只要在這時候再補一行"抓出ABtn的tag是多少不就知道是哪一個row了嗎??


供參考~

===================引 用 GDGD 文 章===================
?紅字的部份其實是我簡寫的?其實是


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