Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit uReturn_TObject_Str;
- interface
- uses
- Forms, Controls, SysUtils,
- Rtti, Generics.collections;
- Type
- EInstancia_Not_Null = class (Exception);
- Type
- TReturn_TObject_Str = class
- class procedure InstanciarPorString(Str_Class:TValue; Owner:TWinControl);
- end;
- implementation
- uses
- typInfo;
- class procedure TReturn_TObject_Str.InstanciarPorString(Str_Class:TValue; Owner:TWinControl);
- var
- Form : TForm;
- C : TRttiContext;
- Instancia : TRttiInstanceType;
- P : TRttiType;
- Erro : String;
- begin
- try
- case Str_Class.Kind of tkString,tkLString, tkWString, tkUString:
- begin
- Erro:=Str_Class.AsString+'Classe Não encontrada'+sLineBreak+
- '<Lembrete : verifique ortografia / Case Sensitive>'+sLineBreak;
- instancia:= (C.FindType(Str_Class.AsString) as TRttiInstanceType);
- Form := Tform(instancia.MetaclassType.Create).Create(Owner);
- Form.ShowModal;
- Form.Free;
- end;
- tkClassRef:
- begin
- Erro:='O parâmetro passado deve ser do tipo Tclass'+sLineBreak;
- p:=C.GetType(Str_Class.AsClass);
- instancia:= (C.FindType(p.QualifiedName) as TRttiInstanceType);
- Form := Tform(instancia.MetaclassType.Create).Create(Owner);
- Form.ShowModal;
- Form.Free;
- end;
- else
- begin
- Erro:='O parâmetro passado não é válidado para a função'+sLineBreak;
- abort;
- end;
- end;
- except
- on e:Exception do
- begin
- raise EInstancia_Not_Null .Create(Erro+
- 'Mensagem Original'+sLineBreak+e.Message);
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement