• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Nazgulled

Como alterar a herança de um form em runtime?

5 mensagens neste tópico

Eu sei que a pergunta pode ser um bocado estupida e a primeira resposta será "não", mas não sabia bem o que escrever no título e passo agora a escrever o meu problema...

Tenho uma classe chamada ClassA que herda da classe Form. Esta ClassA faz uma série de coisas que a classe normal Form não faz mas não será usada directamente, ou seja, depois tenho outra classe que herda da ClassA que lhe vamos chamar FormPrincipal (pois é o form principal da aplicação).

Até aqui tudo bem...

O que a minha ClassA faz é dar um aspecto diferente (skins) ao form. No entanto, em runtime, queria puder alternar entre a skin ou um form normal. Para isso bastava que o meu FormPrincipal herdasse de Form e não de ClassA. Julgo não puder mudar a herança em runtime, mas será que é possível? Se não for, será que há outra maneira de fazer isto?

É que eu não queria ter de duplicar todo o código por classes diferentes (uma a herdar de Form e outra de ClassA) porque não tem lógica nenhuma.

Soluções?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não conheço, que me lembre, forma de alterar a instância em runtime.

A classA faz apenas overrides ou acrescenta "funcionalidades"?

Senão podes sempre ter um bool a dizer que apenas é para chamar o método da base ou para executar também o código da classA, penso que já resolve.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tem bastante código por todo o lado, vou ter de adicionar montes de ifs estou a ver...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fazer uma classA base e depois duas derivadas, uma com skin outra sem skin não resolve?

guardavas uma variável do tipo base e depois usavas como instância a derivada que quisesses...

não sei se estou a fazer alguma confusão mas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estou a perceber bem mas se calhar não funciona como eu quero porque a ideia é permitir durante a execução do programa que a skin seja activada/desactivada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora