XSystemX
Usuário XPZ
Neste artigo que vou fazer agora é meio complicado.
Se você já sabe como criar Function e Procedure fica mais fácil.
Logo quando você inicia um form(formulário) você têm isso em mãos:
CODE
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
Agora vou explicar cada linha:
CODE
// Aqui temos a linha em que indica qual arquivo esta salvo
unit Unit1;
// Aqui é onde fica os metodos do botoes e etc
interface
// Aqui são o que o formulario usa
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
// Aqui é onde fica declarado as classes
type
//Aqui cria a classe do nosso formulario
TForm1 = class(TForm)
// Aqui são as funcions/var/proriedades/proc que so podem ser usadas nesse formulario
private
{ Private declarations }
// E aqui a que são vistas em todas OBS: Para usar você precisa colocar por exemplo:
// form1.NOME_DA_FUNCTION
public
{ Public declarations }
end;
// Aqui são as variaveis globais
var
Form1: TForm1;
// E aqui os codigos :/
implementation
// Aqui são os arquivos incluidos, nesse caso, seria o dfm(arquivo onde fica os lugares do componentes).
{$R *.dfm}
end.
semi-globais
Bom espero que você já saibam utilizar function e etc. Agora vamos aprender como usar variáveis semi-globais.
Após public do form1 digite:
CODE
public
var_publica: string;
Agora no Form2 clique duas vezes no formulário:
CODE
procedure TForm2.FormCreate(Sender: TObject);
begin
form1.var_publica := 'STRING';
end;
Não se esqueçam de adicionar no uses do form2(Em qualquer um deles)
CODE
uses
unit1;
Pronto!
USES
Agora vamos falar um pouco sobre uses
As uses são os arquivos que o código usa para compilar.
Após interface há uma. Essa você pode usar em qualquer lugar: Inclusive antes de implementation
Após implementation você pode adicionar outra. Essa somente pode ser utilizada após implementation
CLASS
Class são as coisas mais chatas e boas ao mesmo tempo!
Após type você declara as classes. Pode ser de vários jeitos, mas o que eu sei é assim:
CODE
type como_esta = (nadando, parado);
Agora no numa procedure qualquer:
CODE
procedure TForm1.Button1Click(Sender: TObject);
var
estado_do_meu_irmão: como_esta;
begin
estado_do_meu_irmão := nadando;
if (estado_do_meu_irmão = nadando) then
estado_do_meu_irmão := parado;
end;
Pronto!
PROPERTY
Property são as propriedades do form1, aquelas mesmo, que aparecem na listinha.
Dependendo do lugar em que foi declarada fica igual o uses.
Faça o seguinte no form1:
Após:
CODE
public
var_publica: string;
{ Public declarations }
Adicione:
CODE
property meu_nome: string read var_publica write var_publica;
Após(no form2):
CODE
form1.var_publica := 'STRING';
Adicione:
CODE
form1.meu_nome := 'STRIGN';
Ai você me pergunta, "Ué, não é a mesma coisa", e é mesmo. Porém.
Agora volte no form1 e após private adicione:
CODE
protected
var_texto_protegido: string;
Ficando:
CODE
type como_esta = (nadando, parado);
private
{ Private declarations }
protected
var_texto_protegido: string;
public
var_publica: string;
{ Public declarations }
property meu_nome: string read var_texto_protegido write var_texto_protegido;
end;
Agora você já pode modificar variáveis protegidas.
Agora modifique tudo por:
CODE
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
type como_esta = (nadando, parado);
private
{ Private declarations }
function getVar: String;
procedure setVar(texto: string);
protected
var_texto_protegido: string;
public
var_publica: string;
{ Public declarations }
property meu_nome: string read getVar write setVar;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
estado_do_meu_irmão: como_esta;
begin
estado_do_meu_irmão := nadando;
if (estado_do_meu_irmão = nadando) then
estado_do_meu_irmão := parado;
end;
function TForm1.getVar: String;
begin
Result := var_texto_protegido;
end;
procedure TForm1.setVar(texto: string);
begin
var_texto_protegido := texto;
end;
end.
Acho que irão entender
property meu_nome: string read getVar write setVar;
No Read é onde ele irá ler o valor, e no write é onde ele seta. Também podemos colocar mais um(que eu conheço)
property meu_nome: string read getVar write setVar default = 'nada';
Assim teremos como receber algum valor sem mesmo ser "setado"
Agora vamos modifcar a procedure setVar
CODE
procedure TForm1.setVar(texto: string);
begin
if (texto <> '') then
var_texto_protegido := texto;
end;
A mesma coisa com o getVar:
CODE
if (var_texto_protegido = 'nada') then
Result := ''
else
Result := var_texto_protegido;
Pronto!
Achei um site em ingles a pouco tempo, ta melhor que meu tutorial:
Se você já sabe como criar Function e Procedure fica mais fácil.
Logo quando você inicia um form(formulário) você têm isso em mãos:
CODE
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
Agora vou explicar cada linha:
CODE
// Aqui temos a linha em que indica qual arquivo esta salvo
unit Unit1;
// Aqui é onde fica os metodos do botoes e etc
interface
// Aqui são o que o formulario usa
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
// Aqui é onde fica declarado as classes
type
//Aqui cria a classe do nosso formulario
TForm1 = class(TForm)
// Aqui são as funcions/var/proriedades/proc que so podem ser usadas nesse formulario
private
{ Private declarations }
// E aqui a que são vistas em todas OBS: Para usar você precisa colocar por exemplo:
// form1.NOME_DA_FUNCTION
public
{ Public declarations }
end;
// Aqui são as variaveis globais
var
Form1: TForm1;
// E aqui os codigos :/
implementation
// Aqui são os arquivos incluidos, nesse caso, seria o dfm(arquivo onde fica os lugares do componentes).
{$R *.dfm}
end.
semi-globais
Bom espero que você já saibam utilizar function e etc. Agora vamos aprender como usar variáveis semi-globais.
Após public do form1 digite:
CODE
public
var_publica: string;
Agora no Form2 clique duas vezes no formulário:
CODE
procedure TForm2.FormCreate(Sender: TObject);
begin
form1.var_publica := 'STRING';
end;
Não se esqueçam de adicionar no uses do form2(Em qualquer um deles)
CODE
uses
unit1;
Pronto!
USES
Agora vamos falar um pouco sobre uses
As uses são os arquivos que o código usa para compilar.
Após interface há uma. Essa você pode usar em qualquer lugar: Inclusive antes de implementation
Após implementation você pode adicionar outra. Essa somente pode ser utilizada após implementation
CLASS
Class são as coisas mais chatas e boas ao mesmo tempo!
Após type você declara as classes. Pode ser de vários jeitos, mas o que eu sei é assim:
CODE
type como_esta = (nadando, parado);
Agora no numa procedure qualquer:
CODE
procedure TForm1.Button1Click(Sender: TObject);
var
estado_do_meu_irmão: como_esta;
begin
estado_do_meu_irmão := nadando;
if (estado_do_meu_irmão = nadando) then
estado_do_meu_irmão := parado;
end;
Pronto!
PROPERTY
Property são as propriedades do form1, aquelas mesmo, que aparecem na listinha.
Dependendo do lugar em que foi declarada fica igual o uses.
Faça o seguinte no form1:
Após:
CODE
public
var_publica: string;
{ Public declarations }
Adicione:
CODE
property meu_nome: string read var_publica write var_publica;
Após(no form2):
CODE
form1.var_publica := 'STRING';
Adicione:
CODE
form1.meu_nome := 'STRIGN';
Ai você me pergunta, "Ué, não é a mesma coisa", e é mesmo. Porém.
Agora volte no form1 e após private adicione:
CODE
protected
var_texto_protegido: string;
Ficando:
CODE
type como_esta = (nadando, parado);
private
{ Private declarations }
protected
var_texto_protegido: string;
public
var_publica: string;
{ Public declarations }
property meu_nome: string read var_texto_protegido write var_texto_protegido;
end;
Agora você já pode modificar variáveis protegidas.
Agora modifique tudo por:
CODE
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
type como_esta = (nadando, parado);
private
{ Private declarations }
function getVar: String;
procedure setVar(texto: string);
protected
var_texto_protegido: string;
public
var_publica: string;
{ Public declarations }
property meu_nome: string read getVar write setVar;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
estado_do_meu_irmão: como_esta;
begin
estado_do_meu_irmão := nadando;
if (estado_do_meu_irmão = nadando) then
estado_do_meu_irmão := parado;
end;
function TForm1.getVar: String;
begin
Result := var_texto_protegido;
end;
procedure TForm1.setVar(texto: string);
begin
var_texto_protegido := texto;
end;
end.
Acho que irão entender
property meu_nome: string read getVar write setVar;
No Read é onde ele irá ler o valor, e no write é onde ele seta. Também podemos colocar mais um(que eu conheço)
property meu_nome: string read getVar write setVar default = 'nada';
Assim teremos como receber algum valor sem mesmo ser "setado"
Agora vamos modifcar a procedure setVar
CODE
procedure TForm1.setVar(texto: string);
begin
if (texto <> '') then
var_texto_protegido := texto;
end;
A mesma coisa com o getVar:
CODE
if (var_texto_protegido = 'nada') then
Result := ''
else
Result := var_texto_protegido;
Pronto!
Achei um site em ingles a pouco tempo, ta melhor que meu tutorial:
Editado por um moderador: