Olá pessoal, hoje queria partilhar com os amantes do Delphi um artigo que é bastante simples, porém ele auxilia muito em migrações de componentes.

Como assim?

Supondo que há 3 anos você fez um projeto em Delphi com DBEdit, DBCombobox, e outros DB's, ou seja, os conhecidos DBWare. Hoje você já consegue trabalhar Orientado a Objetos e decide migrar o sistema mas não gostaria de confeccionar o Layout do Sistema novamente, e queria modificar todos os DBEdits, DBCombobox e os outros DB's para Edits, Combobox, etc.

É uma tarefa extremamente simples de se fazer, mas requer muita atenção. Vamos ao exemplo de como fazer isso.

Criando um Formulário com 3 Componentes DBEdits e 1 DBCombobox, veja o layout :

Layout do Exemplo
Figura 1. Layout do Exemplo.

Note que não fiz ligação de DataSource e outros componentes, pois isso não é necessário.

Agora e a mágica?

Vocês poderiam falar, poxa é só apagar e colocar os Edits. Mas e ae? TabOrder, tamanho e posição? Fazer tudo novamente?

Vem a dica agora. Clique com o botão direito do mouse sobre qualquer área varia do formulário, e localiza a opção View as Text.

View as Text
Figura 2. View as Text.

O que é isso?

O layout do nosso formulário fica armazenado nos arquivos de extensão .DFM. Experimente abrir este arquivo no "BLOCO DE NOTAS", você irá ver exatamente a mesma coisa que o View as Text.


object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Cadastro de Cliente'
  ClientHeight = 225
  ClientWidth = 518
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -20
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 120
  TextHeight = 24
  object Label1: TLabel
    Left = 129
    Top = 131
    Width = 33
    Height = 24
    Caption = 'CPF'
  end
  object Label2: TLabel
    Left = 101
    Top = 43
    Width = 61
    Height = 24
    Caption = 'C'#243'digo'
  end
  object Label3: TLabel
    Left = 110
    Top = 91
    Width = 52
    Height = 24
    Caption = 'Nome'
  end
  object Label4: TLabel
    Left = 27
    Top = 171
    Width = 135
    Height = 24
    Caption = 'Tipo de Cliente'
  end
  object DBEdtCodigo: TDBEdit
    Left = 184
    Top = 40
    Width = 177
    Height = 32
    TabOrder = 0
  end
  object DBEdtNome: TDBEdit
    Left = 184
    Top = 88
    Width = 305
    Height = 32
    TabOrder = 1
  end
  object DBEdtCPF: TDBEdit
    Left = 184
    Top = 128
    Width = 121
    Height = 32
    TabOrder = 2
  end
  object DBCmbTipoCliente: TDBComboBox
    Left = 184
    Top = 168
    Width = 305
    Height = 32
    TabOrder = 3
  end
end
Listagem 1. Texto completo do arquivo .DFM

Bom agora que saber como localizar o layout do nosso formulário, vamos fazer a modificação dos componentes DBEdits e DBCombobox para Edits e Combobox.

Primeiramente vamos simplesmente dar um Replace na Palavra TDBEdit para TEdit, e clicamos no "Replace All"

Replace de TDBEdit para TEdit
Figura 3. Replace de TDBEdit para TEdit.

Fazemos a mesma coisa para o TDBCombobox e TCombobox, e clicamos no "Replace All"

Replace de TDBCombobox para TCombobox
Figura 4. Replace de TDBCombobox para TCombobox.

Ao finalizar os Replaces, devemos agora voltar o modo Designer, clicando com o Botão direito sobre qualquer parte do Editor e indo na opção "View as Form", ou então ALT+F12.

View as Form
Figura 5. View as Form.

Para finalizar precisamos fazer a mesma coisa na nossa Unit, ou seja, dar o Replace em TDBEdit e TDBCombobox


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Mask;

type
  TForm1 = class(TForm)
    DBEdtCodigo: TDBEdit;
    DBEdtNome: TDBEdit;
    DBEdtCPF: TDBEdit;
    DBCmbTipoCliente: TDBComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
Listagem 2. Layout Atual com o TDBEdits e TDBCombobox

Agora usando o Replace, ou neste caso o Refacoty para modificar os textos iguais, CTRL + SHIF + J, não vou entrar neste mérito sobre Refactory, teremos o seguinte código :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Mask;

type
  TForm1 = class(TForm)
    DBEdtCodigo: TEdit;
    DBEdtNome: TEdit;
    DBEdtCPF: TEdit;
    DBCmbTipoCliente: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
Listagem 3. Layout novo com os TEdits e o TCombobox

Conclusão

Desta forma conseguimos ter em nosso projeto um reaproveitamento dos formulários sem ter "muito trabalho". É uma solução rápida.

Fico por aqui, um abraço e até a próxima.