in setselected(x,y); end; end;
procedure TFrm_Tree.FormCreate(Sender: TObject); begin OLst:=TList.Create; ToolNO:=0; Root:=true; SelID:=''''''''; SearilID:=0; clicked:=false; with PaintBox1.Canvas do begin brush.Color:=clWhite; FillRect(rect(0,0,PaintBox1.Width,PaintBox1.Height)); end; end;
procedure TFrm_Tree.Button1Click(Sender: TObject); begin ToolNO:=1; end;
procedure TFrm_Tree.Button2Click(Sender: TObject); begin ToolNO:=2; end;
procedure TFrm_Tree.AddObj(id: string; x, y, typeno: integer; selected: boolean; Fnode: string;showed:boolean); var Obj: ^TObj; begin new(obj); obj.ObjId:=id; obj.CenterX:=x; obj.centery:=y; obj.TypeNo:=typeno; obj.Selected:=selected; obj.FNode:=fnode; obj.showed:=showed; OLst.Add(obj); end;
function TFrm_Tree.getObj(id: string): TObj; var i,j:integer; begin j:=Olst.Count; for i:=0 to j-1 do begin if TObj(OLst.Items[i]^).ObjId=id then begin Result:=TObj(OLst.Items[i]^); Break; end; end; end;
function TFrm_Tree.getselect: TObj; var i,j:integer; begin j:=Olst.Count; for i:=0 to j-1 do begin if TObj(OLst.Items[i]^).Selected then begin Result:=TObj(OLst.Items[i]^); Break; end; end; end;
function TFrm_Tree.haveselect: boolean; var i,j:integer; begin Result:=false; j:=Olst.Count; for i:=0 to j-1 do begin if TObj(OLst.Items[i]^).Selected then begin Result:=true; Break; end; end; end;
procedure TFrm_Tree.DrawFull; var i,j:integer; begin //PaintBox1.Canvas.FillRect(rect(0,0,PaintBox1.Width,PaintBox1.Height)); clearCanvas; j:=olst.Count; for I:=0 to j-1 do begin DrawNode(TObj(OLst.Items[i]^).ObjId); end; end;
procedure TFrm_Tree.PaintBox1Paint(Sender: TObject); begin DrawFull; end;
procedure TFrm_Tree.setselected(x, y: integer); var i,j:integer; begin j:=olst.Count; for I:=0 to j-1 do begin TObj(OLst.Items[i]^).Selected:=false; if (TObj(OLst.Items[i]^).CenterX-10<x) and (TObj(OLst.Items[i]^).CenterX+10>x) and (TObj(OLst.Items[i]^).Centery-10<y) and (TObj(OLst.Items[i]^).Centery+10>y) then begin TObj(OLst.Items[i]^).Selected:=true; Label1.caption:=''''selected the node id:''''+ TObj(OLst.Items[i]^).objid; end;
end; DrawFull; end;
procedure TFrm_Tree.Button3Click(Sender: TObject); begin ToolNO:=3; end;
function TFrm_Tree.setshowsel(x, y: integer):tobj; var i,j:integer; begin j:=olst.Count; for I:=0 to j-1 do begin TObj(OLst.Items[i]^).Selected:=false; if (TObj(OLst.Items[i]^).CenterX-10<x) and (TObj(OLst.Items[i]^).CenterX+10>x) and (TObj(OLst.Items[i]^).Centery-10<y) and (TObj(OLst.Items[i]^).Centery+10>y) then begin TObj(OLst.Items[i]^).showed:=true; Label1.caption:=''''look the node id:''''+ TObj(OLst.Items[i]^).objid; Result:=TObj(OLst.Items[i]^); Break; end; end; end;
procedure TFrm_Tree.clearshowed; var i,j:integer; begin j:=olst.Count; for I:=0 to j-1 do begin TObj(olst.items[i]^).showed:=false; end; end;
procedure TFrm_Tree.setfnode(id: string); var curobj:^tobj; begin if id<>'''''''' then begin //new(curobj); curobj:=getPObj(id); while curobj^.TypeNo=1 do begin curobj^.showed := true; curobj :=getpobj(curobj^.FNode); end; curobj^.showed:=true; //dispose(curobj); end; end;
procedure TFrm_Tree.setcnode(id: string); var curobj:^tobj; i,j:integer; begin //curobj:=getobj(id); j:=olst.count; for i:=0 to j-1 do begin if tobj(olst.Items[i]^).FNode=id then begin curobj:=getpobj(tobj(olst.Items[i]^).ObjId); curobj^.showed:=true; setcnode(curobj^.ObjId); end; end; end;
procedure TFrm_Tree.clearCanvas; begin //PaintBox1.Canvas PaintBox1.Canvas.FillRect(rect(0,0,PaintBox1.Width,PaintBox1.Height)); end;
procedure TFrm_Tree.Button4Click(Sender: TObject); begin clicked:=false; PaintBox1.Canvas.FillRect(rect(0,0,PaintBox1.Width,PaintBox1.Height)); OLst.Clear; Root:=true; SelID:=''''''''; SearilID:=0; { with PaintBox1.Canvas do begin Pen.Width :=2; Pen.Color:=clblack; pen.Style :=psclear; Brush.Style:=bsSolid; Brush.Color:=clwhite; Rectangle(0,0,PaintBox1.Width,PaintBox1.Height); end;} end;
procedure TFrm_Tree.Button5Click(Sender: TObject); var i,j: integer; begin j:=olst.count; for i:=0 to j-1 do begin tobj(olst.Items[i]^).showed:=true;
end; DrawFull; end;
function TFrm_Tree.getPObj(id: string): Pointer; var i,j:integer; begin Result:=nil; j:=Olst.Count; for i:=0 to j-1 do begin if TObj(OLst.Items[i]^).ObjId=id then begin Result:=OLst.Items[i]; Break; end; end; end;
function TFrm_Tree.clickobj(x, y: integer): string; var i,j:integer; begin Result:=''''''''; j:=olst.Count; setselected(x,y); for I:=0 to j-1 do begin if (TObj(OLst.Items[i]^).CenterX-10<x) and (TObj(OLst.Items[i]^).CenterX+10>x) and (TObj(OLst.Items[i]^).Centery-10<y) and (TObj(OLst.Items[i]^).Centery+10>y) then begin Label1.caption:=''''click the node id:''''+ TObj(OLst.Items[i]^).objid; Result:=TObj(OLst.Items[i]^).ObjId; Break; end; end; end;
procedure TFrm_Tree.Button6Click(Sender: TObject); begin ToolNO:=4; end;
procedure TFrm_Tree.moveobj(dx, dy: integer); var i,j:integer; begin j:=olst.Count; for I:=0 to j-1 do begin TObj(OLst.Items[i]^).CenterX:= TObj(OLst.Items[i]^).CenterX+dx; TObj(OLst.Items[i]^).Centery:= TObj(OLst.Items[i]^).Centery+dy; end; //DrawFull; end;
procedure TFrm_Tree.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin case toolno of 4: begin if clicked then begin endx:=x; endy:=y; moveobj((endx-beginx),(endy-beginy)); end; clicked:=false; end; 5: begin clicked:=false; & 上一页 [1] [2] [3] 下一页 没有相关教程
|