打印本文 打印本文 关闭窗口 关闭窗口
利用Delphi中的画布画树
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1984  更新时间:2009/4/23 18:31:04  文章录入:mintao  责任编辑:mintao
nbsp;  end;
  end;
end;

procedure TFrm_Tree.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if (clicked) then
  begin
  case ToolNO of
  4:
  begin
    moveobj((x-beginx),(y-beginy));
    beginx:=x;beginy:=y;
    DrawFull;
  end;
  5:
  begin
    movenode((x-beginx),(y-beginy),getselect.ObjId);
    movelocal((x-beginx),(y-beginy));
    beginx:=x;beginy:=y;
    DrawFull;
  end;
  end;
  end;
end;

procedure TFrm_Tree.FADEStream1Click(Sender: TObject);
var
  selfile :String;
  curid:string;
  curobj:Tobj;
  lstdate:TIniFile32;
  i,j:integer;
begin
  j:=OLst.Count;
  if SaveDialog1.Execute then
  begin
    selfile := SaveDialog1.FileName;
    lstdate := TIniFile32.Create(selfile+''''.dat'''');
    lstdate.WriteInteger(''''Title'''',''''Num'''',j);
    for i:=0 to j-1 do
    begin
      curobj:=Tobj(olst.Items[i]^);
      curid:= curobj.ObjId;
      lstdate.WriteString(curid,''''ObjID'''',curobj.ObjId);
      lstdate.WriteInteger(curid,''''CenterX'''',curobj.CenterX);
      lstdate.WriteInteger(curid,''''CenterY'''',curobj.CenterY);
      lstdate.WriteInteger(curid,''''TypeNo'''',curobj.TypeNo);
      lstdate.WriteBool(curid,''''Selected'''',curobj.Selected);
      lstdate.WriteString(curid,''''FNode'''',curobj.FNode);
      lstdate.WriteBool(curid,''''Showed'''',curobj.showed);
    end;
  end;
end;

procedure TFrm_Tree.RANDOMRandomselection1Click(Sender: TObject);
var
  selfile :String;
  //curid:string;
  lstdate:TIniFile32;
  i,j:integer;
begin
  if OpenDialog1.Execute then
  begin
      selfile:=OpenDialog1.FileName;
      clicked:=false;
      PaintBox1.Canvas.FillRect(rect(0,0,PaintBox1.Width,PaintBox1.Height));
      OLst.Clear;
      Root:=true;
      SelID:='''''''';
      SearilID:=0;
      lstdate:=TIniFile32.Create(selfile);
      j:=lstdate.ReadInteger(''''Title'''',''''Num'''',0);
      for i:=1 to j do
      begin
        addobj(lstdate.Readstring(inttostr(i),''''ObjID'''',''''''''),lstdate.ReadInteger(inttostr(i),''''CenterX'''',0),lstdate.ReadInteger(inttostr(i),''''CenterY'''',0),lstdate.ReadInteger(inttostr(i),''''TypeNo'''',0),lstdate.ReadBool(inttostr(i),''''Selected'''',true),lstdate.Readstring(inttostr(i),''''FNode'''',''''''''),lstdate.ReadBool(inttostr(i),''''Showed'''',true));
      end;
      SearilID:=j;
      Root:=false;
      DrawFull;
  end;
end;

procedure TFrm_Tree.Button7Click(Sender: TObject);
begin
  ToolNO:=5;
end;

procedure TFrm_Tree.movenode(dx, dy: integer;id:string);
var
  i,j:integer;
  curobj:^tobj;
begin
  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^.CenterX:=curobj^.CenterX+dx;
      curobj^.CenterY:=curobj^.CenterY+dy;
      movenode(dx,dy,curobj^.ObjId);
    end;
  end;
end;

procedure TFrm_Tree.movelocal(dx, dy: integer);
var
  i,j:integer;
  //curobj:tobj;
begin
  j:=olst.Count;
  for I:=0 to j-1 do
  begin
    if tobj(olst.Items[i]^).Selected then
    begin
       tobj(olst.Items[i]^).CenterX:=tobj(olst.Items[i]^).CenterX+dx;
       tobj(olst.Items[i]^).Centery:=tobj(olst.Items[i]^).Centery+dy;
       Break;
    end;
  end;
end;
end.

上一页  [1] [2] [3] 

打印本文 打印本文 关闭窗口 关闭窗口