Delphi - Invalid class typecast

 
Vista:

Invalid class typecast

Publicado por Tota (2 intervenciones) el 13/01/2005 16:37:47
Tengo un from (Form1) con un menu (TMainMenu) y quiero crear un objeto de TMainMenu a partir del menu de este form:
.
.
.
var
j : integer;
OMainMenu : TMainMenu;
OLabel : TLabel;
begin
for j := 0 to Form1.ComponentCount - 1 do
if Form1.Components[j].ClassNameIs('TMainMenu') then
begin
OMainMenu := TMainMenu.Create(Form1);
{*} OMainMenu := Form1.Components[j] As TMainMenu;
.......
end;
else if Form1.Components[j].ClassNameIs('TLabel') then
begin
OLabel := TLabel.Create(Form1);
OLabel := Form1.Components[j] As TLabel;
.......
end;

end;

La linea {*} me produce el error "Invalid class typecast".
Esto me sucede con este tipo de objeto (TMainMenu) y no con otros tipo, por ejemplo TButton o TLabel.
Alguien sabe por qué o cómo solucionarlo?

Gracias
Tota
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Invalid class typecast

Publicado por Misael (31 intervenciones) el 13/01/2005 20:26:37
Aver.... Por lo que Entendi.. Quiere que en tu TMainMenu de tu Form 1 Aparesca otro TMainMenu.... si es Asi... No es Necesario.... Tremendo. Codigo... Solomanete Fijate Bien.. Dentro Del Primer TMainMenu Que Creastes... Puedes Crear.. Otros Estos son los SubMainMenu..(SubMenu)... Por Ahi esta La Funcion... Echale un Viztaso..

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Invalid class typecast

Publicado por Tota (2 intervenciones) el 13/01/2005 21:38:38
No, no es para eso, estoy recorriendo todos los componentes de un form y necesito crear un nuevo objeto igual que el que pertenece al form.

procedure TraducirObj(Componente : TComponent);
// segun el tipo de objeto, traduce la propiedad visible de ese obj.
var
i, iMainMenu: Integer;
ObjAux : TComponent;
OMainMenu : TMainMenu;
OLabel : TLabel;
begin
{----------------------------- FORM ---------------------}
OForm := TForm.Create(ObjAux);
OForm := Componente As TForm;
Traduccion := ComCAR.Etiqueta(UpperCase(Trim(OForm.Caption)),IDLenguaje);
if Traduccion <> '' then
OForm.Caption := Traduccion;

for i := Componente.ComponentCount - 1 downto 0 do
begin
{----------------------------- MENUES ---------------------}
if Componente.Components[i].ClassName = 'TMAinMenu' then
begin
OMainMenu := TMAinMenu.Create(ObjAux);
{*} OMainMenu:= Componente.Components[i] As TMAinMenu;
.........

end

{----------------------------- ETIQUETAS ---------------------}
if Componente.Components[i].ClassName = 'TLabel' then
begin
OLabel := TLabel.Create(ObjAux);
OLabel := Componente.Components[i] As TLabel;
........
end

end;

Obj.Free;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar