可以在运行期间对图形控件进行移动操作吗?(50分)

  • 主题发起人 主题发起人 wink
  • 开始时间 开始时间
W

wink

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]希望在程序运行期间动态生成一图形对象
(TGraphicControl的子类,自定义的),
并可以对其进行选定、移动、复制、粘贴、
改变属性(颜色、长宽高。。。)

图形对象好像不能接受焦点,那要怎样选定呢?
如果不能选定,那么以上功能应该怎么实现?

多谢各位大虾!
 
移动的可以用:

procedure TBF_Form.IMAGEMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
(Sender as TWinControl).Perform(WM_SysCommand,$F012,0);
end;

其它的再请高手回答吧
 
用TdxfDesigner可以实现移动极大小
如果要复制粘贴要自己改一下TdxfDesigner代码
 
控件移动去下个TStretchHandle控件。
控件的Cut,paste 等可用TMemoryStream来实现,
在深度历险有相关的试例的,去看看吧。
以下是我以前一个窗体设计程序的源码,摘下点给你吧:
var
MemStream:TMemoryStream;

function CopyComponent(ParentForm:TForm;CopyComponent:array of TComponent;idx:integer):Boolean;
var
i:integer;
begin
MemStream.Clear;
for i:=0 to Idx-1 do begin
MemStream.WriteComponent(CopyComponent);
end;
Result:=True;
end;

function CutComponent(ParentForm:TForm;CutComponent:array of TComponent;idx:integer):Boolean;
var
i:integer;
begin
MemStream.Clear;
for i:=0 to Idx-1 do begin
MemStream.WriteComponent(CutComponent);
DeleteComponent(ParentForm,CutComponent,True);
end;
Result:=True;
end;

function PasteComponent(ParentForm:TForm):Boolean;
var
NewComp:TComponent;
tmpReader:TReader;
begin
Result:=False;
if MemStream.Size<0 then exit;
MemStream.Position:=0; //置0从头开始
with ParentForm do begin
while MemStream.Position<MemStream.Size do begin
tmpReader:=TReader.Create(MemStream,1024);
try
tmpReader.Parent:=ParentForm;
NewComp:=tmpReader.ReadRootComponent(nil);
InsertComponent(NewComp);
if FindComponent(NewComp.Name)<>nil then begin //如果插入控件己存在则重命名
NewComp.Name:=GetCompNameId(ParentForm,TComponentClass(NewComp.Classtype),True);
//Showmessage('Component Rename:'+GetCompNameId(ParentForm,TComponentClass(NewComp.Classtype),True));
end;
TControl(NewComp).Parent:=ParentForm; //以Component插入必须指明Parent,否则不能显示
//Showmessage('Add Component:'+NewComp.Name);
CreateClassEvent(ParentForm);
Result:=True;
finally
tmpReader.free;
end;
end;
end;
end;

不对之处,还请大家指正。
 
有个TRextBox的控件。可以这么做,我有一个,想要的话可以MAIL你一个(有源码的呦[:D])
liup@lansys.com.cn
 
要wang2855@etang.com
 
kuku:
给我一个TRextBox控件吧?谢谢你了!!
 
kuku:
给我一个

aohoo@163.com
 
谢谢 hryyx@163.com
 
TCAD可以实现该功能
http://www.codeidea.com
有中文网页
 
后退
顶部