Pegar valores de objetos de outras units
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:
funcoes
Gerar folha
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
Curtidas 0
Respostas
Mjs
30/03/2004
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.
GOSTEI 0
Flaviosan
30/03/2004
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.
Espero ter ajudado.
GOSTEI 0
Mjs
30/03/2004
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.
GOSTEI 0