線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1104
推到 Plurk!
推到 Facebook!

不知如何定义dbtreeview的imageindex

尚未結案
zhuangquanmin
一般會員


發表:5
回覆:6
積分:2
註冊:2005-04-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-24 21:57:36 IP:220.162.xxx.xxx 未訂閱
写了一个dbtreeview,不知如何定义它imageindex 为表中的字段值,请大大帮下,谢谢. unit dbtreeviewex; interface uses ComCtrls, DB, Classes; type TTreeNodeInfo = record Id: string; ParentId: string; end; TDBTreeViewex = class(TTreeView) private fTable: TDataSet; fId, fParentId, fName,fimageindex: string; function AddItem: TTreeNode; function FindItem(Id: string): TTreeNode; public function GetId: string; procedure BuildTree; procedure ClearTree; published property FieldId: string read fId write fId; property FieldParentId: string read fParentId write fParentId; property FieldName: string read fName write fName; property Fieldimageindex: string read fimageindex write fimageindex; property DataSource: TDataSet read fTable write fTable; property ActiveId: string read GetId; end; procedure Register; implementation function TDBTreeViewex.FindItem(Id: string): TTreeNode; var i: integer; NodeInfo: ^TTreeNodeInfo; begin Result := nil; for i := 0 to Items.Count - 1 do begin NodeInfo := Items[i].Data; if NodeInfo^.Id = Id then begin Result := Items[i]; Exit; end; end; end; function TDBTreeViewex.GetId: string; var NodeInfo: ^TTreeNodeInfo; begin if Selected = nil then Result := '' else begin NodeInfo := Selected.Data; Result := NodeInfo^.Id; end; end; function TDBTreeViewex.AddItem: TTreeNode; var NodeInfo: ^TTreeNodeInfo; ObjParent: TTreeNode; Name, CurId: string; begin ObjParent := FindItem(fTable.FieldByName(fId).AsString); if ObjParent <> nil then begin Result := ObjParent; Exit; end else begin New(NodeInfo); NodeInfo^.Id := fTable.FieldByName(fId).AsString; NodeInfo^.ParentId := fTable.FieldByName(fParentId).AsString; Name := fTable.FieldByName(fName).AsString; if fTable.FieldByName(fParentId).AsString <> '' then begin ObjParent := FindItem(Name); if ObjParent <> nil then Result := Items.AddChildObject(ObjParent, Name, NodeInfo) else begin CurId := fTable.FieldByName(fId).AsString; if fTable.Locate(fId, fTable.FieldByName(fParentId).AsString, []) then begin Result := Items.AddChildObject(AddItem, Name, NodeInfo); fTable.Locate(fId, CurId, []); end else Result := Items.AddObject(Selected, Name, NodeInfo); end; end else begin Result := Items.AddObject(Selected, Name, NodeInfo); end; end; end; procedure TDBTreeViewex.BuildTree; var ChangeEvent: TTVChangedEvent; Node:TTreeNode; begin if (fTable = nil) or (not fTable.Active) then Exit; ChangeEvent := OnChange; OnChange := nil; Items.BeginUpdate; ClearTree; fTable.First; while not fTable.Eof do begin AddItem; node.ImageIndex:=ftable.fieldbyname(fimageindex).AsInteger; node.SelectedIndex:=ftable.fieldbyname(fimageindex).AsInteger; fTable.Next; end; AlphaSort; Items.EndUpdate; OnChange := ChangeEvent; end; procedure TDBTreeViewex.ClearTree; var NodeInfo: ^TTreeNodeInfo; i: integer; begin Items.BeginUpdate; for i := 0 to Items.Count - 1 do begin NodeInfo := items[i].Data; Dispose(NodeInfo); end; while Items.Count > 0 do Items.Delete(Items[0]); Items.EndUpdate; end; procedure Register; begin RegisterComponents('Data Controls', [TDBTreeViewex]); end; end.
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-02 11:57:07 IP:203.69.xxx.xxx 未訂閱
node.ImageIndex:=ftable.fieldbyname(fimageindex).AsInteger; node.SelectedIndex:=ftable.fieldbyname(fimageindex).AsInteger;     這是ㄧ個元件的源代碼, 既然是 自己寫的, 怎麼還會有這種問題....< > 還懸賞哩...< > 由這兩行來看, 只要在設計階段將 表中的字段名稱 指定 給 Fieldimageindex 這個 Property 就可以了吧!!!
系統時間:2024-05-19 14:42:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!