我要把vb中的一段代码转换成delphi代码。Private Sub CreateOverviewSymbol()  'Get the IRGBColor interface        
  Dim pColor As IRgbColor           //IRgbColor是接口
  Set pColor = New RgbColor
  'Set the color properties
  pColor.RGB = RGB(255, 0, 0)  'Get the ILine symbol interface
  Dim pOutline As ILineSymbol          //ILineSymbol也是接口
  Set pOutline = New SimpleLineSymbol    
  'Set the line symbol properties
  pOutline.Width = 1.5
  pOutline.Color = pColor  'Get the IFillSymbol interface
  Set m_pFillSymbol = New SimpleFillSymbol
  'Set the fill symbol properties
  m_pFillSymbol.Outline = pOutline
  m_pFillSymbol.Style = esriSFSHollowEnd Sub
现在的问题是:我在delphi中怎么转换“set pColor = New RgbColor”,“Set m_pFillSymbol = New SimpleFillSymbol”这两句。

解决方案 »

  1.   

    问题是RgbColor没有Create方法。
      

  2.   

    要看 RgbColor, SimpleFillSymbol是什么类型的东西,
    一个记录类型?一个普通类?一个com接口?pColor:=RgbColor.Create;
    or
    pColor:=CreateObject(RgbColor);
      

  3.   

    是com接口,我用如下方法但是提示“没有注册类别”:
    uses comobj,SHDocVw;
    const CId1:TGUID=
      '{64AB4BB7-111E-11D1-8F79-00C04FC2FBF1}';
    var
      pColor:IRGBColor ;
    begin
         pColor:=CreateComObject(CId1) as IRGBColor;end;
    请大虾指点
      

  4.   

    既然用了new,肯定有Create方法
      

  5.   

    IRGBColor是接口,不是对象,除非定义一个对象并继承IRGBColor。我现在找到了另一种方法:
    uses comobj,SHDocVw;
    const CId1:TGUID=
      '{64AB4BB7-111E-11D1-8F79-00C04FC2FBF1}';
    var
      pColor:IRGBColor ;
    begin
         pColor:=CreateComObject(CId1) as IRGBColor;end;
    但是老是提示“没有注册类别”,不知道那位知道
      

  6.   

    需要将定义IRGBColor等接口的文件(可能是动态库或者类型库文件)使用delphi的类型库编辑工具引入到delphi后,创建接口类型然后访问属性或方法。
      

  7.   

    请aiirii(ari-淘金坑) 指点一下