Unit

16/01/2006

Eu tenho a unit_principal

E ela tá enorme e bagunçada então queria organizar.

Queria fazer assim:

Colocar tipo unit_banco

nessa unit fica as funções do banco de dados

unit_clientes

nessa fica as funções de clientes

mas o problema é que: criei um componente e nesse componente tem a função ex: OnClick

só que essa função não consegui pegar da unit_clientes

Como faço para ela chamar a função??


Rudá

Respostas

16/01/2006

Massuda

O ideal é escrever essas units relacionadas às ´regras do negócio´ sem que elas tenham conhecimento de como é a interface com o usuário.

Por exemplo (bem genérico), uma unit relacionada com clientes não deveria ter um método relacionado com o OnClick de um botão em um form; esse tipo de relacionamento faz mais sentido estar na unit do form do que na de clientes.


Responder Citar

18/01/2006

Rudá

O que eu quero fazer por exemplo é.

Tenho várias funções de sql

Ex:

SqlQuery();

Nela vai ser executado As query

SqlCampo();

Nela vou pegar um valor de um campo

Só que eu quero fazer uma unit para essas funções pq eu irei usar em todo o sistema ela e queria deixar separado, para ter uma melhorar organização!

Tem a unit_sql

Nessa unit vai ter

Query();
Campo();
Etc...

E em algum forme quando precissar usar a função faço o seguinte

Sql.Query();
Sql.Campo();
Etc...

Tem como fazer isso??


Responder Citar

18/01/2006

Adriano Santos

Sim claro, basta vc criar sua unit_sql e declarar no Uses do form de cada form que vc precisar usar ex:



unit MeuFormCadastro;

...

uses
Windows, Classes....unit_sql...etc;

...


Pronto


Responder Citar

18/01/2006

Rudá

E como ficaria minha unit para usar as funções como falei

Sql.Aqui teria todas as funções que coloquei é como se fosse
Form.AAA();


Responder Citar

18/01/2006

Adriano Santos

Um exemplo de unit seria assim:

unit MinhaUnit;

interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, Buttons, ExtCtrls, StdCtrls, ComCtrls, ToolWin, ImgList, DBTables, DB,
  DbGrids, ShellApi, Jpeg, XpMenu, Registry, Grids, Ambiente, Typinfo, DbCtrls;

{Minhas Constantes}
const
  C_DiaSemana: array[1..7, 1..3&93; of string = ((´Domingo´, ´Dom´, ´Domingo´),
    (´Segunda-Feira´, ´Seg´, ´Segunda´),
    (´Terça-Feira´, ´Ter´, ´Terça´),
    (´Quarta-Feira´, ´Qua´, ´Quarta´),
    (´Quinta-Feira´, ´Qui´, ´Quinta´),
    (´Sexta-Feira´, ´Sex´, ´Sexta´),
    (´Sábado´, ´Sab´, ´Sábado´));

  C_Mes: array&91;1..12, 1..2&93; of string = ((´Janeiro´, ´Jan´),
    (´Fevereiro´, ´Fev´),
    (´Março´, ´Mar´),
    (´Abril´, ´Abr´),
    (´Maio´, ´Mai´),
    (´Junho´, ´Jun´),
    (´Julho´, ´Jul´),
    (´Agosto´, ´Ago´),
    (´Setembro´, ´Set´),
    (´Outubro´, ´Out´),
    (´Novembro´, ´Nov´),
    (´Dezembro´, ´Dez´));

  {DONE : Ajustar os estados}
  C_UF: array[1..27, 1..2&93; of string = ((´São Paulo´, ´SP´),
    (´Rio de Janeiro´, ´RJ´),
    (´Minas Gerais´, ´MG´),
    (´Pernanbuco´, ´PE´),
    (´Bahia´, ´BA´),
    (´Espírito Santo´, ´ES´),
    (´Goiás´, ´GO´),
    (´Tocantins´, ´TO´),
    (´Pará´, ´PA´),
    (´Paraná´, ´PR´),
    (´Amazonas´, ´AM´),
    (´Acre´, ´AC´),
    (´Maranhão´, ´MA´),
    (´Mato Grosso´, ´MT´),
    (´Mato Grosso do Sul´, ´MS´),
    (´Piauí´, ´PI´),
    (´Paraíba´, ´PB´),
    (´Distrito Federal´, ´DF´),
    (´Rio Grande do Sul´, ´RS´),
    (´Santa Catarina´, ´SC´),
    (´Rôndonia´, ´RO´),
    (´Rorâima´, ´RR´),
    (´Alagoas´, ´AL´),
    (´Amapá´, ´AP´),
    (´Ceará´, ´CE´),
    (´Rio Grande do Norte´, ´RN´),
    (´Sergipe´, ´SE´));

  {Declaração das Minhas Funções}
function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons:
  TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone;
  Portugues: Boolean = True): Word;

{Minhas funções}

implementation

function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons:
  TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone;
  Portugues: Boolean = True): Word;
var
  I: Integer;
  Mensagem: TForm;
begin
  Mensagem := CreateMessageDialog(Msg, AType, Abuttons);
  Mensagem.HelpContext := IndiceHelp;
  with Mensagem do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if (Components[i&93; is TButton) then
      begin
        if (TButton(Components&91;i&93;).ModalResult = DefButton) then
        begin
          ActiveControl := TWincontrol(Components[i&93;);
        end;
      end;
    end;
    if Portugues then
    begin
      if Atype = mtConfirmation then
        Caption := ´Confirmação´
      else if AType = mtWarning then
        Caption := ´Aviso´
      else if AType = mtError then
        Caption := ´Erro´
      else if AType = mtInformation then
        Caption := ´Informação´;
    end;
  end;
  if Portugues then
  begin
    TButton(Mensagem.FindComponent(´YES´)).Caption := ´&Sim´;
    TButton(Mensagem.FindComponent(´NO´)).Caption := ´&Não´;
    TButton(Mensagem.FindComponent(´CANCEL´)).Caption := ´&Cancelar´;
    TButton(Mensagem.FindComponent(´ABORT´)).Caption := ´&Abortar´;
    TButton(Mensagem.FindComponent(´RETRY´)).Caption := ´&Repetir´;
    TButton(Mensagem.FindComponent(´IGNORE´)).Caption := ´&Ignorar´;
    TButton(Mensagem.FindComponent(´ALL´)).Caption := ´&Todos´;
    TButton(Mensagem.FindComponent(´HELP´)).Caption := ´A&juda´;
  end;
  Result := Mensagem.ShowModal;
  Mensagem.Free;
end;

end.




Responder Citar

18/01/2006

Rudá

Fiz esse exemplo simples

unit unit_sql;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

procedure Query();

implementation

procedure Query();
begin
ShowMessage(´oi´);
end;

end.


Ai coloquei na uses do form unit_sql

E onde declaro como falei Sql. aqui vai as funções que coloquei na unit_sql???


Responder Citar