28 de out. de 2008

Embutindo inteligência nos TFrames

Uma das coisas que sinto falta quando uso frames é a possibilidade de inicialização dos mesmos sem depender de códigos externos. Não sei porque cargas d'água Frames não tem eventos Oncreate e OnDestroy publicados.

Mas nada está perdido. Com alguns "truques" da POO é possível estender um frame de tal forma que o mesmo possa ser um pouco mais esperto.

Imaginemos uma situação hipotética aonde queremos um frame que seja capaz de exibir um dataset num DBGrid, abrir o dataset no momento da construção do form, e de fechá-lo no momento em que nosso form for destruído, sem nossa intervenção.



Já que um TFrame é herdado de TObject, com certeza o mesmo tem construtor e destrutor, e uma solução para resolver nosso problema e ter nosso frame mais independente é dar um override nesses métodos.

Criamos então nossos overrides para métodos já existentes e que serão chamados automaticamente e aproveitamos a oportunidade para fazer com que nosso frame se auto-inicialize e se auto-finalize, sem precisar intervir no frame quando formos usá-los em nossos forms.




Em nosso exemplo hipotético, nosso frame abre e fecha o dataset automaticamente, bastando apenas colá-lo em nosso form.


Com certeza essa técnica abre diversas possibilidades. 

Bom proveito...

Um comentário:

  1. Hello Jackson Could You Write the messages in English because as You know, People from all over the world access you blog, and I if you write in English every body can Understand.

    Thanks
    this is my humble Suggestion

    ResponderExcluir