1.
我用TDBGrideh输入数据,其中有一个字段在输入时用下拉列表框,列表框的数据来自于一个数据集,像EHLIB的DEMO1程序中的GRID1页框的下拉列表框的效果(下拉列表框可显示多列).2.TDBLOOKUPCOMBOBOXEH这个控件我设置它的editbutton的style为ebsellipsiseh,使它变为有一个三个小点按钮的EDIT控件, 我也在其onbuttonclick事件中调用一个对话框,显示数据,我在对话框中应传什么数据给它,并对什么属性赋值,我试过这种dblookupcombobox1.value:=employeecode 但是没有显示,但数据库改了?
先谢谢了!
我的EMAIL:[email protected]
随时等待!!
我用TDBGrideh输入数据,其中有一个字段在输入时用下拉列表框,列表框的数据来自于一个数据集,像EHLIB的DEMO1程序中的GRID1页框的下拉列表框的效果(下拉列表框可显示多列).2.TDBLOOKUPCOMBOBOXEH这个控件我设置它的editbutton的style为ebsellipsiseh,使它变为有一个三个小点按钮的EDIT控件, 我也在其onbuttonclick事件中调用一个对话框,显示数据,我在对话框中应传什么数据给它,并对什么属性赋值,我试过这种dblookupcombobox1.value:=employeecode 但是没有显示,但数据库改了?
先谢谢了!
我的EMAIL:[email protected]
随时等待!!
1.在界面上放一个dblcePayMemo: TDBLookupComboboxEh; 设置好属性 比如DataField DataSource KeyField ListField ListSource等等下面给你个例子
procedure TfrmImportReceive.dgrdUnCheckCellClick(Column: TColumnEh);
begin
if cdsTempallreceive.FieldByName('checkbox').AsString <> '1' then
dblcePayMemo.Visible := False;
end;procedure TfrmImportReceive.dgrdUnCheckColExit(Sender: TObject);
var
sSelectField :String;
begin
If dgrdUnCheck.SelectedField.FieldName = dblcePayMemo.ListField then
begin
dblcePayMemo.Visible := false;
if cdsTempallreceive.State <> dsEdit then exit;
cdsTempallreceive['PMID'] := cdsPayMemo['PMID'];
cdsTempallreceive['PMName'] := cdsPayMemo['PMName'];
end;
end;procedure TfrmImportReceive.dgrdUnCheckDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if Column.ReadOnly then exit;
if cdsTempallreceive.FieldByName('CheckBox').AsString = '0' then exit;
if (gdFocused in State) then
begin
if (Column.FieldName = dblcePayMemo.ListField ) then
begin
dblcePayMemo.Left := Rect.Left + dgrdUnCheck.Left+1;
dblcePayMemo.Top := Rect.Top + dgrdUnCheck.top+1;
dblcePayMemo.Width := Rect.Right - Rect.Left-1;
dblcePayMemo.Height := Rect.Bottom - Rect.Top-1;
dblcePayMemo.Visible := True;
end;
end;
end;procedure TfrmImportReceive.dgrdUnCheckExit(Sender: TObject);
begin
if not dblcePayMemo.Focused then
dblcePayMemo.Visible := false;
end;procedure TfrmImportReceive.dgrdUnCheckKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=VK_DOWN then
begin
if cdsTempallreceive.State<>dsEdit then exit;
if (dgrdUnCheck.SelectedField.FieldName=dblcePayMemo.ListField) then
begin
key :=0;
dblcePayMemo.SetFocus;
SendMessage(dblcePayMemo.Handle, WM_Char, 32, 0);
exit;
end;
end;
end;procedure TfrmImportReceive.dgrdUnCheckKeyPress(Sender: TObject;
var Key: Char);
begin
if (key <> chr(9)) then
begin
if (dgrdUnCheck.SelectedField.FieldName = dblcePayMemo.ListField) then
begin
key := #0;
//dblcePayMemo.SetFocus;
//SendMessage(dblcePayMemo.Handle, WM_Char, word(key), 0);
exit;
end;
end;
end;procedure TfrmImportReceive.dblcePayMemoCloseUp(Sender: TObject;
Accept: Boolean);
begin
//if Sender=dblcePayMemo then dblcePayMemo.Tag:=1;
Accept :=True;
dgrdUnCheckColExit(nil);
//dgrdUnCheck.SetFocus;
//keybd_event(9,0,KEYEVENTF_EXTENDEDKEY,0);
end;procedure TfrmImportReceive.dblcePayMemoKeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then
begin
key :=#0;
dgrdUnCheck.SetFocus;
keybd_event(9,0,KEYEVENTF_EXTENDEDKEY,0);
end;
end;
我是这样做的:我在TADODATASET中NEW FIELD,fieldkind=fklook,fieldname=cname,keyfields=categoryxh,
lookupDataSet=ADOQuery1,lookupkeyfield=xh,lookupresultfield=categoryname
XH为序号(char(2)),categoryname为分类名称,categoryxh存的是序号
adoquery1中的字段为(XH,Catgeoryname,mem),adoquery1.sql.text:='select * from category'
object DetailDataSet: TADODataSet
Connection = DM.ADOCon
CursorType = ctStatic
CommandText = 'select * from bominfo'
DataSource = dsbase
IndexFieldNames = 'SupplierID'
MasterFields = 'SupplierID'
Parameters = <>
Left = 362
Top = 180
object DetailDataSetID: TAutoIncField
FieldName = 'ID'
ReadOnly = True
end
object DetailDataSetSupplierID: TStringField
FieldName = 'SupplierID'
FixedChar = True
Size = 5
end
object DetailDataSetbomxh: TStringField
FieldName = 'bomxh'
FixedChar = True
Size = 5
end
object DetailDataSetCategoryxh: TStringField
FieldName = 'Categoryxh'
FixedChar = True
Size = 2
end
object DetailDataSetStandard: TStringField
FieldName = 'Standard'
Size = 50
end
object DetailDataSetUnit: TStringField
FieldName = 'Unit'
FixedChar = True
Size = 10
end
object DetailDataSetMemo: TStringField
FieldName = 'Memo'
Size = 100
end
object DetailDataSetCName: TStringField //主要是这个查询字段
FieldKind = fkLookup
FieldName = 'CName'
LookupDataSet = ADOQuery1
LookupKeyFields = 'XH'
LookupResultField = 'Categoryname'
KeyFields = 'Categoryxh'
Lookup = True
end
end