Array
(
)

Unit

Rudá
   - 16 jan 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??


Massuda
   - 16 jan 2006

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.


Rudá
   - 18 jan 2006

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??


Adriano Santos
   - 18 jan 2006

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


Rudá
   - 18 jan 2006

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();


Adriano Santos
   - 18 jan 2006

Um exemplo de unit seria assim:

#Código


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] 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[1..12, 1..2] 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] 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] is TButton) then
begin
if (TButton(Components[i]).ModalResult = DefButton) then
begin
ActiveControl := TWincontrol(Components[i]);
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.




Rudá
   - 18 jan 2006

Fiz esse exemplo simples

#Código

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???