如何改变动态产生的窗体中的某控件的属性值?应该用什么方法去做??句柄,例如:动态产生多个B窗体,我想要把其中一个B窗体的DATASET值改变,不知如何解决.

解决方案 »

  1.   

    也就是说,我动态产生多个同一个类的窗体,我只想其中一个窗体的DATASET的值改变
      

  2.   

    uses
      TypInfo;var
      PropInfo: PPropInfo;  // 要使用 TypInfo 单元
    begin
      for k := 0 to Self.ControlCount-1 do 
      begin
         propInfo := GetPropInfo(Self.Controls[k], 'Width');
         if propInfo <> nil then  // 存在属性
           self.Controls[k].Width := 200;//改变属性
      end;
    end;
      

  3.   

    procedure Tform1.CreateForm2(QuerySum:TQuery);
    form2:Tform2;
    begin
      form2:=Tform2.Create(Application);
      form2.DataSource1.DataSet:=QuerySum;
      ...
    end;
      

  4.   

    这个是在创建的时候使用,创建后,我在程序中如何再进行DataSet值的修改
      

  5.   

    简单明了点,用句柄吧,向某个句柄的B窗体发消息,B窗体中写消息接收函数,接收到后改变dataset
      

  6.   

    每创建一个窗体,窗体本身都会有一个Handle属性,你把创建的所有窗体的Handle属性记录下来,然后
    SendMessage(Handle,你得消息,0,0);B窗体上写消息的接收函数,当收到"你得消息"后,改变dataset
      

  7.   

    SendMessage(Handle,你得消息,0,0); 
    这句,我应该如何写??
    例如:将'Doc00000015'这个数值传到其中一个动态产生的窗体中的DATASET.FieldByName('doccode').value
    在发送窗体如何编写?
    在接收窗体如何编写?
      

  8.   

    就算是动态产生的窗口,也有name属性吧,引用name属性不就行了。
      

  9.   

    n个B窗体和1个B窗体也没差别啊,都是同一个类的实例,该怎么改就怎么改呗
      

  10.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      b: TButton;
    begin
      b := TButton.Create(Form1);
      b.Parent := Form1;
      b.Name := 'b1';
      b.Caption := 'mybutton';
      b.Visible := True;
      b.Top := 10;
      b.Left := 10;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      (FindComponent('b1') as TButton).Caption := 'OK';
    end;
      

  11.   

    直接说你要做什么要好一点,看你的问题貌似你要在不同的窗体取数据库中的数据?
    如果这样不是很好实现的吗?还是我理解有误?
    新建一个Datamodule块,放上操作数据库的控件,在那么多的窗体中新建临时的数据集:
    ....
    cds := TClientDataSet.Create(nil);
    try
      With DataModule1.BDEClientDataSet1 do
      begin
        Active := False;
        CommandText := String(SqlString);   //SQLString---sql语句查询
        Active := True;
        cds.Data := Data;
        Active := False;
      end;
    ....
    Finally
      cds.Free;
    end;

    如果要修改或插入数据,就定义一个TQuery对象:var qry: TQuery;
    ...
    qry := TQuery.Create(nil);
    try
      qry.DataBase := DataModule1.BDEClientDataSet1.DatabaseName;
      qry.Close;
      qry.SQL.Clear;
      qry.SQL.Add(sqlstr);//sqlstr为SQL语句
      qry.ExecSQL;
    finally
      qry.Free;
    end;
    ...
      

  12.   


    就算是动态产生的窗口,也有name属性吧,引用name属性不就行了。
    procedure TForm1.Button1Click(Sender: TObject);
    var
    b: TButton;
    begin
    b := TButton.Create(Form1);
    b.Parent := Form1;
    b.Name := 'b1';
    b.Caption := 'mybutton';
    b.Visible := True;
    b.Top := 10;
    b.Left := 10;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    (FindComponent('b1') as TBu…这样也是可以的 ,只是操作起来不是很方便