var s1:HWND;
begin
s1:=Form1.Handle;
TForm1(s1).Button1.Caption:='dd';
头晕晕了,问这么个没营养的问题,大家别见笑了。
下面这个就行,
{s1:Tform1;
begin
s1:=form1;
s1.Button1.Caption:='dd';}//它为什么能通过就不用回答了,我只想知道前面的为什么不行。var s1:^TForm1;
begin
//为什么下面两个写法都可以通过编译?但他们都会报告错?
s1.button1.caption:='d';
s1^.button1.caption:='d';

解决方案 »

  1.   

    1.
    s1:=Form1.Handle;
    TForm1(s1).Button1.Caption:='dd';
    这样当然不行啦,s1是句柄,不是对象地址,当然不行啦改为这样才行:
    s1:=Form1.Handle;
    TForm(FindControl(s1)).Button1.Caption:='dd';2.var s1:^TForm1;
    begin
    //为什么下面两个写法都可以通过编译?但他们都会报告错?
    s1.button1.caption:='d';
    s1^.button1.caption:='d';
    //这里没创建form对象(没create)就访问当然会出错啦
      

  2.   

    我想不通的是楼上为佬要那样去做啊?s1:Tform1;
    begin
    s1:=form1;
    s1.Button1.Caption:='dd';不是很好吗?为什么要舍近求远呢?