ehlib(dbgrideh)的问题(200分)

  • 主题发起人 主题发起人 sxfgf
  • 开始时间 开始时间
S

sxfgf

Unregistered / Unconfirmed
GUEST, unregistred user!
请问大家一个问题:ehlib 中的dbgrideh控件在不是用和数据库连接的情况下可以使用吗?
比如:添加列,还有把第一列可以编辑,第二列为只读,第三列为下拉选择,在表格中回车后自动把焦点放到下一个表格或者是换行?还有怎么才能往表格中填充中文字段~!
 
问题不是很清楚!!!
 
我是要做一个,表格程序,但不使用数据库,可是我在使用DBGRIDEH的时候,出现了很多的问题,比如:添加列,还有把第一列可以编辑,第二列为只读,第三列为下拉选择,在表格中回车后自动把焦点放到下一个表格或者是换行?还有怎么才能往表格中填充中文字段~!
请大哥赐教!如何代码实现上述功能?
 
有两个方法:
1。用内存表+DBGRIDEH。
2。用 StringGrid。
 
stringgrid 也可以实现这些功能:把第一列可以编辑,第二列为只读,第三列为下拉选择,在表格中回车后自动把焦点放到下一个表格或者是换行?还有怎么才能往表格中填充中文字段~!
另外,大哥能详细告诉我怎么使用内存表吗?能给我一些代码吗?
 
用TClientDataset做内存数据集
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBClient, Grids, DBGrids;
type
TForm1 = class(TForm)
ButtonLoad: TButton;
ButtonSave: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ButtonAddData: TButton;
procedure FormCreate(Sender: TObject);
procedure ButtonLoadClick(Sender: TObject);
procedure ButtonSaveClick(Sender: TObject);
procedure ButtonAddDataClick(Sender: TObject);
private
{ Private declarations }
Table: TClientDataSet;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonLoadClick(Sender: TObject);
begin
table.LoadFromFile('c:/mem.cds');
end;

procedure TForm1.ButtonSaveClick(Sender: TObject);
begin
table.SaveToFile('c:/mem.cds');
end;

procedure TForm1.ButtonAddDataClick(Sender: TObject);
var
i: integer;
begin
for i := 1 to 100do
begin
table.Append;
table.FieldByName('ID').AsInteger := i;
table.FieldByName('Status').AsString := 'Code'+IntToStr(i);
table.FieldByName('Created').AsDateTime := Date();
table.FieldByName('Volume').AsFloat := Random(10000);
table.Post;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
table := TClientDataset.Create(Application);
table.FieldDefs.Add('ID', ftInteger, 0, False);
table.FieldDefs.Add('Status', ftString, 10, False);
table.FieldDefs.Add('Created', ftDate, 0, False);
table.FieldDefs.Add('Volume', ftFloat, 0, False);
table.CreateDataset;
table.Open;
table.IndexFieldNames := 'ID';//动态创建索引
DataSource1.DataSet:=table;
end;

end.
 
谢谢您,我说的是EHLIB 中的DBGRIDEH啊!
是不是用法是一样的?
 
用 DataSource 连接上面说的 table,然后 DBGRIDEH 再连接 DataSource 不就行了?
效果如同使用数据库,你可以根据要求对 DBGRIDEH 进行任意设置。
 
可以是可以了,就是能不能不通过内存表直接对控件操作阿,
比如:在第一列上的单元格内要显示一个按钮比如:... ,能手动输入文字,同时还要能响应鼠标双击比如弹出一对话框。另外还有那个下拉列表又该怎么实现?
 
一口气问那么多,怎么回答你呢?建议还是一点一点学习积累吧。
 
大哥,我知道你是高手,可是我真的需要您的帮助啊!
我只是想做一个类似,进销存软件那样的一个销售单的表格的程序,可以手工输入数据。不像以前用VC++那样对表格的控制、使用那么方便,只要有数据然后控制表格的行和列就可以准确地把数据在表格中显示。他们都说delphi很容易上手很简单,可是我感觉是封装的太厉害了!反而自己一头雾水了,表格就是表格嘛,为什么非要和数据库要有关系呢?这点上我就不明白了!难道离开数据库或者内存表格之类的东西,delphi就不行了吗?我知道应该是可以的,但我现在就是不知道怎么做,所以还请大哥帮帮我!
 
那你用 StringGrid 就行了。
留下信箱我发一个样例程序给你,看一看就懂了。
 
好的,谢谢大哥!
sxfgf@sohu.com
 
后退
顶部