TreeView問題_ -------- 發表那裏是誤放 ------------- |
尚未結案
|
doll_candy
初階會員 發表:110 回覆:53 積分:32 註冊:2002-04-22 發送簡訊給我 |
首先很抱歉在之前有放錯位置了,放到發表去了,請原諒我的迷糊
各位大大:
有關TreeView是我想嘗試的動作,
以下是我三個TABLE,(FADMMA_圖一,FADMMB_圖二,FADMMC_圖三) (圖一) (圖二) (圖三) 做出來效果(圖四)
(圖四)
但我想做成三層的(自己剪貼出來的)
===============================
引言: 以下是程式部份: procedure TFTreeView.createnode(nd: ttreenode); var r1:prec; nd1:ttreenode; dt1,dt2 : tadoquery; begin if nd=nil then begin dt1 := TADOQuery.Create(Application); dt1.Connection := DM.conn1; dt1.SQL.add('select MA001,MA002 from FADMMA'); dt1.sql.add(' order by MA001'); dt1.Open; dt1.First; while not dt1.Eof do begin new(r1); r1^.rtype:=0; r1^.id:=dt1.fields[0].AsString; r1^.text:=dt1.fields[1].AsString; nd1:=tr.Items.AddChildObject(nil,r1.text,r1); createnode(nd1); dt1.Next; end; dt1.Close; dt1.Free; end else begin dt2:=tadoquery.Create(self); dt2.Connection := DM.conn1; dt2.SQL.Add('SELECT MB001,MB002,MB003 FROM FADMMB '); dt2.SQL.Add('WHERE MB004='+QuotedStr(prec(nd.Data)^.id) ); dt2.SQL.Add('ORDER BY MB001'); dt2.Open; dt2.First; while not dt2.eof do begin new(r1); r1.rtype:=1; r1^.id:=dt2.fields[0].AsString; r1^.text:=dt2.fields[1].AsString; tr.Items.AddChildObject(nd,r1.text,r1); dt2.Next; end; dt2.Close; dt2.free; end; end;doll_candy
------
doll_candy |
stonys
初階會員 發表:64 回覆:111 積分:38 註冊:2002-09-28 發送簡訊給我 |
您好,以下方法請您參考看看...
首先,拉一個TreeView跟adoquery元件
然後如下: procedure TForm1.Button1Click(Sender: TObject);
var
I, J, K : Integer;
TEMPSTR: string;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(' SELECT A.MA002,C.MC002,B.MB002 FROM MA A,MB B,MC C');
ADOQuery1.SQL.Add('WHERE');
ADOQuery1.SQL.Add(' (B.MB004 = A.MA001');
ADOQuery1.SQL.Add(' and B.MB003 = C.MC001)');
ADOQuery1.SQL.Add(' ORDER BY A.MA001, C.MC001, B.MB001');
ADOQuery1.Open;
J := 0;
for I := 1 to ADOQuery1.FieldCount do
begin
ADOQuery1.First;
TEMPSTR := '';
while not ADOQuery1.Eof do
begin
if ADOQuery1.Fields[I - 1].Value <> TEMPSTR then
begin
TEMPSTR := ADOQuery1.Fields[I - 1].Value;
if I = 1 then
begin
TreeView1.Items.AddChild(nil, TEMPSTR);
J := J 1;
end
else
for K := 0 to J - 1 do
begin
if TreeView1.Items[K].Text = ADOQuery1.Fields[I - 2].Value then
begin
TreeView1.Items.AddChild(TreeView1.Items[K], TEMPSTR);
J := J 1;
end;
end;
end;
ADOQuery1.Next;
end;
end;
TreeView1.FullExpand;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |