Delphi中有没有类似C++中的vector的容器类??
小弟刚学用delphi,碰上这种问题又不知如何是好了(说实话,delphi的help和VC的差太多了)

解决方案 »

  1.   

    ole container  ActiveX控件的动态加载    
        
    如何在Delphi中动态加载ActiveX控件如何在Delphi中动态加载ActiveX控件?其实很简单!嗯,大家做好了,下面以ShockWaveFlash控件为例讲解如何动态加载ActiveX控件!首先,我们知道,ActiveX控件都有TypeLib或者导出单元的,因此我们首先应该生成一个Object Pascal格式的单元来封装这个ActiveX控件,这个封装过程Delphi可以全自动完成,我们不必要写任何代码!首先,在Delphi菜单Component-->Import ActiveX Control,在弹出的对话框中(如下图):选择ShockWave Flash,然后点击Install...,然后选择你需要安装的包,默认采取dclusr.dpk即可!然后弹出Package DPK窗口(如下图):此时我们点击[Install]工具按钮即可,默认情况下, 新的控件将被安装到ActiveX控件页面,此时我们可以和普通控件一样使用这个Flash控件了,但是我们要动态创建的话,也很简单,首先,我们在uses部分添加ShockwaveFlashObjects_TLB单元,然后在FormCreate事件中,添加代码:procedure TForm1.FormCreate(Sender: TObject);beginOpenDialog1.Filter :='SWF Files (*.SWF)|*.SWF';with OpenDialog1 doif Execute thenwith TShockwaveFlash.Create(Self) dobeginHeight := 100;Width := 100;Top := 30;Align := alClient;Parent := Self;Visible := True;OnFSCommand :=MyCommand;Movie := FileName;Play;end;end;procedure TForm1.MyCommand(Sender: TObject; const command,args: WideString);beginCaption :=Format('Command:%s,Args:%s',[Command,args]);end;这样我们就可以动态生成和使用ActiveX控件了,实际上,是非常简单的,和普通的控件没有任何区别。上面的代码必须先导入类型库,限制了应用,如果我们要动态创建任意的ActiveX控件那么该怎么办呢?可以利用OLE Container控件来达到我们的目的!我们可以动态创建TOLEContainer控件,然后OleContainer有可以动态创建任意的对象,例如:procedure TForm1.Button1Click(Sender: TObject);beginOleContainer1.CreateObject(Edit1.Text,False);OleContainer1.DoVerb(ovShow);end;然后我们运行程序,在Edit里面输入'ShockwaveFlash.ShockwaveFlash.1'点击Button1,然后在Edit里面输入Word.Document,然后点击Button,你会发现我们已经能够动态创建任意的ActiveX控件了。 :-)。注意,若目标机器上面没有安装OCX控件,我们可以在程序的最开始使用WinExec或者ShellExecute()运行regsvr32 来注册OCX控件即可,否则可能无法创建控件。
     
       
      

  2.   

    首先还是要谢谢!!!
    不过这么作对我来说是杀鸡用牛刀了~~~我只是想找一个array的灵活一点的替代品,里面只装一些数据或简单的类.
    又根简单的方法吗?