Fórum Pegar valores de objetos de outras units #223469

30/03/2004

0

Não estou conseguindo capturar valores de objetos de outro form, bom vou postar os codes, a ideía é a seguinte:

quando ele clicar em gerar folha ele chama a classe funcoes_gerar_folha e adiciona os valores do nova_folha nas respectivas variáveis, tem bastante código mas eu acho que eu esta faltando aglo simples, e eu preciso urgente prq tenho q entregar esse projetinho sexta no curso,, já bati a cabeça mtas horas e agora estou pedindo uma ajuda...

nova_folha:

unit nova_folha;

interface

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

type
  Tfrm_folha_de_pagamento = class(TForm)
    grupo_folha: TGroupBox;
    Label1: TLabel;
    msk_nome: TMaskEdit;
    msk_seguros: TMaskEdit;
    msk_dependentes_men: TMaskEdit;
    msk_previdencia: TMaskEdit;
    msk_bonus: TMaskEdit;
    msk_clube: TMaskEdit;
    msk_dependentes: TMaskEdit;
    msk_qt_onibus: TMaskEdit;
    msk_qt_carro: TMaskEdit;
    msk_salario: TMaskEdit;
    msk_vhextras: TMaskEdit;
    msk_hextras: TMaskEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    opt_nenhum: TRadioButton;
    opt_onibus: TRadioButton;
    opt_carro: TRadioButton;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure msk_dependentesChange(Sender: TObject);
    procedure msk_dependentes_menChange(Sender: TObject);
    procedure msk_qt_onibusChange(Sender: TObject);
    procedure msk_qt_carroChange(Sender: TObject);
    procedure msk_salarioChange(Sender: TObject);
    procedure msk_hextrasChange(Sender: TObject);
    procedure msk_vhextrasChange(Sender: TObject);
    procedure msk_bonusChange(Sender: TObject);
    procedure msk_segurosChange(Sender: TObject);
    procedure msk_previdenciaChange(Sender: TObject);
    procedure msk_clubeChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    f: funcoes_;
    cont: integer;
  end;

var
  frm_folha_de_pagamento: Tfrm_folha_de_pagamento;

implementation

{$R *.dfm}

procedure Tfrm_folha_de_pagamento.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  // limpa a variável f
  f.free;
action:=caFree;
end;
procedure Tfrm_folha_de_pagamento.FormCreate(Sender: TObject);
begin
  // Cria a classe na variável f
  f := funcoes_.Create;
end;

