使用DBGRID有如下几个问题:
1.如何判断当前DBGRID有几行?(也就是有几条记录,
使用DataSource还是Query的DataSet的RecordCount来判断吗?)
2.如何判断当前DBGRID某行被选中?
(有没可能出现有记录却没有一行被选中的情况?)
3.如何取出被选中行的第一个字段的值?使用MaskEdit的问题:
1.如何让用户只输入数字和小数点?
2.如何判断这个数字是有效的?(譬如不能出现1.2.3这样的情况)关于替换字符的问题
1.使用哪个函数执行字符串替换功能?
(如VB中使用replace函数)关于保存数据的问题
1.在DBGRID中某一行的最后一个值(数字)发生改变时,
我需要修改该行以及以下所有行的该字段做相应的加减,
请问该过程在什么位置中执行比较合理?
是更新数据库然后刷新显示好一点
还是在DBGRID中计算完毕然后更新回数据库中好一点?
如果是后面一种情况,在哪个事件里面写POST?(我用了ADOQUERY)关于安装控件的问题
1.我找了一个FlatStyle控件,安装了半天也没安装上
书上说要找BPL文件,我找了半天没找到
我只有一个FlatStyle_D6.dpk文件和source目录下的pas文件第一次用Delphi做数据库,多谢大家帮助了,谢谢,嘻嘻.
//从此Delphi又多了一个菜鸟扳手...
1.如何判断当前DBGRID有几行?(也就是有几条记录,
使用DataSource还是Query的DataSet的RecordCount来判断吗?)
2.如何判断当前DBGRID某行被选中?
(有没可能出现有记录却没有一行被选中的情况?)
3.如何取出被选中行的第一个字段的值?使用MaskEdit的问题:
1.如何让用户只输入数字和小数点?
2.如何判断这个数字是有效的?(譬如不能出现1.2.3这样的情况)关于替换字符的问题
1.使用哪个函数执行字符串替换功能?
(如VB中使用replace函数)关于保存数据的问题
1.在DBGRID中某一行的最后一个值(数字)发生改变时,
我需要修改该行以及以下所有行的该字段做相应的加减,
请问该过程在什么位置中执行比较合理?
是更新数据库然后刷新显示好一点
还是在DBGRID中计算完毕然后更新回数据库中好一点?
如果是后面一种情况,在哪个事件里面写POST?(我用了ADOQUERY)关于安装控件的问题
1.我找了一个FlatStyle控件,安装了半天也没安装上
书上说要找BPL文件,我找了半天没找到
我只有一个FlatStyle_D6.dpk文件和source目录下的pas文件第一次用Delphi做数据库,多谢大家帮助了,谢谢,嘻嘻.
//从此Delphi又多了一个菜鸟扳手...
2. 不用判断
3. DBGrid1.DataSource.DataSet.Fields.Fields[0].asInteger/asString...
如果你知道DBGrid1的DataSource的DataSet固定的是什么,比如说是Table1;上面的都可以写成:Table1.RecordCount和Table1.Fields.Fields[0].asInteger/asString...1. 不用MaskEdit,用Edit,在其OnKeyPress()中写:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//如果用户输入的是小数点,并且已经有小数点了
if (Key=DecimalSeparator) and (Pos(key,Edit1.Text)>0) then Key:=#0
//如果用户输入规定字符以外的字符(#8是Backspace)
else if not(Key in [#8,'0'..'9',DecimalSeparator]) then Key:=#0;
end;
2. 如上写法,输入肯定是有效的1. 好象没有replace,先StrPos定位,手工替换后面的没看懂
2.只要判断一下关联的表当前记录就行了
3.具体语法忘了,应该是talbe1.field[0].asString
后面的asString如果是其它类型的的数据改一下就行了
1.我找了一个FlatStyle控件,安装了半天也没安装上
书上说要找BPL文件,我找了半天没找到
我只有一个FlatStyle_D6.dpk文件和source目录下的pas文件
>>FlatStyle_D6.dpk直接安裝
在設定中加上路徑
Name: FastReplace();
Param: all:源字符(串);
target:替换字符(串);
source:被替换的字符(串);
Author: haughtiant
CreatDate: 2002、9、28
Description: 字符(串)替换;
}
function FastReplace(source,target,all:string):string;
var
i:integer;
begin
while (pos(source,all)<>0) do
begin
i:=pos(source,all);
Delete(all,i,length(source));
Insert(target,all,i);
end;
Result:=all;
end;如果你的第一行有更改,而且以下的各行也遵循相同的规则(如:都加100),建议先将数据库更新(update table set field=field+100 where ,,,,,,;commit;),然后重新显示;判断是否合法(float)
try
strtofloat(edit1.text);
except
showmessage('输入数据不合法!');
end;