我想在form1中show form2(即form2.show)的同时动态创建组件若干个TPael在form2中,在每个动态创建的TPanel中创建若干个TLabel组件,当form2关闭时,释放动态创建的所有组件.我该如何做?
问题2:如何确定光标在哪个组件上?
望各位高手帮忙..谢谢!
问题2:如何确定光标在哪个组件上?
望各位高手帮忙..谢谢!
解决方案 »
- 我遇到一个棘手的问题等待解决
- 关于备份及恢复的问题,都来看看
- 小弟做的新版DelphiICQ网站,大家来评评!
- 请问怎样在sqlserver+delphi中一次完成sql批处理
- 两个在不同地方声明的过程,使用有什么不同的地方?
- 如何使dbgrid中的options中的dgediting中的值和为true.
- 很奇怪的问题,为什么delphi+sql server 2000会出现这麽奇怪的问题(关于存储器的)?我已经打过delphi的两个ado的补丁了。大家来看看!
- 高手请进,小弟有个问题请教!!!!
- 为什么异常处理没有管用呢?
- delphi中怎样播放MP3的音乐
- 请问如何联结有密码的access数据库文件
- 关于在TChart(或TDBChart)中显示动态数组的问题
procedure TForm1.Button1Click(Sender: TObject);
var
p1, p2: TPanel;
begin
p1 := TPanel.Create(Form2);
p2 := TPanel.Create(Form2); p1.Caption := 'panel1';
p2.Caption := 'panel2'; p1.Parent := Form2;
p2.Parent := Form2; p2.Top := p1.Top + 50;
p2.Left := p1.Left + 50; Form2.Show;
end; // 释放是自动的。
q2:
function FindVCLWindow(const Pos: TPoint): TWinControl;
var
Handle: HWND;
begin
Handle := WindowFromPoint(Pos);
Result := nil;
while Handle <> 0 do
begin
Result := FindControl(Handle);
if Result <> nil then Exit;
Handle := GetParent(Handle);
end;
end;
// DELPHI自带的函数。返回后直接使用try转换下应该可以的,因为我也是初学的,希望高手指点。
FindVCLWindow(Mouse.CursorPos) as Tlabel // 这就是啦,用括号后就是一个tlabel类使用。
except
end;
procedure CreateMyform();
var
My_Panel1: TPanel;
My_Label1: TLabel;
begin
My_Panel1:= TPanel.Create(form2); //用Form2为父级创建出来,
//所以当Form2关闭的时候它就会自动被释放。
With My_Panel do begin
Parent:=form2; //使用Form2来控制这个控件。
Top:=0; //下面就可以定义其他的属性了。
Left:=0;
end; //然后创建Label。
My_Label1:=TLabel.Create(My_Panel1);
With My_Label1 do begin
Parent:=My_Panel1;
//以下写其他属性。
end;
form2.Show;//将form2显示出来。
end;问题2、如何确定光标在哪个组件上?
答:用ActiveControl属性就可以了,因为动态创建出来的控件没有名字,而且往往会有相同类型的控件,所以你最好添加他们的Tag属性这样你就可以很自如的判断他们到底是谁了。
如:
if TObject(form2.ActiveControl).Tag=1 then begin
TEdit(form2.ActiveControl).Text:='123abc';
end;