Nenhum comentário


Data-Aware

Os componentes Data-Aware também podem ser melhorados e incrementados, como o DBNavigator, que é um ótimo componente com botões de navegação e de manipulação dos registros (para inserir, excluir, editar etc) de uma tabela, onde podemos adicionar um Caption para cada botão, bem como alterar o ícone.

 

Primeiramente iremos criar a função que carregará a imagem do botão. Crie na seção private do formulário uma variável (“aFigura”) do tipo TBitmap, e na seção public adicione a seguinte função:

 

function CarregaFigura (aArquivo: string): TBitmap;

 

E implemente-a com o seguinte código:

 

function TForm5.CarregaFigura(aArquivo: string):

  TBitmap;

begin

  { Carrega figura para o botão do DBNavigator }

  if FileExists(aArquivo) then

    aFigura.LoadFromFile(aArquivo)

  else

    ShowMessage('Arquivo não encontrado: '+ aArquivo);

  Result := aFigura;

end;

 

No código anterior, carregamos o arquivo passado como parâmetro. Caso o caminho do arquivo for inválido, é mostrada uma mensagem avisando o usuário. Adicione na seção type, antes da declaração do formulário, o código:

 

TNewNavigator = class(TDBNavigator);

 

E no evento OnCreate do formulário digite:

 

procedure TForm5.FormCreate(Sender: TObject);

var

  Navegador: TNavigateBtn;

begin

  { Declare Buttons em uses }

  aFigura := TBitmap.Create;

  for Navegador := Low(TNavigateBtn) to

    High(TNavigateBtn) do

  with TNewNavigator(DBNavigator1).Buttons[Navegador] do

  begin

    { Altera o Caption do componente }

    case Index of

      nbFirst : Caption := 'Primeiro';

      nbPrior : Caption := 'Anterior';

      nbNext : Caption := 'Proximo';

      nbLast : Caption := 'Ultimo';

      nbInsert : Caption := 'Novo';

      nbDelete : Caption := 'Excluir';

      nbEdit : Caption := 'Editar';

      nbPost : Caption := 'Salvar';

      nbCancel : Caption := 'Cancelar';

      nbRefresh : Caption := 'Atualizar';

    end;

    { Altera a posição da figura }

    Layout := blGlyphBottom ;

    { Altere o Glyph do botão }

    Glyph := CarregaFigura(Caption+'.bmp');

    Hint := Caption;

    ShowHint := True;

    DBNavigator1.Height := 50;

    DBNavigator1.Width := 490;

  end;

end;

 

Quando criamos uma classe dentro do escopo do formulário, podemos acessar os métodos, funções e propriedades da classe que estão protegidas (seção protected). Assim realizamos um laço nos botões, acessando a propriedade Index da lista de botões e informando um novo Caption para cada botão.

 

Após o laço, alteramos o estilo do DBNavigator (propriedade Layout), e carregamos as figuras para cada botão. Note que colocamos como nome do arquivo, o Caption do botão mais a extensão. Por fim, colocamos na propriedade Hint o mesmo valor de Caption e alteramos o tamanho do DBNavigator.

Rode e visualize os ícones e rótulos dos botões do DBNavigator (Figura).

 

 

Dica: você pode criar o seu próprio DBNavigator, para isso crie uma nova classe, descendente de TDBNavigator e utilize a dica anterior. Para não precisar carregar as imagens, faça uma cópia do arquivo dbctrls.res, que está na pasta Lib do diretório de instalação do Delphi.

 

Altere as imagens desse arquivo (utilize o Image Editor que acompanha o Delphi), renomei-o para o mesmo nome da nova classe, copie para o mesmo diretório dos arquivos da nova classe. Compile e instale o componente, assim você terá um novo componente incrementado do DBNavigator.

 

Para os componentes DBLookupListBox e DBLookupComboBox retornaremos mais de um campo na propriedade ListField. Para isso, digite o nome dos campos e separe-os por ponto-e-vírgula (;) na propriedade ListField.

 

Na Figura temos um exemplo, onde foram utilizados os arquivos employee.xml e customer.xml que acompanham o Delphi. No DBLookupComboBox para aumentar o tamanho da lista utilize a propriedade DropDownRows e para a largura utilize DropDownWidth.