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

//from
http://kingron.myetang.com/zsfunc12.htm

(*//
标题:处理数据网格的编辑框
说明:示例添加焦点颜色;获取还没有提交到数据集的字段文本
设计: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;

 
原文地址:https://www.cnblogs.com/jijm123/p/10589294.html