我在一dll中动态创建了一个TTreeView控件及一个TTreeNode控件,编译通过,但在使用时提示TTreeNode没有父类,请问各位该如何解决,具体编码如下:
function GetPredParse(Sentence1, ResSearch1: PChar): PChar;
var
firststr, nextstr: string;
att: Integer;
str, temstr: string;
tn: TTreeNode;
tree: TTreeView;
Sentence, ResSearch: string;
begin
Result := PChar('');
Sentence := StrPas(Sentence1);
ResSearch := StrPas(ResSearch1);
tree:=TTreeview.CreateParented(Application.Handle);
tree := TTreeView.Create(Form1);
str := GetPredicate(Sentence, ResSearch);
if str <> '' then
initializefun(str)
else
initializefun('ssss');
tn := tree.Items.AddChild(tn, '谓语前');
//具体就是这一句出错,试了几种方法都不行。
function GetPredParse(Sentence1, ResSearch1: PChar): PChar;
var
firststr, nextstr: string;
att: Integer;
str, temstr: string;
tn: TTreeNode;
tree: TTreeView;
Sentence, ResSearch: string;
begin
Result := PChar('');
Sentence := StrPas(Sentence1);
ResSearch := StrPas(ResSearch1);
tree:=TTreeview.CreateParented(Application.Handle);
tree := TTreeView.Create(Form1);
str := GetPredicate(Sentence, ResSearch);
if str <> '' then
initializefun(str)
else
initializefun('ssss');
tn := tree.Items.AddChild(tn, '谓语前');
//具体就是这一句出错,试了几种方法都不行。
解决方案 »
- 好久没来,路过就散!
- 如何让数据库的登陆框不显示??
- 請大家幫一下忙
- 哪位大哥能做一个dbgrid中点击title进行排序的程序给我发过源程序来啊!
- update 发了很多次还是没有解决,大家再看一下,分不够再补,谢谢
- 望请介绍一个“带有安装选项、可制作中文界面”的安装程序制作工具。
- TreeView怎样转到下一个节点
- 我想用PXE無盤方法和网絡共享方法做一個网吧,哪里有這樣的免費軟件下載? 請您進來說說:(來者有分)
- 有人用过MakeObjectInstance函数么?它是这麽定义的,好像是API,但又查不到!
- dbtext控件没有onchange事件,可是我需要它,怎么办?自定义消息吗?
- 怎样把一个数字一个一个地提取出来?
- 紧急求助,线程传回数据问题
应该是:
function GetPredParse(Sentence1, ResSearch1: PChar): PChar;
var
firststr, nextstr: string;
att: Integer;
str, temstr: string;
tn: TTreeNode;
tree: TTreeView;
Sentence, ResSearch: string;
begin
Result := PChar('');
Sentence := StrPas(Sentence1);
ResSearch := StrPas(ResSearch1);
tree:=TTreeview.CreateParented(Application.Handle);
//tree := TTreeView.Create(Form1);
str := GetPredicate(Sentence, ResSearch);
if str <> '' then
initializefun(str)
else
initializefun('ssss');
tn := tree.Items.AddChild(tn, '谓语前');
//具体就是这一句出错,试了几种方法都不行。
tn := tree.Items.AddChild(Nil, '谓语前');第一参数是你需要加到哪个节点上,你自己加到自己的节点上怎么行??
那你用addchild怎么加都不会成功的.
function RefreshTree():Boolean;
var
nNode:TTreeNode;
BootNode,YearNode,MonthNode,DayNode:TTreeNode;
strPatientId:String;
strYear,strMonth,strDay : string;
i : Integer;
begin
with FInfoChild do
begin
PatientQuery.Active := False;
PatientQuery.SQL.Clear;
PatientQuery.SQL.Add('select * from patientinfo order by PatientId');
PatientQuery.Active := True;
PatientQuery.First;
Sktreeview1.items.Clear;
//增加根键
if Sktreeview1.items.Count < 1 then
BootNode := skTreeView1.Items.Add(nil,'××××医院伽玛刀中心') //添加根键
else
BootNode := Sktreeview1.items.GetFirstNode;
//遍历子节点
for i := 0 to PatientQuery.Recordcount do
begin
strPatientId := PatientQuery.fieldbyname('PatientId').AsString;
strYear := copy(strPatientId,1,4);
strMonth := copy(strPatientId,5,2);
strDay := copy(strPatientId,7,2);
nNode := FindStr(BootNode,strYear + '年');
if nNode = nil then
YearNode := skTreeView1.Items.AddChild(BootNode,StrYear + '年')
else
YearNode := nNode;
nNode := FindStr(YearNode,strMonth + '月');
if nNode = nil then
MonthNode := skTreeView1.Items.AddChild(YearNode,StrMonth + '月')
else
MonthNode := nNode;
nNode := FindStr(MonthNode,strDay + '日');
if nNode = nil then
begin
DayNode := skTreeView1.Items.AddChild(MonthNode,StrDay + '日');
sktreeview1.Items.AddChild(DayNode,StrPatientId)
end
else
begin
DayNode := nNode;
nNode := FindStr(DayNode,strPatientId);
if nNode = nil then
begin
sktreeview1.Items.AddChild(DayNode,StrPatientId);
end
end;
PatientQuery.Next();
end;
SkTreeview1.FullExpand;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
firststr, nextstr: string;
att: Integer;
str, temstr: string;
tn: TTreeNode;
tree: TTreeView;
Sentence, ResSearch: string;
begin
tree := TTreeview.CreateParented(Application.Handle);
tree.Parent := Form1; //关键。
tn := tree.Items.AddChild(nil, '谓语前');
tree.Show;
end;
procedure treeform;
var frm: TForm;
tv: TTreeView; // TWinControl;
tn: TTreeNode;
begin
frm := TForm.Create(Application);
try
frm.Caption :='fdgdfgdf';
frm.Show;
tv:=TTreeview.Create(tv);
with tv do
begin
ParentWindow:=frm.Handle;
Left :=0; Top:=0;
Height :=100; Width:=200;
tn := items.add(nil, 'RootTreeNode1');
Items.AddChild(tn,'ddd');
Items.AddChild(nil,'ddd');
end;
except
frm.Free;
end;
end;
exports
treeform;
begin
end.
var
firststr, nextstr: string;
att: Integer;
str, temstr: string;
tn: TTreeNode;
tree: TTreeView;
Sentence, ResSearch: string;
begin
tree := TTreeview.CreateParented(Application.Handle);
tree.Parent := Form1; //关键。
tn := tree.Items.AddChild(nil, '谓语前');
tree.Show;
end;
我在dll中加入了一个form1,将tree.parent=form1;错误依旧;
to 点点:
通过了,但为什么我在动态库中加入一个窗体就不可以?