怎么控制Dbgrid文本框的输入长度??(20分)

  • 主题发起人 goodyang
  • 开始时间
G

goodyang

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么控制Dbgrid文本框的输入长度??
 
输入字符的长度还是网格的长度?
 
可以通过检验数据源字段的长度来限制。
 
to zjfhaha:
输入字符的长度
 
" 输入字符的长度"在数据库里设置啊,否则你把DBGrid中的数据如何保存呢?
 
我倒是不很清楚网格的长度如何限制
 
to manpxp:
对integer类型字段数据库就不能控制了
 
老弟﹐只要努力﹐一切都有可能.
代碼控制
 
字段有一个叫EditMask的属性可以控制长度
 
dbgrid 与 clientdataset连接,它根本没EditMask 属性;

请各位帮助动动脑筋!!
 
type
TmyStringGrid = class(TStringGrid);


TEdit(TmyStringGrid(Sender).InplaceEditor).BorderStyle := bsSingle;
TEdit(TmyStringGrid(Sender).InplaceEditor).MaxLength:=20;

 
to xgz_ball:
我要控制输入长度的字段是integer类型,长度最大为6位,EditMask属性该怎么设置啊
;小弟我很笨!见笑了
 
好像记得,如果DBGrid生成永久字段的话,字段属性中有长度设置的
 
procedure TFrm_XBSC_Bank.ADOTab_BankAfterOpen(DataSet: TDataSet);
var
i,colwidth,max:Integer;
begin
colwidth:=5;
max:=5;
Dataset.First;
for i:=0 to Dbgrd_Tab.Columns.Count-1 do
begin
colwidth:=5;
max:=5;
Dbgrd_Tab.Columns.BeginUpdate ;
Dataset.First;
while not dataset.Eof do
begin
colwidth := Dbgrd_Tab.Canvas.TextWidth(Dbgrd_Tab.Columns.Items.Field.AsString);
Max:=math.Max(colwidth,max);
dataset.Next;
end;
if (Max < Dbgrd_Tab.Canvas.TextWidth(Dbgrd_Tab.Columns.Items.Title.Caption)) or (colwidth = 0) then
Dbgrd_Tab.Columns.Items.width := Dbgrd_Tab.Canvas.TextWidth(Dbgrd_Tab.Columns.Items.Title.Caption)+20
else
Dbgrd_Tab.Columns.Items.width := max+20;
Dbgrd_Tab.Columns.EndUpdate;
end;

end;
 
利用永久字段,在dbgride的draw事件发生时,读取字段值(integer),令其除十,
再根据结果调整文本框输入长度!
 
利用永久字段。在数据表控件上双击即可。
 
选择DBGRID数据源集的DATASET 进入Fields Editor 选择所需字段对应的OnGetText事件
写入如下代码
procedure TDataModule1.PageView_queryDSDesignerGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
text:=copy(sender.AsString,1,50);//显示所选字段的前50各字符
end;
 
呵呵,如果你不怕麻烦可以在程序代码中进行控制
当用户输入的长度超过你的规定时,就把后面的自动截取掉不就行了!~~~

具体代码我想就不用我来……
 
顶部