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

XStringGrid是否有辦法做到設定哪一欄為什麼樣的資料型態?

尚未結案
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-26 11:04:29 IP:211.20.xxx.xxx 未訂閱
我想設定第一欄為文字(中文.英文.數字...全都接受就是了) 第二欄只能輸入數字(0~9) 有辦法這麼做嗎?? 因為OnKeyPress只能設全部欄位的.. 所以就不知怎麼做了
jamests
初階會員


發表:0
回覆:43
積分:28
註冊:2005-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-26 11:08:04 IP:211.75.xxx.xxx 未訂閱
您好: 檢查XStringGrid1.Row, XStringGrid1.Col是不是您要的那個位置. 不是的話就離開不去判斷即可. 希望有所幫助, 供參考.
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-26 11:27:19 IP:211.20.xxx.xxx 未訂閱
XStringGrid1的OnKeyPress是不是沒有用丫 怎麼我設了都無效...        if not (key in['0'..'9',#8]) then       key:=#0;
jamests
初階會員


發表:0
回覆:43
積分:28
註冊:2005-01-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-26 11:33:39 IP:211.75.xxx.xxx 未訂閱
sorry, 眼睛花花看錯了... 那是StringList的用法. 
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-26 11:47:46 IP:211.20.xxx.xxx 未訂閱
不過..若編輯長度不限 要如何使用Mask 因為不知要設幾位數
jamests
初階會員


發表:0
回覆:43
積分:28
註冊:2005-01-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-26 13:00:51 IP:211.75.xxx.xxx 未訂閱
您好: 99999是可輸入可不輸入的數字MASK. 所以設成99999999, 他輸入1而已也行的. 希望有所幫助, 供參考.
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-27 13:42:17 IP:211.20.xxx.xxx 未訂閱
試了Mask是可以,但是為何不能靠右對齊,都會置中 另外,OnKeyPress是不是真的不能用丫??
jamests
初階會員


發表:0
回覆:43
積分:28
註冊:2005-01-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-27 13:53:37 IP:211.75.xxx.xxx 未訂閱
您好: (1)靠右: 您可以雙擊XStringGrid1, 在ComponentProperty Dialog中. 可以對每個Column做設定. 將您要靠右的欄位設成taRightJustify即可. (2)Edit的OnKeyPress: CellEditor的Editor是內含的Class, 其OnKeyPress method並沒有開放. 因此目前的確不能用.
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-27 13:58:13 IP:211.20.xxx.xxx 未訂閱
taRightJustify我有設 不過一樣會置中也~ 之前沒用Mask是可以靠右 但用Mask就不行了
wameng
版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-27 14:17:48 IP:61.222.xxx.xxx 未訂閱
您可以利用EditCellEditor1 的 AllowEndEditEvent 事件。 若Key 是不允許輸入時,將EndEdit 設為 True 即可。 如:
procedure TDemoForm.EditCellEditor1AllowEndEditEvent(Sender: TObject;
  var Key: Word; Shift: TShiftState; var EndEdit: Boolean);
begin
  Case Key of
     0..31 :{特殊鍵不遮蔽};
    48..57 :{數字};
    else EndEdit := True;
  end;
end;
發表人 - wameng 於 2005/01/27 14:27:24
jamests
初階會員


發表:0
回覆:43
積分:28
註冊:2005-01-21

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-01-27 15:05:54 IP:211.75.xxx.xxx 未訂閱
您好: 其實它是已經靠右了, 只是它右側含有空白. 您可以在XStringGrid1.OnSetEditText時判斷 if XStringGrid1.CellEditor=MaskEditCellEditor1 then XStringGrid1.Cells[ACol, ARow]:=Trim(Value); 將空白Trim掉也行. 當然若您的需求是按錯鍵就當成輸入完畢的話. 站長的建議也是個好方法. 看您怎樣比較方便囉. 希望有所幫助, 供參考.
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-01-27 15:25:08 IP:211.20.xxx.xxx 未訂閱
謝謝兩位的幫忙 終於做出來了    最後是使用Mask 再加 XStringGrid1.OnSetEditText if XStringGrid1.CellEditor=MaskEditCellEditor1 then  XStringGrid1.Cells[ACol, ARow]:=Trim(Value); 而且 XStringGrid1.OnSetEditText 必定要加 否則傳送的值會變成 '1 ' 是一個字串,而非數值    至於 wameng 大大的作法 也是不錯 但是若打了e123就跳到第二格 資料仍會顯示在編輯欄上    總之,謝啦
系統時間:2024-11-23 12:03:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!