Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本

Posted jijm123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本相关的知识,希望对你有一定的参考价值。

(*//
标题:处理数据网格的编辑框
说明:示例添加焦点颜色;获取还没有提交到数据集的字段文本
设计:Zswang
日期:2002-03-31
支持:wjhu111@21cn.com
//*)

///////Begin   Source
function   GetDBGridEdit(mDBGrid:   TDBGrid):   TEdit;
var
    I:   Integer;
begin
    Result   :=   nil;
    if   not   Assigned(mDBGrid)   then   Exit;
    if   not   mDBGrid.EditorMode   then   begin
        mDBGrid.EditorMode   :=   True;
        mDBGrid.EditorMode   :=   False;
    end;
    with   mDBGrid   do   for   I   :=   0   to   Pred(ComponentCount)   do
        if   Components[I]   is   TCustomEdit   then   begin
            Result   :=   TEdit(Components[I]);
            Break;
        end;
end;      GetDBGridEdit   

function   GetDBGridEditText(mDBGrid:   TDBGrid):   string;
var
    vEdit:   TEdit;
begin
    vEdit   :=   GetDBGridEdit(mDBGrid);
    if   Assigned(vEdit)   then
        Result   :=   vEdit.Text
    else   Result   :=   ‘ ‘;
end;      GetDBGridEditText   
///////End   Source

///////Begin   Demo
procedure   TForm1.DBGrid1Enter(Sender:   TObject);
var
    vEdit:   TEdit;
begin
    vEdit   :=   GetDBGridEdit(TDBGrid(Sender));
    if   Assigned(vEdit)   then   vEdit.Color   :=   clYellow;
end;

procedure   TForm1.DBGrid1KeyUp(Sender:   TObject;   var   Key:   Word;
    Shift:   TShiftState);
begin
    Caption   :=   GetDBGridEditText(TDBGrid(Sender));
end;
///////End   Demo
 
 
 

procedure TForm4.dbgrdShowKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
with qry1 do //动态计算
begin
if (FindField(‘总价‘)<>nil) and (FindField(‘数量‘)<>nil) and (FindField(‘单价‘)<>nil) then
if State in [dsinsert,dsedit] then
begin
UpdateRecord;
FieldByName(‘总价‘).AsString:=StrOpt(DasS(qry1,‘数量‘),‘*‘,DasS(qry1,‘单价‘));
end;
end;

end;

以上是关于Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本的主要内容,如果未能解决你的问题,请参考以下文章

DBGrid 中的 Delphi 2010 计算列

delphi 7 DBGrid 实现下拉选择后更新

delphi的DBgrid怎么获取当前记录的上一条bookmark,dbgrid的数据源是dataset

delphi中,如何向dbgrid中添加数据记录并自动刷新

Delphi - DBGrid 不显示 ADO 表的内容

怎样在delphi取 dbgrid的一列值来进行二次查询?