我有一个想法,希望大家帮助实现:
  类1 : Classe
    .......
  End ;{类1}
  类2 : Classe
    .......
  End ;{类2}  主类 : Classe
    参量1: Boolean ;
    参量2: Integer ;
    参量3: If 参量1 Then 类1 Else 类2 ;
  End ; {主类}
=======================
  参量3能否实现这样的功能,或者是类似功能。希望能达到这样的目的:
   XXX.主类.参量3 <---- 是"类1"
   YYY.主类.参量3 <---- 是"类2"谢谢大家  

解决方案 »

  1.   

    哈哈,笑死我。建议看看李维的深入vcl
      

  2.   

    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  TClass1 = class
      end;  TClass2 = class
      end;  TClass3 = class
      private
        FIsClass1: Boolean;
        FMyClass: TClass;
        procedure SetMyClass(const Value: TClass);
        function GetMyClass(): TClass;
      public
        property MyClass: TClass read GetMyClass write SetMyClass; //用属性来取
        constructor Create(aIsClass1: Boolean);
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TClass1 }constructor TClass3.Create(aIsClass1: Boolean);
    begin
      FIsClass1 := aIsClass1;
    end;function TClass3.GetMyClass: TClass;
    begin
      if FIsClass1 then
        Result := TClass1
      else
        Result := TClass2;
    end;procedure TClass3.SetMyClass(const Value: TClass);
    begin
      FMyClass := Value;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      tmpObj1, tmpObj2: TClass3;
    begin
      tmpObj1 := TClass3.Create(True);          
      ShowMessage(tmpObj1.MyClass.ClassName); //tmpObj1.MyClass  就是你想要的类.
      tmpObj1.Free;  tmpObj1 := TClass3.Create(False);
      ShowMessage(tmpObj1.MyClass.ClassName); //tmpObj1.MyClass  就是你想要的类.
      tmpObj1.Free;
    end;
      

  3.   

    我在前面已经说过了,LZ的思维倒过来,这就不是问题,按5楼的做法,倒过来用继承不是更简单:type
      TClassBase = class
      end;  TClass1 = class(TClassBase)
      end;  TClass2 = class(TClassBase)
      end;procedure TForm1.Button1Click(Sender: TObject);
    var
      base: TClassBase;
    begin
      base := TClass1.Create;
      ShowMessage(base.ClassName); // Base.ClassType  就是你想要的类.
      base.Free;  base := TClass2.Create;
      ShowMessage(base.ClassName); // Base.ClassType  就是你想要的类.
      base.Free;
    end;