Ir para conteúdo
Fórum Script Brasil
  • 0

Delphi: Functions/procedures/property/Private, etc...


Rento

Pergunta

Como vocês vão me ajuda(nossa que confiança) fiz este tutorial pra não ficar "sangue-suga"

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:

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:
// 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:
public
          var_publica: string;
Agora no Form2 clique duas vezes no formulário:
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)
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:
type como_esta = (nadando, parado);
Agora no numa procedure qualquer:
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:
public
        var_publica: string;
        { Public declarations }
Adicione:
property meu_nome: string read var_publica write var_publica;
Após(no form2):
form1.var_publica := 'STRING';
Adicione:
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:
protected
        var_texto_protegido: string;
Ficando:
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:
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 :D 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
procedure TForm1.setVar(texto: string);
  begin
     if (texto <> '') then
         var_texto_protegido := texto;
  end;
A mesma coisa com o getVar:
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:

http://www.delphibasics.co.uk/Article.asp?Name=OOExample

Editado por Rento
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...