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

如何控制 TDBGrid 只能輸入大寫字母

尚未結案
anguslin
一般會員


發表:6
回覆:6
積分:2
註冊:2002-09-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-21 13:53:37 IP:211.23.xxx.xxx 未訂閱
各位大大 如何控制 TDBGrid 只能輸入大寫字母 煩請指教 不勝感激
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-21 14:21:46 IP:211.21.xxx.xxx 未訂閱
您可以這樣做:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if DBGrid1.SelectedField = Table1.FieldByName('某一欄位名稱') then//可以針對某一欄位只能輸入大寫字母
    if not (key in ['A'..'Z']) then
      Key := #0;  
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
anguslin
一般會員


發表:6
回覆:6
積分:2
註冊:2002-09-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-21 14:28:05 IP:211.23.xxx.xxx 未訂閱
各位大大 我的意思是只能輸入英文大寫字及中文 如輸入小寫字自動轉成大寫字 例如TEdit.CharCase:=ecUpperCase
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-21 15:04:09 IP:211.21.xxx.xxx 未訂閱
引言: 各位大大 我的意思是只能輸入英文大寫字及中文 如輸入小寫字自動轉成大寫字 例如TEdit.CharCase:=ecUpperCase
DBGrid好像沒有類似TEdit.CharCase:=ecUpperCase的東東。不過我想到一變通的方法,您可以試試看:
procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
  if Table1.State in [dsInsert,dsEdit] then
    DBGrid1.SelectedField..AsVariant := UpperCase(DBGrid1.SelectedField..AsVariant);
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-24 17:32:15 IP:61.219.xxx.xxx 未訂閱
在 DBGrid 的 OnKeyPress 加入 if Key in ['a'..'z'] then Key := chr(ord(Key)-32); 即可
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-24 21:35:26 IP:211.76.xxx.xxx 未訂閱
在DbGridKeyPress事件中處理
procedure TFmACC.Grid1KeyPress(Sender: TObject; var Key: Char);
var DG:TDBGrid;
    FdName:String;
    FdNameList:string;
begin
  DG:=TDBGrid(Sender);
  FdName:='['+UpperCase(DG.Columns[DG.SelectedIndex].FieldName)+']';
  FdNameList:='[欄位名1][欄位名2][欄位名3][欄位名4]'; //欄名用大寫
  if Pos(FdName , FdNameList)>0 then //要轉大寫欄位
     key:=UpCase(key); //轉大寫
end;
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-24 22:31:16 IP:61.66.xxx.xxx 未訂閱
引言: 各位大大 我的意思是只能輸入英文大寫字及中文 如輸入小寫字自動轉成大寫字 例如TEdit.CharCase:=ecUpperCase
1.既然是使用 DBGRID, 何不在 FieldEditor中針對要處理的 Field設定 editmask 字串就好了, 那在dbgrid中自然會顯示mask規格 2.如果你要小寫轉大寫, 又要接受中文碼, editmask做不到, 因為2byte 規格有些字會被轉碼, 舉例萬字被轉成千, 那就差多了! 要自動轉大寫用 >llllllllll (註l 為 L小寫), 基本上可以接受中文 也接受字母(數字就不行), 詳細請自help 3.也可以用channel兄的用法, 但uppercae 最好改成 AnsiUppercase 因為你要接受字母及中文, uppercase會在中文碼亂轉
jason650606
一般會員


發表:0
回覆:1
積分:0
註冊:2005-05-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-06 09:49:03 IP:61.218.xxx.xxx 未訂閱
procedure TfSetitem.DBGrid1KeyPress(Sender: TObject; var Key: Char);   var p:pchar; begin   p:=pchar(uppercase(key));   if key in ['a'..'z'] then    key:=p[0]; end;   這樣應該就是你要的~~~~
系統時間:2024-06-26 20:39:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!