Fórum Typecast de Classe Inválido...alguém pode me ajudar? #183717

23/09/2003

0

Saudações,
estou fazendo um sistema que gera um relatório personalizado. O usuário seleciona os campos que quer imprimir e o sistema faz com que o item selecionado fique visível e, dependendo da sua localização, modifique o seu top para que ele fique mais próximo do título. O código em que eu tento fazer isso é este(apenas para um item):
if clb.checked[0] = true then
begin
for n := 1 to frmrelniv.ComponentCount -1 do
begin
if ((frmrelniv.components[n] is TQRLabel) or (frmrelniv.components[n] is TQRShape) and (frmrelniv.components[n].Tag = 2)) then
begin
(frmrelniv.components[n] as TQRLabel).top := top - 118;
(frmrelniv.components[n] as TQRShape).top := top - 118;
(frmrelniv.components[n] as TQRLabel).visible := true;
(frmrelniv.components[n] as TQRShape).visible := true;
end
else
begin
(frmrelniv.components[n] as TQRLabel).visible := false;*
(frmrelniv.components[n] as TQRShape).visible := false;
(frmrelniv.components[n] as TQRMemo).visible := false;
end;
O erro é este:Project Inventário.exe raised exception class EInvalidcast with message ´Typecast de classe Inválido´. Process stopped. E ele acusa a partir da linha com o asterisco. alguém aí pode me ajudar? Muito obrigado.


Elias Jr

Elias Jr

Responder

Posts

23/09/2003

Motta

é recomendavel testar o tipo antes de fazer Typecast a menos que tenha certeza da classe

if xpto is TXpto then
TXpto(xpto).xpto := ....;


Responder

Gostei + 0

23/09/2003

Luiscfj

Tente fazer o type cast para uma classe mais básica como twincontrol
ex:

if ((frmrelniv.components[n] is TQRLabel) or (frmrelniv.components[n] is TQRShape) and (frmrelniv.components[n].Tag = 2)) then
begin
(frmrelniv.components[n] as TWINCONTROL).top := top - 118;
(frmrelniv.components[n] as TWINCONTROL).top := top - 118;
(frmrelniv.components[n] as TWINCONTROL).visible := true;
(frmrelniv.components[n] as TWINCONTROL).visible := true;
end
....


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar