使用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.   

    1. DBGrid1.DataSource.DataSet.RecordCount就是记录数;
    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.   

    呵呵,楼上的说了这么多我只能回答关于保存数据的问题了我觉得在dataset的AfterScroll事件中写代码比较合适个人觉得更新数据库然后刷新显示好一点
      

  3.   

    保存数据的问题:
    在DBGRID中计算完毕然后更新回数据库中好一点,在某一行的最后一个值(数字)发生改变的onchange事件里面写post了。
    安装控件的问题:
    双击dpk文件(delphi的控件包文件),编译,安装就安装上了。
      

  4.   

    replaceStringReplace(aStrings.Text,'原数据,'替换数据',[rfReplaceAll])
      

  5.   

    只输入数字procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
    begin
      if not  ( Key in ['0'..'9',#0..#31]) then
        Key := #0;
    end;
      

  6.   

    安装控件componet--install componet--packge file name--browse然后选择FlatStyle_D6.dpk