关于超想
本站导航
邮件列表
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
你所在的位置 -> 主页 -> 超想软件 -> 编程资料 -> delphi -> 开发技巧 -> 数据库-SQL ->详细
相关内容  
 
 
在Delphi程序中应用IE浏览器控件
 
【新品推荐】

  详细内容
 

DelphiDBGrid中实现下拉列表字段编程的一种方法
作者: 评价: 上站日期: 2001-08-22
内容说明:
来源:

---- 用delphi开发数据库软件,经常使用DBGrid控件实现数据的输入与显示,像大家熟悉的Excel97、VFP中的BROWS就是采用了这种数据网格的形式。很多情况下,在进行数据输入时,有些字段只允许某几个固定的条目,像学生档案管理中学生的所在系别,只有学校固定好的几个系,还有像学生的政治面貌等等,可否从一个下拉列表中进行选择,从而方便输入和避免输入错误呢?,Delphi的数据网格控件DBGrid支持的下拉列表编程可以实现此功能(见http://www.computerworld.com.cn/99/tips/9903/030302_05.asp),但有明显的缺陷,就是使用不方便,为显示某字段的下拉框需按两次回车键,然后用鼠标点击下拉列表的下拉按钮,下拉列表才能出现,输入数据时总是按动鼠标非常别扭。下面介绍的下拉列表的实现方法可以在不修改DBGrid控件或利用钩子函数的基础上实现下拉列表方便的开合,操作时不再需要按动鼠标,最大限度的方便了数据输入人员。  

---- 基本思路  

---- 利用一个浮动式菜单PopupMenu,浮动式菜单的各菜单条是用于选择的相应条目。以此来实现下拉列表的功能。为了实现浮动式菜单与相应字段的结合,还需要做以下的工作:  

---- (1)在DBGrid控件属性中有PoppupMenu一栏,添入浮动式菜单名,此时,程序运行时,按鼠标右键即可打开PoppupMenu进行选择。  

---- (2)为使键盘控制PoppupMenu的开合还需将装载DBGrid的窗体的Keypreview属性设为true,在DBGrid的KeyDown事件中写入一事件,来控制PoppupMenu的开合的位置与显示条件。  

---- 下面以一个学生信息库中的学生的系别为例(字符串类型)为例,给出一个具体的例子:  

unitUnit1;  
interface  
uses  
Windows,Messages,SysUtils,Classes,  
Graphics,Controls,Forms,Dialogs,  
Db,Menus,DBTables,Grids,DBGrids;  
type  
TForm1=class(TForm)  
DBGrid1:TDBGrid;  
DataSource1:TDataSource;  
Table1:TTable;  
PopupMenu1:TPopupMenu;  
N1:TMenuItem;  
N2:TMenuItem;  
N3:TMenuItem;  
Table1XH:TStringField;  
Table1XM:TStringField;  
Table1XB:TStringField;  
N4:TMenuItem;  
procedureDBGrid1KeyDown  
(Sender:TObject;varKey:Word;  
Shift:TShiftState);  
procedureN1Click(Sender:TObject);  
procedureN2Click(Sender:TObject);  
procedureN3Click(Sender:TObject);  
procedureN4Click(Sender:TObject);  
private  
{Privatedeclarations}  
public  
{Publicdeclarations}  
end;  
var  
Form1:TForm1;  
implementation  
{$R*.DFM}  
procedureTForm1.DBGrid1KeyDown  
(Sender:TObject;varKey:Word;  
Shift:TShiftState);  
var  
LastEditCol:integer;  
begin  
LastEditCol:=DbGrid1.SelectedIndex;  
ifLastEditCol<  > 2thenexit;//让浮动式菜单只对第二列起作用  
if(Key=VK_RETURN)//VK_***是您的热键的虚键值  
then  
PopupMenu1.Popup(336,222);//336,222浮动式菜单显示的位置  
end;  
procedureTForm1.N1Click(Sender:TObject);  
begin  
table1.Edit;  
table1.FieldValues[‘XB‘]:=‘物理系‘;  
table1.post;  
end;  
procedureTForm1.N2Click(Sender:TObject);  
begin  
table1.Edit;  
table1.FieldValues[‘XB‘]:=‘数学系‘;  
table1.post;  
end;  
procedureTForm1.N3Click(Sender:TObject);  
begin  
table1.Edit;  
table1.FieldValues[‘XB‘]:=‘计算机系‘;  
table1.post;  
end;  
procedureTForm1.N4Click(Sender:TObject);  
begin  
table1.Edit;  
table1.FieldValues[‘XB‘]:=‘中文系‘;  
table1.post;  
end;  
end.  

 
你所在的位置 -> 主页 -> 超想软件 -> 编程资料 -> delphi -> 开发技巧 -> 数据库-SQL ->详细
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
声明:本站内容除注明原创以外均从网上摘抄,如有侵权请指明。
  如果您对我们的网站有什么意见或者建议,请与我们联系
powered by 建站易上手- V2.0