معلومات المنتج:
الوحدة 1؛
واجهة
الاستخدامات
Windows، الرسائل، SysUtils، المتغيرات، الفئات، الرسومات، عناصر التحكم، النماذج،
مربعات الحوار، StdCtrls، ComCtrls، DB، ADODB؛
يكتب
PNodeInfoEx = ^TNodeInfoEx;
TNodeInfoEx = سجل معبأ
NodeID: عدد صحيح؛
معرف الوالدين: عدد صحيح؛
نوع العقدة: عدد صحيح؛
ChnNodeTitle: سلسلة؛
إيماجيندكس: سمولنت؛
الفهرس المحدد: SmallInt؛
نهاية؛
TForm1 = الفئة (TForm)
tv1: تي تري فيو؛
btn1: تي بوتون؛
qry1: TADOQuery;
الإجراء btn1Click(Sender: TObject);
إجراء FormDestroy(Sender: TObject);
خاص
{ تصريحات خاصة }
وظيفة StaticBuildTree(TreeView:TTreeView ):Boolean;
وظيفة AddTreeItem(TreeView:TTreeView; AddNodeInfo:PNodeInfoEx):TTreeNode;
وظيفة FindTreeItem(TreeView:TTreeView; CurNodeID:integer): TTreeNode;
عام
{ التصريحات العامة }
نهاية؛
فار
Form1: TForm1؛
تطبيق
{$R *.dfm}
وظيفة TForm1.StaticBuildTree(TreeView:TTreeView ):Boolean;
فار
AddNodeInfo : PNodeInfoEx;
يبدأ
النتيجة:= خطأ؛
qry1.LoadFromFile('c:/AdminixTree.xml');// قم بتنزيل XML مرة أخرى
Treeview.Items.BeginUpdate;//الرجوع إلى: قم بإلغاء تحديد ما يجب عليك فعله ابدأ التحديث، قم بالتحديث مرة أخرى (OnChange事件等)
Treeview.Items.Clear;//تم حذف Treeview
يحاول
يحاول
إذا qry1.RecordCount > 0 ثم
يبدأ
qry1.First;
في حين لا qry1.Eof القيام به
يبدأ
جديد(AddNodeInfo) ;//تم التحقق منه
AddNodeInfo^.NodeID := qry1.FieldByName('NODE_ID').AsInteger;
AddNodeInfo^.ParentID := qry1.FieldByName('PARENT_ID').AsInteger;
AddNodeInfo^.NodeType := qry1.FieldByName('NodeType').AsInteger;
AddNodeInfo^.ChnNodeTitle := qry1.FieldByName('ChnNodeTitle').AsString;
AddNodeInfo^.ImageIndex := qry1.FieldByName('ImageIndex').AsInteger;
AddNodeInfo^.SelectedIndex := qry1.FieldByName('SelectedIndex').AsInteger;
AddTreeItem(Treeview,AddNodeInfo);// قم بإلغاء تحديد موقع Treeview
qry1.Next;
نهاية؛
نهاية؛
يستثني
Application.MessageBox('生成树结点失败',MB_ICONSTOP+MB_OK);
رفع;//向上级抛异常
نهاية؛
qry1.Close;
النتيجة := صحيح؛
أخيراً
Treeview.Items.EndUpdate;
نهاية؛
نهاية؛
//الحصول على أفضل النتائج معرف الوالدين
وظيفة TForm1.AddTreeItem(TreeView:TTreeView; AddNodeInfo:PNodeInfoEx):TTreeNode;
فار
ParentNode: TTreeNode;
يبدأ
ParentNode := FindTreeItem(Treeview,AddNodeInfo^.ParentID);
إذا كان ParentNode <> nil إذن
النتيجة: = Treeview.Items.AddChildObject(ParentNode, Trim(AddNodeInfo.ChnNodeTitle), Pointer(AddNodeInfo))
آخر
النتيجة := Treeview.Items.AddObject(ParentNode, Trim(AddNodeInfo.ChnNodeTitle), Pointer(AddNodeInfo));
إذا كانت النتيجة <>لا شيء إذن
يبدأ
Result.ImageIndex := AddNodeInfo.ImageIndex;
Result.SelectedIndex := AddNodeInfo.SelectedIndex;
نهاية؛
نهاية؛
//الحصول على أفضل النتائج
وظيفة TForm1.FindTreeItem(TreeView:TTreeView; CurNodeID:integer): TTreeNode;
فار
ط: عدد صحيح؛
يبدأ
النتيجة := لا شيء؛
لأني := 0 إلى Treeview.Items.Count-1
يبدأ
إذا CurNodeID=PNodeInfoEx(Treeview.Items[i].Data)^.NodeID ثم
يبدأ
النتيجة := Treeview.Items[i];
مخرج؛
نهاية؛
نهاية؛
نهاية؛
// 生成树结构
الإجراء TForm1.btn1Click(Sender: TObject);
يبدأ
ستاتيك بيلد تري (التلفزيون 1)
نهاية؛
// تم العثور على المزيد من المعلومات حول أفضل ما يمكن أن يحدث في Dis. يمكن أن تكون الوضعية في وضعية معينة
الإجراء TForm1.FormDestroy(Sender: TObject);
فار
ط: عدد صحيح؛
يبدأ
لأني := 0 إلى tv1.Items.Count-1 do
يبدأ
التخلص من( PNodeInfoEx(tv1.Items[i].Data))
نهاية؛
نهاية؛
نهاية.
معلومات المنتج:
// هل من الممكن أن يكون الأمر كذلك؟
الإجراء TForm1.tv1MouseDown(Sender: TObject; الزر: TMouseButton;
التحول: TShiftState؛ X، Y: عدد صحيح)؛
فار
pNode:TTreeNode;
يبدأ
pNode:=tv1.GetNodeAt(x,y);
إذا (pNode<>nil) و(Button=mbleft) إذن
ShowMessage(PNodeInfoEx(pNode.Data)^.ChnNodeTitle);
نهاية؛