利用Delphi中的画布画树(2)
2008-04-11 12:27:04来源:互联网 阅读 ()
begin
AddObj(inttostr(SearilID),x,y,1,false,getselect.objid,true);
DrawNode(inttostr(SearilID));
label1.Caption:=''''add the node,id:'''' inttostr(SearilID);
end
else
begin
label1.Caption:=''''please select the node!'''';
end;
end;
end;
2:
begin
setselected(x,y);
end;
3: //查看
begin
//clearCanvas;
curobj:=setshowsel(x,y);
if curobj.ObjId<>'''''''' then
begin
clearshowed;
curobj:=setshowsel(x,y);
curobj.showed:=true;
setfnode(curobj.FNode);
setcnode(curobj.ObjId);
DrawFull;
end;
end;
4: //移动
begin
if clickobj(x,y)<>'''''''' then clicked:=true;
beginx:=x;
beginy:=y;
end;
5:
begin
if clickobj(x,y)<>'''''''' then clicked:=true;
beginx:=x;
beginy:=y;
end;
end;
end
else
begin
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;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
var
i,j:integer;
begin
j:=olst.Count;
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Delphi多层开发方案比较
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
