DELPHI开发经验心得

2026/4/29 16:42:34

if dbg_ass_workgroup.SelectedIndex=2 then begin Close;

str_sql :=' select ''[''+REPLACE(class_code,'' '','''')+'']''+REPLACE(class_name,'' '','''') as group_type' +' from chd_code ' +' where param_id = 4' +' order by 1'; commandtext := str_sql; Open;

dbg_ass_workgroup.Columns[2].PickList.Clear; while not Eof do begin

dbg_ass_workgroup.Columns[2].PickList.Add(FieldbyName('group_type').AsString); next; end; end; end;

-----------------------------------------------------------------------------------------

DBGRID新增記錄時,位數不夠,補零,也可以使用 10000000000+s的方法,然后從第二位開始截取10位

在lookupdata的onsettext事件里設置

procedure TFrm_IdNoData.ads_idNoDataID_NOSetText(Sender: TField; const Text: String); var

s:string; begin

if text='' then exit; s:=text;

case length(s) of 0..9: begin

s:=copy('0000000000',1,10-length(s))+s; sender.Value :=s; end;

10:sender.Value :=s; else

begin

messagebox(0,'ID長度不能大於10!','提示',0); abort; end; end;

end;

----------------------------------------------------------------------------------- 遍歷dbgrid數據集中是否存在重復記錄(定位法) var

mylist:Tstringlist;

mylist:=Tstringlist.Create; ads_idNoData.First;

while not ads_idNoData.Eof do begin

if mylist.IndexOf(ads_idNoData.fieldbyname('ID_NO').asstring)=-1 then //該值只能為-1或者非-1

mylist.Add(ads_idNoData.fieldbyname('ID_NO').asstring) else begin

result:=4; break; end;

ads_idNoData.Next; end;

------------------------------------------------------------------------------------- 該過程用于控制dbgrid里面的Enter鍵輸入

procedure TFrm_IdNoData.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if key=13 then begin

if (sender as Tdbgrid).SelectedIndex=(sender as Tdbgrid).Columns.Count-1 then

begin

if (sender as Tdbgrid).DataSource.DataSet.Eof then begin

(sender as Tdbgrid).DataSource.DataSet.First; (sender as Tdbgrid).SelectedIndex:=0; end else begin

(sender as Tdbgrid).DataSource.DataSet.next; (sender as Tdbgrid).SelectedIndex:=0; end; end else

(sender as Tdbgrid).SelectedIndex:=(sender as Tdbgrid).SelectedIndex+1; end;

end;

------------------------------------------------------------------------------------- 控制鍵盤的輸入

//限制第一個欄位的鍵盤輸入 if DBGrid1.SelectedIndex = 0 then begin

if not (Key in ['0'..'9',#8,#13]) then Key := #0; end;

//限制第二個欄位的鍵盤輸入 if DBGrid1.SelectedIndex = 1 then begin

Key := #0; end;

//限制第五個欄位的鍵盤輸入 if DBGrid1.SelectedIndex = 4 then begin

if not (Key in ['0','1',#8,#13]) then Key := #0;

end;

-------------------------------------------------------------------------------------- Navigator刪除提示框:

if MessageBox(Handle,'該刪除動作會連同其下的關鍵控制點一同刪除,確定要刪除?','提示',MB_YESNO or MB_ICONQUESTION=ID_NO then Abort else begin

dm_CollectDevicedata.lc_procNavigatoraction;

dm_CollectDevicedata.ads_INF_COLLECT_SET.Delete; Abort; end;

---------------------------------------------------------------------------------------------------------------------

兩個dbgrid,根據dbgrid1的數據來查找dbgrid2里的數據

做法:在dbgrid1的AfterScroll事件里面,根據某個字段來過濾dbgrid2里面的數據

例子:

//數據採集器編號數據集的滾動事件 2011-11-1 cjr add

procedure Tdm_BMS_JSW_SetRpFieldIn.ads_jsw_fe_RpSetAfterScroll( DataSet: TDataSet); Var

Col_Seq:Integer; begin

Col_Seq := ads_jsw_fe_RpSet.fieldbyname('rp_seq').AsInteger; ads_jsw_fe_Field.Filtered :=False;

ads_jsw_fe_Field.Filter:=' rp_seq =' + IntToStr(Col_Seq); ads_jsw_fe_Field.Filtered :=True; end;

------------------------------------------------------

新增DBGRID記錄時,如果dbgrid2的某個字段的值來源於dbgrid1,則可以這樣賦值:

例子:

procedure Tdm_CollectDevicedata.ads_INF_COLLECT_DTLNewRecord( DataSet: TDataSet); begin

dataset.FieldByName('COL_SEQ').value :=ads_INF_COLLECT_SET.fieldbyname('COL_SEQ').asinteger; end;

----------------------------------------------------------------------------------------------------------------------------

sql語句:用于檢查數據表中是否存在重復記錄 例子:


DELPHI开发经验心得.doc 将本文的Word文档下载到电脑
搜索更多关于: DELPHI开发经验心得 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219