ComboBox2.Items.AddObject(query1.FieldByName('name').asstring,
TObject(query1.FieldByName('name_id').Asinteger));
语法形式为:addobject(string,Tobject)
Tobject后面带的参数怎么解释?初学者不懂,高手指点。

解决方案 »

  1.   

    存放对象的指针(用TObject去引用)
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        ListBox1: TListBox;
        Button1: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure ListBox1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      aa:widestring;
    implementation{$R *.DFM}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    aa:=edit1.text;
    listbox1.Items.AddObject(edit2.text,tobject(aa));
    end;procedure TForm1.ListBox1Click(Sender: TObject);
    begin
    edit3.text:=string(listbox1.Items.Objects[listbox1.ItemIndex]);
    end;end.结贴:)
      

  3.   

    关联 name 和 name_id, 很巧妙,只要知道name的index就可以通过 integer(combobox2.items.objects[index]) 知道name_idTObject()强制转换成TObject例如 ob:TObject;
    ob:=TObject(query1.FieldByName('name_id').Asinteger));假如query1.FieldByName('name_id').Asinteger == 20 ob其实就是4个字节指针,指向TObject对象的内存区域
    强制转换就是 20 放在这4个字节里,这样ob就是指向地址是 20的一个TObject对象,当然这里指的地方不是真正的TObject对象,不过只要不调用TObject的方法,就不会出错。
      

  4.   

    其实就是把普通类型的变量转化成tobject类型的变量。
      

  5.   

    大概明白了,有没有更多关于tobject的引用说明或参考,谢谢了。
    新手上路,多多关照!