我想在下边输入产品时,仿效盛科2000XP输入,比如
产品信息为
助计词 大类 分类 小类 型号 单位 数量 单价
LX5120 整机 品牌机 联想 5120 台 20 5200
SD5200 整机 品牌机 实达 5200 台 20 5200
--------------
我想在下面(比如出库时的DBGRID)输入产品时,可以在输一个字符时如‘L’,下面自动像
COMBOX的效果,出来 LX5120:品牌机/联想/5120 ,换为'S'后又能出来 SD5200:品牌机/实达/5200 ,然后当你选择一个ITEM后,
他又能把对应的分类、小类、型号和单位写到DBGRID对应的字段上去,这种效果该如何实现?
我已尝试嵌入COMBOX控件和建立LOOKUP字段但都没有用?
如果谁用过无锡盛科的2000XP进销存软件就知道那种效果了,现在客户要我们写那种效果出来,可百思不得其解!!!肯请帮忙!!!
产品信息为
助计词 大类 分类 小类 型号 单位 数量 单价
LX5120 整机 品牌机 联想 5120 台 20 5200
SD5200 整机 品牌机 实达 5200 台 20 5200
--------------
我想在下面(比如出库时的DBGRID)输入产品时,可以在输一个字符时如‘L’,下面自动像
COMBOX的效果,出来 LX5120:品牌机/联想/5120 ,换为'S'后又能出来 SD5200:品牌机/实达/5200 ,然后当你选择一个ITEM后,
他又能把对应的分类、小类、型号和单位写到DBGRID对应的字段上去,这种效果该如何实现?
我已尝试嵌入COMBOX控件和建立LOOKUP字段但都没有用?
如果谁用过无锡盛科的2000XP进销存软件就知道那种效果了,现在客户要我们写那种效果出来,可百思不得其解!!!肯请帮忙!!!
解决方案 »
- 在simplegrah控件上画线。并让线可以平形移动
- 此文件不是一个有效的复合文件
- 急!如何从word表格复制数据?
- 同学不想再写程序了,想开个小店,目前有十万元资金,请大家出个主意,地址在石家庄,干什么好?
- 为什么这一段代码不对?
- 很菜的问题!Winsock有关!
- 如何在程序运行过程中随时在popupmenu对象中增加一个item
- Delphi 7连接paradox数据库
- 程序打包问题
- 关于在Canvas上画图的问题!我在Canvas上画好图以后,只要移动其他的窗体到CANVAS上那么原来在画布上画的图就不见了!必须重新画,请告诉我该怎么防止重画?
- 急找DXDBGRID,DXDBTREE(for D5)控件
- 如何在form上画表格
碰好,我也是用的类似的这种办法
但是呢,我是在录了如:B以后,按一个回车,再弹出B%的货号,然后
选择一下,将货号编码、货号名称、单价等信息全部取出来就
不用楼主说的,直接选择弹出的原因是,像这样做,如果有10万个货号,那速度可就成了问题了,因为每一次查询操作,就是一次过滤操作procedure TStockInputForm.TickDBGridKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key in [VK_RETURN,VK_TAB] then
SetGridText
//如果按回车、TAB键,则弹出单一货号输入窗口
else if key = VK_F8 then
ShowInputDialog;
//如果按F8键 ,则弹出多行货号输入窗口,可以同时选择多个货号输入
end;
end;//这个就是单一货号窗口的实现过程了
procedure TStockInputForm.SetGridText;
var
tmpStr : String;
begin
if TickDBGrid.Fields[0].ReadOnly then
exit;
if (TickDBGrid.SelectedField.DisplayLabel = '货号') then
begin
{判断是不是有这个货号,如果有,则显示相关内容,如果有多个相似,则显示选择框,否则提示无相关信息}
if (BodyQuery.State = dsEdit) or (BodyQuery.State = dsInsert) then
BodyQuery.Post;
tmpStr := UpperCase(trim(BodyQuery.FieldByName('GDSID').AsString));
if tmpStr = '' then exit;
With CodeQuery do
begin
Close;
SQL.Clear;
SQL.Add('Select GDSID,GDSINID,GDSNAME,SPECIFY,UOMID,SALEPRICE from GOODS where GDSID like '''+tmpStr+'%''');
Open;
if recordCount >=1 then
begin
if RecordCount >1 then
begin
WareInfoForm := TWareInfoForm.Create(Application);
try
WareInfoForm.QueryStr := SQL.Text;
if WareInfoform.ShowModal = 100 then
begin
tmpStr := WareInfoForm.GDSID;
Close;
SQL.Clear;
SQL.Add('Select GDSID,GDSINID,GDSNAME,SPECIFY,UOMID,SALEPRICE from GOODS where GDSID='''+tmpStr+'''');
Open;
end
else
begin
TickDBGrid.SetActiveField('GDSID');
exit;
end;
Finally
WareInfoform.Free;
WareInfoForm := nil;
end;
end;
BodyQuery.Edit;
BodyQuery.FieldByName('GDSID').AsString := tmpStr;
BodyQuery.FieldByName('GDSINID').AsString := trim(FieldByName('GDSINID').AsString);
BodyQuery.FieldByName('GDSNAME').AsString := FieldByName('GDSNAME').AsString;
BodyQuery.FieldByName('SPECIFY').AsString := FieldByName('SPECIFY').AsString;
BodyQuery.FieldByName('UOMID').AsString := FieldByName('UOMID').AsString;
BodyQuery.FieldByName('UNITPRICE').AsFloat := FieldByName('SalePrice').AsFloat;
end
else if RecordCount = 0 then
begin
ShowMessage('该编号的商品不存在!');
BodyQuery.Edit;
TickDBGrid.GetActiveField.Value := '';
end;
end;
end;
end;//由于代码太长,所以多选的代码就不写了,而且也太复杂了
procedure TForm1.Com_boxKeyPress(Sender: TObject; var Key: Char);
var
Tpstr:STring;
begin
Com_box.Text:=Key+Com_box.Text;
Tpstr:=Com_box.Text;
if key<>#0 then
if Length(Tpstr)>0 then
with Ado do
begin
Close;
Com_box.Items.Clear ;
Com_box.Text:=Tpstr;
Sql.Clear ;
Sql.Text:='Select Idno,Idname From Testtb '
+'Where Idno Like :myid';
Parameters[0].Value:=Com_box.Text+'%';
Open;
While not Eof do
begin
Com_box.Items.Add(Fields[0].Value+':'+Fields[1].Value);
NExt;
end;
Close;
If com_box.Items.Count>0 then
Com_box.DroppedDown:=True
Else Com_box.DroppedDown:=True;
end;
end;
参看《delphi X 从入门到精通》
直接绑定,下载吧,里面又例子
参看《delphi X 从入门到精通》
里面有一个WWDBGRID的控件,比起我们的DBGRID好用多了
你可以在WWDBGRID中指定连接到的DBLOOKUPCOMBOBOX控件,
它还自带了DBDTATETIMEPICKER控件,还有什么DBRICHEDIT控件
还可以在WWDBGRID中显示视片,还可以在其中使用DBCHECK控件
Ehlib的 DBLookupComboBoxEh效果更好
参看《delphi X 从入门到精通》
哪里有得下载哦?
给个连接撒~
当本列获取光标后且处于改变(onchange)时,用执行一次匹配查询操作就可
但这样做不好的就是执行查询操作太多降慢了速度.
Ehlib的 DBLookupComboBoxEh效果更好
在下两个都用过,都能实现,后来因为dblookupcombobox是delphi自带的,并且编译后生成的文件更小,所以用了dblookupcombobox
Ehlib的 DBLookupComboBoxEh效果更好
在下两个都用过,都能实现,后来因为dblookupcombobox是delphi自带的,并且编译后生成的文件更小,所以用了dblookupcombobox
先将数据字段写入其中,然后在这里面查询。这样比每次都检索数据库快多了。不过它要占用一些空间,所以见意在点击确定或取消时,将其为setlength(str_res,0);
-----------------------------------------------------------
只说个人观点,从不对自己的议论负任何责任!
-----------------------------------------------------------