当前位置:主页>Delphi教程>文章内容
客户端人性化设计
来源: 作者: 发布时间:2007-04-29  

做了几个项目后发现customer其实关心的并不是你采用了什么什么new technology 他们关心的只是能否
实现他们的要求.在C/S结构中,前台的customer关心的是录入是否人性化,是否复合他们的habit!这是
使用者最最关心的,在Database system 中人性化的设计应该符合WINDOWS的录入习惯,毕竟大家平时都在用
这样设计系统可以少很多系统的后期培训费用和时间,也可以让customer在最习惯的情况下录入和删除数据
而这些人性化的设计我总结了以下几点:
1:键盘事件(快捷键的设计,Tab,Enter......)
2:鼠标事件(双击,右键)
而这两点中尤其对Tab,Enter的代码编写最为重要,其余的DELPHI中进行相应的设置即可.
下面就以DBGrid(StringGrid)举例explain:
相应的ADOConnection,ADOTable(ADOQuer),DataSource,DBGrid(StringGrid)的代码就不用再说了:)

/////////////DBGrid(Tab和Enter的应用)
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
if DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 then
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
else
begin
ADOTable1.next;
DBGrid1.Columns[0].field.FocusControl;
end;

end;

/////////////StingGrid(数据添加)

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin

i:=1;
stringgrid1.Colcount:=adotable1.FieldCount+1;
StringGrid1.RowCount:=adotable1.RecordCount+1;
stringgrid1.cells[1,0]:='english'; //caption
stringgrid1.Cells[2,0]:='chinese'; //caption
adotable1.open;
while not adotable1.eof do
begin
stringgrid1.cells[1,i]:=adotable1.fields[0].asstring;
stringgrid1.cells[2,i]:=adotable1.fields[1].asstring;
i:=i+1;
adotable1.next;
end;
// adotable1.close;
end;


////////双击改变显示大小
procedure TForm1.StringGrid1DblClick(Sender: TObject);
var
p : TPoint;
r : TRect;
ACol, ARow : Integer;
begin
if GetCursor = Screen.Cursors[crHSplit] then
begin
GetCursorPos(p);
p := StringGrid1.ScreenToClient(p);
StringGrid1.MouseToCell(p.X, p.Y, ACol, ARow);
r := StringGrid1.CellRect(ACol, ARow);
if p.X - r.Left < 10 then
ACol := ACol - 1;
if ACol = -1 then
ACol := StringGrid1.ColCount - 1;
StringGrid1.ColWidths[ACol] := 100;
end;
end;

/////////////另付双击ADD
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
DataModule3.DataSource2.DataSet.Insert;
DataModule3.ADOTable2.Fields[0] := DataModule3.ADOTable1.Fields[0];
DataModule3.ADOTable2.Fields[1] := DataModule3.ADOTable1.Fields[1] ;
form1.Close;
end;


||||||||||||||||||||||||||
|作者:VIIVD |
|E-MAIL:bao-er@163.com |
|日期:2004.6.22 |
||||||||||||||||||||||||||




 
上一篇:DELPHI中利用Timer组件完成数据批处理(ADO)   下一篇:序列化FastReport
 
  相关文章
·DELPHI中利用Timer组件完成数据批处理(
·序列化FastReport
·“磁性”窗口新篇
·双鼠标的介绍
·COM程序编写入门(全文-3)
·将应用程序11M内存占用,降至500K
·COM程序编写入门(全文-2)
·UltraEdit也支持Delphi语法高亮
·COM程序编写入门(全文-1)
·NT服务程序中对注册表中HKey_Current_U
·建造者模式-Delphi述
·跟日期有关的两条经典SQL语句
 
【关闭窗口】
推荐本站资源
最新文章