如何在窗体的控件的事件处理程序中引用当前的窗体变量? (75分)

  • 主题发起人 主题发起人 fatalexception
  • 开始时间 开始时间
F

fatalexception

Unregistered / Unconfirmed
GUEST, unregistred user!
在这个事件处理程序中,如何引用窗体Form1?
Procedure TForm1.Button1Click(Sender:TObject);
begin
Form1:=xxxxx
//类似于这样的引用,但我此时不知道窗体变量的名字。
end.
希望有个类似于“Self”的变量,但我要操作Form1这个变量的值,而不是它所
指向的对象的成员(属性或方法)。
 
补充一下:我希望有个专门做这个用的变量,而不是通过上溯Parent来找。
 
self代表的就是form1.
同时,Tform1是一个类,不是一个变量
不知道你要干什么?
 
sorry,写错了,我要操作Form1这个变量,但我需要一个通用的变量或函数,而不是直接
使用变量名,也不要上溯Parent来找。
 
没看懂你的意思,也不知道你要给form1:=XXXXX是为了什么目的。

如果你要在其他程序中使用form1,你可以在程序中加入form1相应单元,然后它的函数和过程
以及控件都可以使用。
 
Form1是一个指针,你打算赋什么值给他呢?
 
procedure TForm1.Button1Click(Sender: TObject);
var
MyForm:TForm;
begin
MyForm:=self;
MyForm.Color:=clRed;
end;
 
各位,我不是要使用Form1的属性和方法(那可以用Self),我是要引用窗体变量本身。
例如:
Procedure TForm1.Button1Click(Sender:TObject);
begin
//Form1:=SomeForm
打算实现这样的操作,但不能确定变量名,不一定叫Form1,因此只好这样写:
ThisForm:=SomeForm;
//ThisForm是我想象中的通用变量或函数,无论实际变量叫Form1还是Form2都能用。
end.
再解释一下:我需要在不知道窗体变量名的情况下、在窗体的子对象(如按钮)的事件
处理程序中,引用窗体变量。需要一个通用的变量或函数。通过Parent是可以上溯回去
的,但不是通用方法,也比较麻烦,例如可能有多层上溯。我希望Delphi(或 OO Pascal)
能提供一个标准变量或函数,用于引用当前窗体变量。谢谢大家!

 
不懂!要么是我还没入门,要么是你还没入门!
 
to delphi_lsl:
你别着急,正因为我是初学者,所以我才要提问啊!
我想帖子1341374应该写清楚了。
 
我虽然不懂,又好象听懂一点。
看看这样行不行?
self:=tform1(xxx);// xxx是你要赋给变量的值!
 
TO dedema,
self是一个指针变量,它具有和Form1一样的值,因此Self.Caption就等于Form1.Caption,
其实用指针来解释就是
先执行 Self:=Form1;
Self^自然就和Form1^是同一个对象,Self^.Caption也就和Form1^.Catpion是同一个对象。
显然,我给Self赋值为Ptr($1234,$5678),可Form1的值并没有变,该是多少还是多少。
我现在需要改Form1的值,不是它的子对象的值,也不是Self的值。
 
是不是把代表着窗体对象的那个指针的值,从地址1(比如:1000)变成
地址2(比如1004)啊?
 
我已经晕了……
 
dedema说对了,就是要改变指针的值。
 
你想把窗体的一个实例的指针指向另一个实例?
如果成功,两个指针引用一个实例是可以的,但丢失的那个实例怎么办?!!

晕,这个都能实现吗!
 
用窗口的Handle可以吗?
 
呵呵。
简单啊。
Point(A):=FormA.Handle
Point(B):=Point(A)
就这么换来换去地换啊,有了 Handle 什么都好办。
注意真正的 Handle 是只读的,你只能使用这个指针,但别想反过来给它赋值。
 
谢谢楼上的帖子,能否写出类似下面用法的用例:
Procedure TForm1.Button1Click(Sender:TObject);
begin
ThisForm:=SomeForm;
end.
其中,ThisForm是我想象中的函数,能够代表任何控件(例如Button1)自身所栖息的
窗体的窗体变量,注意,我并不知道实际的变量名(Form1或FormA)。SomeForm是另外一
个窗体变量。
 
可以。
只要对象是相容的,你的相互关系就是事实上的成立。
任何变量,在计算机里只是占有一片内存区域,当对象存在在内存时,你只要不
违反规则,就可以对它存取。而这种广泛的抽象,指针可能是一个比较好的引用体。
这里,对象可以是指针,函数可以是指针,一个简单的变量也可以是指针,它们不同
的只是存在于内存的布局和内存的使用尺寸。但如你上述的代码是不能发挥指针的
威力的。
 
后退
顶部