在窗口上生成一个树形菜单:
procedure treecreate1(tabnam1:string);
var
mynode:array[0..2] of ttreenode;
begin
form3.TreeView1.Enabled:=true;
form3.TreeView1.Items.Clear ;
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('select * from '''+tabnam1+'''');
form3.ADOQuery1.Open ;
while not form3.ADOQuery1.Eof do
begin
form3.TreeView1.Items.Add(form3.TreeView1.TopItem,form3.ADOQuery1.Fields[1].AsString+form3.ADOQuery1.Fields[0].AsString);
form3.ADOQuery1.Next;
end;
end;调用该过程,打开该窗口:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
form3.hide;
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('b0110') then
begin
treecreate1('单位代码');
form3.Show;
end;
end;错误提示:
project project1.exe raised exception class EAccessViolation with message 'access violation at address 004563D6 in module 'project1.exe' read of address ffffffff'
procedure treecreate1(tabnam1:string);
var
mynode:array[0..2] of ttreenode;
begin
form3.TreeView1.Enabled:=true;
form3.TreeView1.Items.Clear ;
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('select * from '''+tabnam1+'''');
form3.ADOQuery1.Open ;
while not form3.ADOQuery1.Eof do
begin
form3.TreeView1.Items.Add(form3.TreeView1.TopItem,form3.ADOQuery1.Fields[1].AsString+form3.ADOQuery1.Fields[0].AsString);
form3.ADOQuery1.Next;
end;
end;调用该过程,打开该窗口:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
form3.hide;
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('b0110') then
begin
treecreate1('单位代码');
form3.Show;
end;
end;错误提示:
project project1.exe raised exception class EAccessViolation with message 'access violation at address 004563D6 in module 'project1.exe' read of address ffffffff'
改為:
if dbgrid1.SelectedField='b0110' then
var
mynode:array[0..2] of ttreenode;
begin
form3.TreeView1.Enabled:=true;
form3.TreeView1.Items.Clear ;
form3.ADOQuery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.ADOQuery1.SQL.Add('select * from '''+tabnam1+'''');
form3.ADOQuery1.Open ; TreeView1.Items.Clear;
Mynode:=TreeView1.Items.Add(nil,'单位信息');
while not form3.ADOQuery1.Eof do
begin
form3.TreeView1.Items.AddChild(Mynode,form3.ADOQuery1.Fields //改成MYnode[1].AsString+form3.ADOQuery1.Fields[0].AsString);
form3.ADOQuery1.Next;
end;
end;
mynode: TTreeNode;
定义一个就行了
在后面对TopItem引用出错
With Tform3.Create(Application) do
begin
try
TreeView1.Enabled:=true;
TreeView1.Items.Clear ;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from '''+tabnam1+'''');
ADOQuery1.Open ;
while not ADOQuery1.Eof do
begin
TreeView1.Items.Add(TreeView1.TopItem,ADOQuery1.Fields[1].AsString+ADOQuery1.Fields[0].AsString);
ADOQuery1.Next;
end;
ShowModal;
Finally
Free;
End;
end;
你的问题在于Form3.hide,
后,又有Form3,show,
另外看看 工具栏中的 代减号的那个