Passar dados de um campo de um formulário pra outro formulário...

Delphi

25/07/2014

olá pessoal, sou novato aqui e estou precisando muito de ajuda... bom a principio a pergunta que fiz já a tempos que foi respondidas em outros foruns, a questão é que sou iniciante também em delphi, mais sou curioso no assunto, bem vejam só estou desenvolvendo uma aplicação de cadastro de clientes, nessa aplicação será necessário digitalizar varias imagens pra cada cliente, então o que fiz, no banco de dados criei uma tabela pra os dados do cliente e uma tabela para as imagens que forem digitalizadas, no formulário onde insiro os dados dos clientes tipo nome, cpf e etc... coloquei um botão que abre um outro formulário onde posso digitalizar as imagens, bem o que preciso afinal... é que ao clicar no botão conforme a imagem abaixo os dados código e nome do cliente sejam passados pra o formulário de digitalização vejam a imagem abaixo...
[img:descricao=exemplo]http://arquivo.devmedia.com.br/forum/imagem/378260-20140725-032710.png[/img]


pessoal me ajudem...
Alexsandro

Alexsandro

Curtidas 0

Melhor post

Itamar Souza

Itamar Souza

25/07/2014

Um exemplo simples:


unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    RecebeCodigo :String;  //vai passar o conteúdo de outro forme
    RecebeNome   :String;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormActivate(Sender: TObject);
begin
  Label1.Caption := RecebeCodigo;
  Label2.Caption := RecebeNome;
end;

end.






unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 //formulário que vai enviar os dados
  try
    Form2 :=TForm2.Create(Application);
    Form2.RecebeCodigo := '12213';
    Form2.RecebeNome   := 'nome';
    Form2.ShowModal;
  Finally
    FreeAndNil(Form2);
  end;

end;

end.


GOSTEI 1

Mais Respostas

Alexsandro

Alexsandro

25/07/2014

Então pessoal... como posso resolver esse pequeno pro...
GOSTEI 0
Itamar Souza

Itamar Souza

25/07/2014

Bom dia

Você tem varias formas de fazer isso

Um exemplo: na tela que vai receber as informações, você criar duas variáveis publicas.

public
{ Public declarations }
recebeCodigo :string;
recebeNome :string;
end;

E no onActivate deste formulário você passar o conteúdo delas para os campos que precisa.

No formulário que vai passar a informação você consegue passar as informações para a variável.

Veja se ajuda
GOSTEI 0
Alexsandro

Alexsandro

25/07/2014

Opá Itamar!... como disse sou curioso no assunto, mas, não estou sabendo fazer da maneira correta, e já pesquisei em vários foruns eles até dizem como fazer, o problema é que não sei como...
não sei se seria pedir muito, mas teria como disponibilizar um exemplo?
GOSTEI 0
Alexsandro

Alexsandro

25/07/2014

Itamar obrigado por responder porém está apresentando algumas falhas no formulário que ira receber do dados... veja as mensagens de erro.

[Error] uPrincipal.pas(255): Unknown directive: 'private'
[Error] uPrincipal.pas(257): Unknown directive: 'public'
[Error] uPrincipal.pas(259): Unknown directive: 'RecebeCodigo'
[Error] uPrincipal.pas(259): Declaration expected but ':' found
[Error] uPrincipal.pas(269): Identifier redeclared: 'TfrmPrincipal.FormActivate'
[Error] uPrincipal.pas(270): Undeclared identifier: 'RecebeCodigo'
[Error] uPrincipal.pas(271): Undeclared identifier: 'RecebeNome'
[Error] uPrincipal.pas(273): '.' expected but ';' found
[Fatal Error] UClientes.pas(82): Could not compile used unit 'C:\Users\alex\Desktop\Exemlo_Scanner\uPrincipal.pas'


o que foi que eu fiz de errado agora! rsrs
GOSTEI 0
Alexsandro

Alexsandro

25/07/2014

esse é o codigo do formulário que quero que receba os dados

unit uPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, AcquireImage, ClipBrd, Jpeg, FMTBcd, DBXpress, DB,
  Buttons, Grids, DBGrids, DBClient, Provider, SqlExpr, DBCtrls, Mask,
  Menus;

