Botões de navegação
20/12/2005
0
Prezados estou implementando botões de navegação de registros, sendo que minha rotina esta certo + não desabilita o botão no final do registro ou no primeiro registro alguem tem uma rotina mais eficiente vide codigo abaixo:
[b:98f08d26e7]<[/b:98f08d26e7] :
If not(ttbTempSoc.Active)Then
PAbreTabTempSoc(False);
ttbTempSoc.Prior;
If ttbTempSoc.RecNo = 1 Then
tbAnterior.Enabled := False
Else
tbAnterior.Enabled := True;
tbProximo.Enabled := True;
PAtribuiVlrSocios;
[b:98f08d26e7]>[/b:98f08d26e7]:
If not(ttbTempSoc.Active) Then
PAbreTabTempSoc(False);
ttbTempSoc.Next;
If ttbTempSoc.Recno = ttbTempSoc.RecordCount Then
tbProximo.Enabled := False
Else
tbProximo.Enabled := True;
tbAnterior.Enabled := True;
PAtribuiVlrSocios;
Jonasaf
Posts
21/12/2005
Eixox
Se os seus botões de navegação devem ser personalizados, mude o arquivo de recursos que contém a imagem deles.
Se você quer adicionar propriedades, crie um novo componente descendente do DBNavigator é muito mais prático.
O objetivo do Delphi é justamente esse, não crie o que já foi criado - melhore-o.
Abraços[/b]
21/12/2005
Michael
Todavia, vc pode melhorar seu código da seguinte forma:
(...) tbAnterior.Enabled := not ttbTempSoc.Bof; tbProximo.Enabled := not ttbTempSoc.Eof;
[]´s
21/12/2005
Pain_elemental
Se você quiser componentizar, você terá que ter uma instância de uma classe herdada do TDataLink para notificar seu componente das alterações, sobreescrevendo o método DataSetChanged para notificar o seu componente que houveram mudanças nos dados.
Se você quiser usar somente em um form, ou em forms herdados desse, você pode colocar no evento AfterScroll do DataSet em questão para verificar se chegou no início ou no final do dataset.
ficaria assim no AfterScroll:
procedure TForm1.ttbTempSocAfterScroll(DataSet: TDataSet); begin tbAnterior.Enabled := not ttbTempSoc.Bof; tbProximo.Enabled := not ttbTempSoc.Eof; end;
21/12/2005
Michael
Quanto a usar Ctrl+C e Ctrl+V como alternativa, bom, sem comentários...
Criar um novo componente implmentando TDataLink será muito mais trabalhoso do que derivar um de TDBNavigator e ocultar os botões desejados.
[]´s
21/12/2005
Pain_elemental
Overhead dos objetos gdi do windows, das janelas (entenda window handles, ja q pro windows ateh os check boxes sao janelas) que estarao no loop de mensagens, e uma infinidade de coisas que afetam a performance. Eu não suporto desperdiçar recursos nem deixo os meus programadores fazê-lo, já que são boas práticas de programação e devem prevalecer em todas as situações. Quanto ao código, realmente o otimizador do delphi elimina. Mas nao confie no otimizador, se vc for trabalhar com outra linguagem na qual o otimizador nao seja tao eficiente, você sofrerá para se readaptar, ou terá muita coisa inútil no seu código.
Componentes devem ser usados tendo em vista a reutilização, encapsulamento e polimorfismo, você nao vai criar uma classe para cada tarefa que nao for repetida. Na criacao de um novo componente usando o tdatalink vc vai ter pleno controle sobre o que está acontecendo. e a solução mais prática para o caso dele é usando o AfterScroll.
Clique aqui para fazer login e interagir na Comunidade :)