我有很多个按钮 点击不同的按钮将打开不同的Frame 现在想写一个公共函数 但是总是报错//
procedure TFrmMain.PanelShowFrame(ShowFrame:TFrame);
var
MyFrame:TFrame;
begin
   MyFrame:=ShowFrame.Create(Application);
   MyFrame.Parent:=RightPanel;
   MyFrame.Left:=0;
   MyFrame.Top:=0;
   MyFrame.Show;
end;报错信息
[Error] Main.pas(48): Incompatible types: 'TFrame' and 'Class reference'如果将函数改成
procedure TFrmMain.PanelShowFrame(ShowFrame:TFrameClass);
就会报 [Error] Main.pas(25): Undeclared identifier: 'TFrameClass'望高手解决 

解决方案 »

  1.   

    MyFrame:=ShowFrame.Create(Application);
    改成:
    MyFrame:=TShowFrame.Create(Application);
      

  2.   


    Type
     //先定义
     TFrameClass=class of TFrame//定义后才可以使用
    //没定义就使用肯定会报Undeclared identifier: 'TFrameClass'啊!
    procedure TFrmMain.PanelShowFrame(ShowFrame:TFrameClass);
    var
    MyFrame:TFrame;
    begin
      MyFrame:=ShowFrame.Create(Application);
      MyFrame.Parent:=RightPanel;
      MyFrame.Left:=0;
      MyFrame.Top:=0;
      MyFrame.Show;
    end;