type
  TfrmPrincipal = class(TForm)
    aiScanearImagem: TAcquireImage;
    sdsDocumentos: TSQLDataSet;
    sqlConexao: TSQLConnection;
    dspDocumentos: TDataSetProvider;
    cdsDocumentos: TClientDataSet;
    dtsDocumentos: TDataSource;
    DBGrid1: TDBGrid;
    sdsDocumentosDESCRICAO: TStringField;
    sdsDocumentosNOME_ARQUIVO: TStringField;
    cdsDocumentosDESCRICAO: TStringField;
    cdsDocumentosNOME_ARQUIVO: TStringField;
    dbImagem: TDBImage;
    sdsDocumentosDOCUMENTO: TBlobField;
    cdsDocumentosDOCUMENTO: TBlobField;
    Panel1: TPanel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    btnIncluir: TSpeedButton;
    btnAlterar: TSpeedButton;
    btnGravar: TSpeedButton;
    btnCancelar: TSpeedButton;
    btnExcluir: TSpeedButton;
    btnSair: TSpeedButton;
    DBNavigator1: TDBNavigator;
    btnCaptura: TSpeedButton;
    GroupBox1: TGroupBox;
    dbeDescricao: TDBEdit;
    dbeArquivo: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    MainMenu1: TMainMenu;
    Arquivo1: TMenuItem;
    mnuSair1: TMenuItem;
    Editar1: TMenuItem;
    mnuInserir1: TMenuItem;
    mnuAlterar1: TMenuItem;
    N1: TMenuItem;
    mnuGravar1: TMenuItem;
    mnuCancelar1: TMenuItem;
    N2: TMenuItem;
    mnuExcluir1: TMenuItem;
    rdgTipoImagem: TRadioGroup;
    Shape1: TShape;
    sdsDocumentosCODIGO_CLIENTE: TStringField;
    sdsDocumentosIMG_NOMECLIENTE: TStringField;
    cdsDocumentosCODIGO_CLIENTE: TStringField;
    cdsDocumentosIMG_NOMECLIENTE: TStringField;
    Panel2: TPanel;
    codigo: TDBEdit;
    nome: TDBEdit;
    Label1: TLabel;
    Label4: TLabel;
    procedure aiScanearImagemTwainError(Sender: TObject; state,
      error: Integer);
    procedure btnCapturaClick(Sender: TObject);
    procedure btnIncluirClick(Sender: TObject);
    procedure btnAlterarClick(Sender: TObject);
    procedure btnGravarClick(Sender: TObject);
    procedure btnCancelarClick(Sender: TObject);
    procedure btnExcluirClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnSairClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormActivate(Sender: TObject);
  private
    procedure AtivaDesativaBotoes(AAcao: Char);
  end;

var
  frmPrincipal           : TfrmPrincipal;

implementation

uses UClientes;

{$R *.DFM}

procedure TfrmPrincipal.aiScanearImagemTwainError(Sender: TObject; state,
  error: Integer);
begin
  raise Exception.Create('Error from state: ' + IntToStr(State)
    + '. Error type: ' + IntToStr(Error));
end;

procedure TfrmPrincipal.btnCapturaClick(Sender: TObject);
var
  Jpg                    : TJpegImage;
  Bmp                    : TBitmap;
  Flag                   : Boolean;
  S                      : string;
begin
  Flag := False;
  with aiScanearImagem do
  begin
    if LoadTWainModule then
    begin
      try
        OpenSourceManager;
        S := GetSource(false);
        SelectSource(S);
        OpenSource;
        case rdgTipoImagem.ItemIndex of
          0: AcquireBmp(Bmp);
          1: AcquireJpg(Jpg, 50);
          2: AcquireToClipboard;
        end;
        Flag := True;
      finally
        CloseTWainSession;
        UnloadTWainModule;
      end;
    end
    else
      MessageDlg('Erro ao carregar a biblioteca TWAIN_32.DLL', mtError, [mbOk], 0);
  end;

  if Flag then
    case rdgTipoImagem.ItemIndex of
      0: dbImagem.Picture.Bitmap := Bmp;
      1: dbImagem.Picture.Bitmap.Assign(Jpg);
      2: dbImagem.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,
        ClipBoard.GetAsHandle(cf_Bitmap), 0);
    end;
