type
GETCNAME = class(TThread)
private
GRID:Tdbgrideh;
ADOConn:TADOConnection;
protected
procedure getCName();
procedure Execute; override;
public
constructor create(AGrid: TDBGRidEh;AADOConn:TADOConnection);
end;implementationuses main_unit;
procedure GETCNAME.Execute;
begin
synchronize(getCName);
end;constructor GETCNAME.create(AGrid: TDBGRidEh;AADOConn:TADOConnection);
begin
self.GRID:=AGrid;
self.ADOConn:=main.ADOConn; //为什么在这句会出错
end;
procedure CreateTable(Fields:TFields;FieldCount:integer;TableName:String);
var
Table: TTinyTable;
i:integer;
begin
Table:=TTinyTable.Create(nil);
Table.DatabaseName:=ExtractFilePath(Application.ExeName)+'temp.tdb';
Table.TableName:=TableName;
for i:=0 to FieldCount-1 do
begin
if Fields.Fields[i].DataType=ftString then
Table.FieldDefs.Add(Fields.Fields[i].FieldName,Fields.Fields[i].DataType,Fields.Fields[i].DataSize);
if (Fields.Fields[i].DataType=ftInteger) or (Fields.Fields[i].DataType=ftFloat) or (Fields.Fields[i].DataType=ftDateTime) then
Table.FieldDefs.Add(Fields.Fields[i].FieldName,Fields.Fields[i].DataType,0);
end;
table.CreateTable;
Table.Close;
Table.Free;
end; procedure GETCNAME.getCName();
var
Query: TADOQuery;
i: integer;
begin
Query := TADOQuery.Create(nil);
Query.Close;
Query.Connection := ADOConn;
Query.SQL.Clear;
Query.SQL.Add('select * from sys_fielddict where fieldname=:name');
for i := 0 to Grid.Columns.Count - 1 do
begin
if Grid.Columns.Items[i].Visible then
begin
Query.Parameters.ParamValues['name'] := Grid.Columns.Items[i].FieldName;
Query.Open;
if Query.RecordCount = 1 then
begin
Grid.Columns.Items[i].Title.Caption := Query.FieldByName('display').AsString;
Grid.Columns.Items[i].Width := Query.FieldByName('display_width').AsInteger;
end;
Query.Close;
Application.ProcessMessages;
end;
end;
Query.Close;
Query.Free;
end;
GETCNAME = class(TThread)
private
GRID:Tdbgrideh;
ADOConn:TADOConnection;
protected
procedure getCName();
procedure Execute; override;
public
constructor create(AGrid: TDBGRidEh;AADOConn:TADOConnection);
end;implementationuses main_unit;
procedure GETCNAME.Execute;
begin
synchronize(getCName);
end;constructor GETCNAME.create(AGrid: TDBGRidEh;AADOConn:TADOConnection);
begin
self.GRID:=AGrid;
self.ADOConn:=main.ADOConn; //为什么在这句会出错
end;
procedure CreateTable(Fields:TFields;FieldCount:integer;TableName:String);
var
Table: TTinyTable;
i:integer;
begin
Table:=TTinyTable.Create(nil);
Table.DatabaseName:=ExtractFilePath(Application.ExeName)+'temp.tdb';
Table.TableName:=TableName;
for i:=0 to FieldCount-1 do
begin
if Fields.Fields[i].DataType=ftString then
Table.FieldDefs.Add(Fields.Fields[i].FieldName,Fields.Fields[i].DataType,Fields.Fields[i].DataSize);
if (Fields.Fields[i].DataType=ftInteger) or (Fields.Fields[i].DataType=ftFloat) or (Fields.Fields[i].DataType=ftDateTime) then
Table.FieldDefs.Add(Fields.Fields[i].FieldName,Fields.Fields[i].DataType,0);
end;
table.CreateTable;
Table.Close;
Table.Free;
end; procedure GETCNAME.getCName();
var
Query: TADOQuery;
i: integer;
begin
Query := TADOQuery.Create(nil);
Query.Close;
Query.Connection := ADOConn;
Query.SQL.Clear;
Query.SQL.Add('select * from sys_fielddict where fieldname=:name');
for i := 0 to Grid.Columns.Count - 1 do
begin
if Grid.Columns.Items[i].Visible then
begin
Query.Parameters.ParamValues['name'] := Grid.Columns.Items[i].FieldName;
Query.Open;
if Query.RecordCount = 1 then
begin
Grid.Columns.Items[i].Title.Caption := Query.FieldByName('display').AsString;
Grid.Columns.Items[i].Width := Query.FieldByName('display_width').AsInteger;
end;
Query.Close;
Application.ProcessMessages;
end;
end;
Query.Close;
Query.Free;
end;
解决方案 »
- fastreport中的TfrxPictureView 如何旋转???
- 新手提问:怎样实现一个按点一下就显示窗体,再点一下就隐藏窗体,自由切换!!~~
- 请各位高手进来讨论一下代码!
- 如何超难的绘图 操作 ????????????? (图)急!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 帮助文件的调用有问题
- 双层结构保险吗?谁能给我一把锁!
- 帮我看看
- fastreport中barcode导出pdf的问题
- 想请教大家对历史数据处理的问题。(Delphi6+ADO+SQL2000)
- 高手情帮忙!!!!!!!!!!!!!!
- 怎样在DBGrid中创建列表头
- 怎么样去掉货币的"羊角号"---("¥")
begin
self.GRID:=AGrid;
self.ADOConn:=AADOConn;
end;应该是没有错的,或者你可以在线程创建的时候把这个ADOCONNECTION传进来
应该
AdoConn := TADOConnection.Create(AADoConn);
AdoConn :=AADoConn;
在现程中不要涉及到对adoconnection的操作。
把对adoconnection的操作放到Form中。
现程中不要涉及到对adoconnection的操作,建议你操作qdoquery
下面加上
inherited Create(false);
一句