procedure Tfrm_folha_de_pagamento.msk_dependentesChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_dependentes.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_dependentes.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_dependentes.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_dependentes.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_dependentes_menChange(
  Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_dependentes_men.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_dependentes_men.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_dependentes_men.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_dependentes_men.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_qt_onibusChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_qt_onibus.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_qt_onibus.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_qt_onibus.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_qt_onibus.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_qt_carroChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_qt_carro.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_qt_carro.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_qt_carro.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_qt_carro.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_salarioChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_salario.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_salario.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_salario.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_salario.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_hextrasChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_hextras.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_hextras.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_hextras.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_hextras.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_vhextrasChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_vhextras.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_vhextras.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_vhextras.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_vhextras.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_bonusChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_bonus.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_bonus.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_bonus.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_bonus.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_segurosChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_seguros.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_seguros.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_seguros.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_seguros.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_previdenciaChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_previdencia.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_previdencia.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_previdencia.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_previdencia.text:= ´´;
  end;
end;

procedure Tfrm_folha_de_pagamento.msk_clubeChange(Sender: TObject);
begin
// Zera o contador
cont:=0;
// Verifica se o campo de texto não está vazio
  if msk_clube.text <> ´´ then
  begin
    // enquanto cont for menor que o número de letras
    // ele executa a verificação
    while cont <= length(msk_clube.Text) do
    begin
    // Chama a função verificar da classe funcoes
    f.verificar(msk_clube.text[cont]);
    cont:=cont+1;
    end;
    // Se foi digitado algum caractere inválido ele zera o campo
    if caracter_invalido=true then
    msk_clube.text:= ´´;
  end;
end;

end.


funcoes

unit funcoes;

interface

  uses
  Windows, Messages, SysUtils, Variants, Graphics, Controls, Forms,
  Dialogs, Menus, ImgList, ToolWin, ComCtrls;

  type  funcoes_=class
  public
    Function verificar(Letra: char): Boolean;
    Function gerar_folha(): Boolean;
  end;
var
  new_nome : string;
  new_dep : integer;
  new_dep_men : integer;
  new_nenhum : boolean;
  new_onibus : boolean;
  new_carro : boolean;
  new_carro_dist : integer;
  new_onibus_qt : integer;
  new_salario : double;
  new_hextras : integer;
  new_vextras : double;
  new_bonus : double;
  new_seguros : double;
  new_previdencia : double;
  new_clube : double;
  erro:boolean;
  caracter_invalido:boolean;

implementation

uses Classes, nova_folha;

function funcoes_.verificar(Letra: char) : boolean;
// Cria uma constante com os caracteres inválidos
// usa-se o constutor de tipos set para definir os caracteres
const
  caracteres: set of Char = [´a´..´z´,´A´..´Z´,´~´,´´´,´!´,´@´,´´,´$´,´¬´,´^´,´&´,´*´,´(´,´)´,´_´,´+´,´-´,´=´,´}´,´{´,´]´,´[´,´"´,´;´,´:´,´/´,´"´,´?´,´\´,´|´];
begin
  // Por enquanto não existe nada inválido
  caracter_invalido:=false;
    // Verifica se a letra passada para função se encontra
    // na lista de caracteres inválidos
    if Letra in caracteres then
    begin
      //Caso se encontra apresenta a mensagem
      showmessage(´Caracterer Inválido´);
      // e define como caractere inválido existente
      caracter_invalido:=true;
    end;
end;

Function funcoes_.gerar_folha : boolean;
begin
// Inicialmente nào temos erros
erro:=false;
// Abaixo as condições que irão verificar se existe algum
// Campo obrigatório em branco
showmessage(frm_folha_de_pagamento.msk_nome.text);
  if frm_folha_de_pagamento.msk_nome.text = ´´ then erro:= true;
  if frm_folha_de_pagamento.msk_salario.text = ´´ then erro:= true;
  if (frm_folha_de_pagamento.msk_hextras.Text = ´´) and (frm_folha_de_pagamento.msk_vhextras.Text <> ´´) then erro:= true;
  if (frm_folha_de_pagamento.opt_onibus.Checked = true) and (frm_folha_de_pagamento.msk_qt_onibus.text = ´´) then erro:=true;
  if (frm_folha_de_pagamento.opt_carro.Checked = true) and (frm_folha_de_pagamento.msk_qt_carro.text = ´´) then erro:= true;


  // Apenas se não houver nenhum erro nos campos
  // obrigatórios damos os valores as variáveis
  if erro = true then
  begin
  Application.MessageBox(´Existem Campos Obrigatórios com valores inválidos ou em branco´, ´Aviso´, MB_ICONERROR);
  frm_folha_de_pagamento.Destroying;
  end
  else
  begin
  new_nome := frm_folha_de_pagamento.msk_nome.Text;
  if frm_folha_de_pagamento.msk_dependentes.text <> ´´ then new_dep := strtoint(frm_folha_de_pagamento.msk_dependentes.Text);
  if frm_folha_de_pagamento.msk_dependentes_men.text <> ´´ then new_dep_men := strtoint(frm_folha_de_pagamento.msk_dependentes_men.text) ;
  new_nenhum := frm_folha_de_pagamento.opt_nenhum.Checked ;
  new_onibus := frm_folha_de_pagamento.opt_onibus.Checked ;
  new_carro := frm_folha_de_pagamento.opt_carro.Checked ;
  if frm_folha_de_pagamento.msk_qt_carro.text <> ´´ then new_carro_dist := strtoint(frm_folha_de_pagamento.msk_qt_carro.text) ;
  if frm_folha_de_pagamento.msk_qt_onibus.text <> ´´ then new_onibus_qt := strtoint(frm_folha_de_pagamento.msk_qt_carro.text) ;
  if frm_folha_de_pagamento.msk_salario.text <> ´´ then new_salario := strtofloat(frm_folha_de_pagamento.msk_salario.text) ;
  if frm_folha_de_pagamento.msk_hextras.text <> ´´ then new_hextras := strtoint(frm_folha_de_pagamento.msk_hextras.text) ;
  if frm_folha_de_pagamento.msk_vhextras.text <> ´´ then new_vextras := strtofloat(frm_folha_de_pagamento.msk_vhextras.Text) ;
  if frm_folha_de_pagamento.msk_bonus.text <> ´´ then new_bonus := strtofloat(frm_folha_de_pagamento.msk_bonus.text) ;
  if frm_folha_de_pagamento.msk_seguros.text <> ´´ then new_seguros := strtofloat(frm_folha_de_pagamento.msk_seguros.text) ;
  if frm_folha_de_pagamento.msk_previdencia.text <> ´´ then new_previdencia := strtofloat(frm_folha_de_pagamento.msk_previdencia.text) ;
  if frm_folha_de_pagamento.msk_clube.text <> ´´ then new_clube := strtofloat(frm_folha_de_pagamento.msk_clube.text) ;
  end;
end;
end.


Gerar folha

unit gerar_folha;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, funcoes;

type
  Tfrm_gerar_folha = class(TForm)
    list_res: TListView;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    f : funcoes_;
  end;

var
  frm_gerar_folha: Tfrm_gerar_folha;

implementation

{$R *.dfm}

procedure Tfrm_gerar_folha.Button1Click(Sender: TObject);
begin
with list_res.Items.Add do
begin
  Caption:= ´Teste´;
  SubItems.Add(Caption);
end;
end;

procedure Tfrm_gerar_folha.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
// limpa a variável f
f.free;
action:=caFree;
end;

procedure Tfrm_gerar_folha.FormShow(Sender: TObject);
begin
// Cria a instância e joga para a var f
f:=funcoes_.Create;
// Chama a função gerar folha que está na classe funções
f.gerar_folha;
if erro=true then close;
end;

end.



Mjs

Mjs

Responder

Posts

31/03/2004

Mjs

8) Puxa ninguém,, eu estou quebrando a cabeça e num consigo ninguém pode me ar uma mão? Creio que não seja complicado.. deve estar faltando algo simples para eu poder recuperar os valores.


Responder

Gostei + 0

31/03/2004

Flaviosan

Caro mjs, não sei se é isso o que procura mas notei que esta faltando declarar na clausula Uses o nome das units que voce esta usando. Para fazer isso use o dialogo ´Use Unit´ (Alt+F11) e escolha a unit que voce quer usar.
Espero ter ajudado.


Responder

Gostei + 0

31/03/2004

Mjs

Caro mjs, não sei se é isso o que procura mas notei que esta faltando declarar na clausula Uses o nome das units que voce esta usando. Para fazer isso use o dialogo ´Use Unit´ (Alt+F11) e escolha a unit que voce quer usar. Espero ter ajudado.


Legal, vou ver em ksa se resolve... brigadão.. a janete aqui do fórum também me passou uma outra ideia bem bacana.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar