Situação que ocorreu exatamente neste momento:
- Classe frmClass - cuida de telas
- Classe frmCadastroClass - cuida da navegação de cadastros e herda a frmClass
- Classe AUXILIARClass - pra facilitar cadastros genéricos, herda a frmCadastroClass
- Classe AuxMODFISClass - cadastro de Modelos de Documentos Fiscais, que herda a AUXILIARClass
Em várias telas tenho lá pra mostrar descrição de tabelas, como por exemplo de Modelos de Documentos Fiscais, ICMS CST, PIS CST, Cofins CST, todas num arquivo multitabela.
Código: Selecionar todos
Encontra( "MODFIS" + jplfisc->lfModFis, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri
Encontra( "ICMCST" + jplfisc->lfIcmCst, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri
Encontra( "PISCST" + jplfisc->lfPisCst, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri
Encontra( "COFCST" + jplfisc->lfCofCst, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri
Então vou criar em AUXILIARClass esse método, que já resolve a maioria.
Código: Selecionar todos
METHOD Descricao( cCodigo ) CLASS AUXILIARClass
Encontra( ::cTabelaAuxiliar, "jptabel", "numlan" )
RETURN jptabel->axDescri
Código: Selecionar todos
@ Row(), 32 SAY AuxMODFISClass():Descricao( jplfisc->lfModFis )
@ Row(), 32 SAY AuxICMCSTClass():Descricao( jplfisc->lfIcmCst )
@ Row(), 32 SAY AuxPISCSTClass():Descricao( jplfisc->lfPisCst )
@ Row(), 32 SAY AuxCOFCSTClass():Descricao( jplfisc->lfCofCst )
Código: Selecionar todos
CREATE CLASS AUXTRIPROClass INHERIT AUXILIARClass
DATA cTabelaAuxiliar INIT "TRIPRO"
END CLASS
Ao mesmo tempo que parece inútil, só um parâmetro, evita colocar parâmetro em todo lugar que é usada (validação, seleção, agora descrição, etc).
Melhor do que antigamente, que eu usava DescrTab( cCodigo, 25 ), onde na hora de localizar aonde eu usava a tabela 25 era complicado procurar nos fontes.
Agora, pra procurar aonde usa tributação de produto, só pesquisar nos fontes por AuxTRIPRO.
Tem horas que parece abuso, mas se os fontes estão mais simples, deve ser normal.
Obs. Essa classe de uma linha também é responsável pelo cadastro: inclui, altera, exclui, etc.
Lógico... agora que tem classe própria, vai ter seu próprio método de exclusão, pra verificar se está em uso em algum lugar.