end;

procedure TfrmPrincipal.btnIncluirClick(Sender: TObject);
begin
  cdsDocumentos.Append;
  dbeDescricao.SetFocus;
  AtivaDesativaBotoes('I');
end;

procedure TfrmPrincipal.AtivaDesativaBotoes(AAcao: Char);
begin
  case AAcao of
    'I', 'A':
      begin
        btnIncluir.Enabled := False;
        btnAlterar.Enabled := False;
        btnGravar.Enabled := True;
        btnCancelar.Enabled := True;
        btnExcluir.Enabled := False;
        btnSair.Enabled := False;
        btnCaptura.Enabled := True;
        
        mnuSair1.Enabled := False;
        mnuInserir1.Enabled := False;
        mnuAlterar1.Enabled := False;
        mnuGravar1.Enabled := True;
        mnuCancelar1.Enabled := True;
      end;
    'G', 'C':
      begin
        btnIncluir.Enabled := True;
        btnAlterar.Enabled := True;
        btnGravar.Enabled := False;
        btnCancelar.Enabled := False;
        btnExcluir.Enabled := True;
        btnSair.Enabled := True;
        btnCaptura.Enabled := False;
        
        mnuSair1.Enabled := True;
        mnuInserir1.Enabled := True;
        mnuAlterar1.Enabled := True;
        mnuGravar1.Enabled := False;
        mnuCancelar1.Enabled := False;
      end;
  end;
end;

procedure TfrmPrincipal.btnAlterarClick(Sender: TObject);
begin
  if cdsDocumentos.IsEmpty then
    Exit;

    cdsDocumentos.Edit;
    dbeDescricao.SetFocus;
    AtivaDesativaBotoes('A');
end;

procedure TfrmPrincipal.btnGravarClick(Sender: TObject);
begin
  with cdsDocumentos do
  begin
    if Trim(FieldByName('NOME_ARQUIVO').AsString) <> '' then
    begin
      cdsDocumentos.Post;
      cdsDocumentos.ApplyUpdates(0);
      sqlConexao.CloseDataSets;
      AtivaDesativaBotoes('G');
    end
    else
    begin
      MessageDlg('O campo "Nome do Arquivo" é de preenchimento obrigatório.', mtError, [mbOk], 0);
      dbeArquivo.SetFocus;
    end;
  end;
end;

procedure TfrmPrincipal.btnCancelarClick(Sender: TObject);
begin
  cdsDocumentos.Cancel;
  AtivaDesativaBotoes('C');
end;

procedure TfrmPrincipal.btnExcluirClick(Sender: TObject);
begin
  if cdsDocumentos.IsEmpty then
    Exit;

  if MessageDlg('Confirma exclusão do documento selecionado?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    cdsDocumentos.Delete;
    cdsDocumentos.ApplyUpdates(0);
  end;

end;

procedure TfrmPrincipal.FormShow(Sender: TObject);
begin
  sqlConexao.Connected := True;
  cdsDocumentos.Open;
  cdsDocumentos.First;

  end;

procedure TfrmPrincipal.btnSairClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmPrincipal.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  cdsDocumentos.Close;
  sqlConexao.Connected := False;
end;


procedure TfrmPrincipal.FormActivate(Sender: TObject);

 private
   { Private declarations }
 public
    { Public declarations }
    RecebeCodigo:String;  //vai passar o conteúdo de outro forme
    RecebeNome:String;
  end;

  var recebe:TfrmPrincipal;



procedure TfrmPrincipal.FormActivate(Sender: TObject);


  codigo := RecebeCodigo;
  nome := RecebeNome;
end;




end.
GOSTEI 0
Alexsandro

Alexsandro

25/07/2014

Itamar , cara muito obrigado, depois de apanhar muito aqui consegui graças a essa sua explicação... cara valeu mesmo... agora posso dormir pois estava perdendo o sono... rsrs
GOSTEI 0
POSTAR