不知你为什么想在BITMAP上显示LISTBOX,LISTBOX是一个控件,它实际上是一个子窗口。放在窗口上才是有作用的。
把LISTBOX图象复制到BITMAP上,可以把它画出来。但是,画出来LISTBOX并不能起到LISTBOX的作用。
我用IMAGE当做一个图片复制了一下。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Image1: TImage;
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);begin
image1.Canvas.CopyRect(image1.ClientRect,listbox1.Canvas,listbox1.ClientRect );
end;end.
把LISTBOX图象复制到BITMAP上,可以把它画出来。但是,画出来LISTBOX并不能起到LISTBOX的作用。
我用IMAGE当做一个图片复制了一下。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Image1: TImage;
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);begin
image1.Canvas.CopyRect(image1.ClientRect,listbox1.Canvas,listbox1.ClientRect );
end;end.
Bitmap是TBitmap类型
向Bitmap发这种消息是没有用的
procedure TForm1.Button1Click(Sender: TObject);
var
Rect : TRect;
begin
Image1.Canvas.Pen.Width := 1;
Image1.Canvas.Pen.Color := clBlack;
Image1.Canvas.Rectangle(Image1.ClientRect);
Rect.Left := ListBox1.ClientRect.Left+1;
Rect.Right := ListBox1.ClientRect.Right-1;
Rect.Top := ListBox1.ClientRect.Top+1;
Rect.Bottom := ListBox1.ClientRect.Bottom-1;
Image1.Canvas.CopyRect(Rect,ListBox1.Canvas,ListBox1.ClientRect);
end;
运行时动态创建控件,干吗要自己画:)
如果运行时要移动,改变一个控件的大小,DDHCode有一个控件可以实现
如果要同时移动多个控件的话:(麻烦,DreamControl控件包可以实现
可以做的和delphi的IDE很象.