Puxar dados de outro Formulario

Delphi

12/06/2013

Boa Noite Pessoal, tenho um formulario princiapal com uma tabela com o campo erro, porem esse campo erro vai puxar os dados de um outro formulario com uma tabela secundaria, normalmente eu faço isso com DBLookUpComboBox, porem esse campo tem muita informação, qual componente vc's me indicariam? Para ficar uma coisa mais bacana eu pensei em: quando o usuario clicar nesse campo ele me abre esse formulario secundario eu navegava por ele criava um botão selecionar, esse botao salvava esse registro nesse campo fecharia o formulario secundario e eu continuaria preenchendo o formulario principal. Alguem poderia me ajudar nessa complexa situação. Estou usando banco de dados firebird.

Obrigado, a todos, aguardo uma ajuda.

Att, Felipe.
Felipe Arruda

Felipe Arruda

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

12/06/2013

Essa forma que você citou é interessante. Você pode fazer assim:
1) Declarar variáveis públicas no form secundário;
2) Ao selecionar o registro, preencher essas variáveis (com Código, Id, Nome, etc);
3) No form principal, você chama o form secundário e após o ShowModal, acessa essas variáveis (afinal, são públicas).
Veja um exemplo:
formClientes := TformClientes.Create(Application);
formClientes.ShowModal();
codigoCliente := formClientes.CodigoClienteSelecionado;

Essa é uma forma, mas você poderia muito bem acessar a tabela que está no form secundário direto:
formClientes := TformClientes.Create(Application);
formClientes.ShowModal();
codigoCliente := formClientes.queryClientes.FieldByName('Codigo').AsString;


Qualquer coisa, é só falar.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Bom dia Joel, cidade boa Natal, tive ai mes passado....heheheh. E desde ja fico agradecido a ajuda.
Vamos la, como sou iniciante em delphi gostaria de uma ajuda mais detalhada.

1) Eu declaro a variavel no FRSecundario, seria isso?

private
{ Private declarations }
public
{ Public declarations }
end;

var
FRPrimario: TFRPrimario;

implementation

uses unitprimario;


2) Essa segunda citação tenho que fazer algo ou ja esta incluso no codigo a frente?

3) O cdigo que vc citou abaixo eu o coloco no FRPrimario? Em qual evento do Formulario? Onde vc cita formClientes, seria meu FRSecundario? o codigocliente que vc tambem citou e uma variavel "var", tenho que cita la também?

Obrigado, aguardo, tenha um bom dia.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Opa, tudo em paz?
Rapaz, nesse caso sugiro que você faça da segundo forma que eu citei. Vai ser mais rápido e mais fácil pra você~, além de atender bem sua necessidade.

O formClientes que citei é o form secundário sim, no seu caso, o FRSecundario.

Com relação a em que evento fazer o procedimento, aí depende de você, se vai ser em um botão ou em outro controle, por exemplo.

Abraço.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Ok, mas qual componente eu vou usar para mostrar esses dados em meu formulario principal?
esse codigocleinte que vc citou no seu codigo o que seria?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

codigoCliente seria uma variável declarada no form principal. O que eu quis dizer foi que você pode pegar o conteúdo de uma query que está em outro form e fazer o que quiser: atribuir a uma variável, mostrar em um edit, label, etc.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Boa Tarde, uma variavel codigocliente : String;??
Posso mostrar em um DBMemo, ele ligado a minha tabela principal, pois esses dados tem que ficar salvos no banco de dados, a ele tenho um IBTable e um DataSource, não tenho nenhuma query, e necessario essa query?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Funciona da mesma forma par o IBTable.
E como eu disse, uma vez acessado o valor, você pode fazer o que quiser com ele, inclusive mostrar em um Memo.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Boa Tarde, fiz o seguinte no meu formulario primario tenho um DBMemo que esta ligado ao DataSource1 e um IBTable1, no evento dele onchange coloquei:

procedure TFRAtendimento.DBMemo1Change(Sender: TObject);
var
codigocliente : String;

begin
FRSecundario := TFRSecundario.Create(Application);
FRFRSecundario.ShowModal();
codigoCliente := FRSecundario.IBTable1.FieldByName('Codigo').AsString;
end;

Os erros foram: inves de abrir o formulario primario, abre o secundario, ok. O outro erro e o seguinte, fecho os formularios secundarios para voltar para o primario, quando eu clico no DBMemo abre o formulario secundario, ate ai certo, porem, quero que abra o formualario eu escolha um dos registro da minha tabela que esta sendo mostrada em um DBGrid e ele preenche automaticamento esse campo no meu formulario primario. exemplo que vc me passou so esta abrindo o formulario.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Sobre os erros:
1) Está abrindo o form secundário: ora, e não é essa a intenção? Abrir o form secundário para que nele o usuário selecione um registro?
2) Você colocou no evento OnChange do Memo, isso não é bom. Utilize um botão ou algo do tipo.
3) Você atribuiu o retorno a uma variável, mas não fez nada relacionado ao memo. Precisaria colocar a variável dentro do memo, por exemplo:
DBMemo1.Lines.Add('Cliente: ' + codigoCliente);
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Ok. A primeira situação foi resolvida, foi erro meu aqui.
a variavel dentro do memo, seria assim:

var
codigocliente : String;

begin
DBMemo1.Lines.Add('Cliente: ' + codigoCliente);
end;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Não, não.. essa linha deve ser adicionada após aquelas outras 3 que já tem.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Boa Noite, fiz aqui, porem o que esta acontecendo. Abre o form principal clico no botão com os codigo abaixo, abre o form secundario que neste meu caso e o FRErro, clico no registro que desejo ser salvo no campo ERRO/PROBLEMA do form princiapl, fecho o form secundario, os dados desejados aparecem no campo ERRO/PROBLEMA do form principal, porem aparece assim: "ERRO/PROBLEMA: E AQUI OS DADOS QUE FORAM PUXADOS DO FORM SECUNDARIO"

procedure TFRAtendimento.Button4Click(Sender: TObject);
var
codigocliente : String;

begin
FRErro := TFRErro.Create(Application);
FRErro.ShowModal();
codigoCliente := FRErro.IBTable1.FieldByName('ERRO/PROBLEMA').AsString;
DBMemo1.Lines.Add('ERRO/PROBLEMA: ' + codigoCliente);
end;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Não entendi o que está errado, para mim você descreveu o procedimento como deveria ser.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Se eu clicar no campo no form principal onde foi puxado do form secundario, os dados somi.
Posso te passar a aplicação para vc ver?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Como assim no campo em que o form secundáriofoi puxado? O form secundário está sendo chamado a prartir de um botão.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Bom dia, tudo bom?
Certo, eu clico no botão do form principal dai abre o form secundario.
Com o form secundario aberto eu seleciono o registro e fecho o form secundario.
Quando vou no form principal os dados que selecionei do form secundario estão no campo que eu desejava do fom principal.
Porem quando eu clico nesse campo os dados somi.
Obrigado.

Att, Felipe.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Qual é o campo? É o DBMemo? Então deve ter algum evento aí fazendo os dados sumirem. Verifique isso.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Bom dia e o campo ERRO/PROBLEMA, e o componente seria DBMemo. Verifiquei no evento do DBMemo e do botão, e não tem nada no evvento deles, somente do botão abaixo:

procedure TFRAtendimento.Button4Click(Sender: TObject);
var
codigocliente : String;

begin
FRErro := TFRErro.Create(Application);
FRErro.ShowModal();
codigoCliente := FRErro.IBTable1.FieldByName('ERRO/PROBLEMA').AsString;
DBMemo1.Lines.Add('ERRO/PROBLEMA: ' + codigoCliente);
end;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Infelizmente não vejo motivo para o memo estar sendo limpo. A query está aberta e em modo de inserção?
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Não tenho query nesse projeto, se vc analisar bem tenho um IBTable.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Como eu disse anteriormente, dá no mesmo, colega. DataSet, Query, Table...
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Posso te enviar o projeto para vc ver?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Cole aqui apenas o código do form onde está o DBMemo. Use as tags de código.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

unit unitatendimento;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, DBCtrls, Grids, DBGrids, Mask,
DB, DBClient, IBQuery, IBCustomDataSet, IBTable, IBDatabase;

type
TFRAtendimento = class(TForm)
MainMenu1: TMainMenu;
A1: TMenuItem;
NovoCadastro1: TMenuItem;
SalvarCliente1: TMenuItem;
Desfazer1: TMenuItem;
ExcluirNovoCadastro1: TMenuItem;
ProximoCliente1: TMenuItem;
ClienteAnterior1: TMenuItem;
N1: TMenuItem;
Sair1: TMenuItem;
Procurar1: TMenuItem;
Relatrio1: TMenuItem;
Clie1: TMenuItem;
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
Label1: TLabel;
DBEdit1: TDBEdit;
Label3: TLabel;
Label13: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label12: TLabel;
Label14: TLabel;
Label15: TLabel;
DBEdit15: TDBEdit;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
Label2: TLabel;
DBEdit2: TDBEdit;
Label6: TLabel;
DBEdit10: TDBEdit;
Label10: TLabel;
DBEdit11: TDBEdit;
Label11: TLabel;
DBEdit12: TDBEdit;
Label4: TLabel;
Label16: TLabel;
DBEdit17: TDBEdit;
DBMemo1: TDBMemo;
IBDatabase1: TIBDatabase;
IBTransaction1: TIBTransaction;
IBTable1: TIBTable;
DataSource1: TDataSource;
IBTransaction2: TIBTransaction;
IBTable2: TIBTable;
DataSource2: TDataSource;
DataSource3: TDataSource;
DataSource4: TDataSource;
IBTransaction3: TIBTransaction;
IBTransaction4: TIBTransaction;
IBTable3: TIBTable;
IBTable4: TIBTable;
DBLookupComboBox1: TDBLookupComboBox;
DBLookupComboBox2: TDBLookupComboBox;
DBLookupComboBox3: TDBLookupComboBox;
DBMemo2: TDBMemo;
DataSource5: TDataSource;
IBTable5: TIBTable;
IBTransaction5: TIBTransaction;
DBLookupComboBox4: TDBLookupComboBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
AguardandoRetorno1: TMenuItem;
EmAndamento1: TMenuItem;
Retornar1: TMenuItem;
Finalizado1: TMenuItem;
Button4: TButton;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure Sair1Click(Sender: TObject);
procedure ProximoCliente1Click(Sender: TObject);
procedure ClienteAnterior1Click(Sender: TObject);
procedure ExcluirNovoCadastro1Click(Sender: TObject);
procedure Desfazer1Click(Sender: TObject);
procedure SalvarCliente1Click(Sender: TObject);
procedure NovoCadastro1Click(Sender: TObject);
procedure DBEdit10Enter(Sender: TObject);
procedure DBEdit11Enter(Sender: TObject);
procedure DBEdit7Enter(Sender: TObject);
procedure DBEdit8Enter(Sender: TObject);
procedure DBEdit15Enter(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure DBGrid1TitleClick(Column: TColumn);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
procedure AguardandoRetorno1Click(Sender: TObject);
procedure EmAndamento1Click(Sender: TObject);
procedure Retornar1Click(Sender: TObject);
procedure Finalizado1Click(Sender: TObject);
procedure IBTable2AfterOpen(DataSet: TDataSet);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FRAtendimento: TFRAtendimento;

implementation

uses unitclientes, uniterro;

{$R *.dfm}


procedure TFRAtendimento.AguardandoRetorno1Click(Sender: TObject);
begin
IBTable1.Filter := 'STATUS = 1';
IBTable1.Filtered := True;
end;

procedure TFRAtendimento.BitBtn1Click(Sender: TObject);
var
NOVO: integer;

begin
IBTable1.Last;
NOVO:=IBTable1.FieldByName ('CODIGO ATENDIMENTO').AsInteger+1;
IBTable1.Append;
IBTable1.FieldByName('CODIGO ATENDIMENTO').AsInteger:=NOVO;
DBEdit10.Text:=datetostr(now);
DBEdit7.Text:=timetostr(now);
DBEdit2.SetFocus;


end;

procedure TFRAtendimento.BitBtn2Click(Sender: TObject);
var
NOVO : integer;
begin
IBTable1.Post;
ShowMessage ('Atendimento Cadastrado com Sucesso.');

end;

procedure TFRAtendimento.BitBtn3Click(Sender: TObject);
begin
IBTable1.Cancel;
ShowMessage ('Cadastro de Novo Atendimento cancelado.');
end;

procedure TFRAtendimento.BitBtn4Click(Sender: TObject);
begin
If Application.MessageBox('Confirma Exclusão ?','Cuidado !!!',MB_YESNO +
MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES Then
IBTable1.Delete;
end;

procedure TFRAtendimento.BitBtn6Click(Sender: TObject);
begin
IBTable1.Prior;
end;

procedure TFRAtendimento.BitBtn7Click(Sender: TObject);
begin
IBTable1.Next;
end;

procedure TFRAtendimento.BitBtn8Click(Sender: TObject);
begin
CLOSE;
end;

procedure TFRAtendimento.Button3Click(Sender: TObject);
begin
DataSource1.DataSet.Close;
DBGrid1.DataSource.DataSet.Filtered := False;
DataSource1.DataSet.Open;
end;

procedure TFRAtendimento.Button4Click(Sender: TObject);
var
codigocliente : String;

begin
FRErro := TFRErro.Create(Application);
FRErro.ShowModal();
codigoCliente := FRErro.IBTable1.FieldByName('ERRO/PROBLEMA').AsString;
DBMemo1.Lines.Add('ERRO/PROBLEMA: ' + codigoCliente);
end;

procedure TFRAtendimento.Button1Click(Sender: TObject);
begin
FRCliente.ShowModal ()
end;

procedure TFRAtendimento.Button2Click(Sender: TObject);
begin
FRErro.ShowModal ()
end;

procedure TFRAtendimento.ClienteAnterior1Click(Sender: TObject);
begin
IBTable1.Prior;
end;

procedure TFRAtendimento.DBEdit10Enter(Sender: TObject);
begin
DBEdit10.Field.EditMask:= '!99/99/0000;1';
end;

procedure TFRAtendimento.DBEdit11Enter(Sender: TObject);
begin
DBEdit11.Field.EditMask:= '!99/99/0000;1';
end;

procedure TFRAtendimento.DBEdit15Enter(Sender: TObject);
begin
DBEdit15.Field.EditMask:= 'R$999,99;0';
end;

procedure TFRAtendimento.DBEdit7Enter(Sender: TObject);
begin
DBEdit7.Field.EditMask:= '!90:00;1;_';
end;

procedure TFRAtendimento.DBEdit8Enter(Sender: TObject);
begin
DBEdit8.Field.EditMask:= '!90:00;1;_';
end;

procedure TFRAtendimento.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if IBTable1.FieldByName('STATUS').Value='4' then
begin
DBGrid1.Canvas.Brush.Color:=clMenu;
DbGrid1.Canvas.Font.Color := clRed;
end
else
if IBTable1.FieldByName('STATUS').Value='3' then
begin
DBGrid1.Canvas.Brush.Color:=clMenu;
DbGrid1.Canvas.Font.Color := clBlue;
end
else
if IBTable1.FieldByName('STATUS').Value='2' then
begin
DBGrid1.Canvas.Brush.Color:=clMenu;
DbGrid1.Canvas.Font.Color := clGreen;
end
else
if IBTable1.FieldByName('STATUS').Value='1' then
begin
DBGrid1.Canvas.Brush.Color:=clMenu;
DbGrid1.Canvas.Font.Color := clpurple;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TFRAtendimento.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
Pesquisa : String;

begin
if key = #13 then

begin
if InputQuery('Pesquisar por: ' + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName, 'Digite o conteúdo a Pesquisar', Pesquisa) then
begin
TDBGrid(Sender).DataSource.DataSet.Filter := '"' + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName + '"' + ' LIKE ' + UpperCase(QuotedStr(Pesquisa + '%'));
TDBGrid(Sender).DataSource.DataSet.Filtered := True;
end
else
TDBGrid(Sender).DataSource.DataSet.Filtered := False;

end;

end;

procedure TFRAtendimento.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
mousePt: TGridcoord;
begin
mousePt := DbGrid1.MouseCoord(x,y);
if mousePt.y = 0 then
Screen.Cursor := crHandPoint
else
Screen.Cursor := crDefault;

end;

procedure TFRAtendimento.DBGrid1TitleClick(Column: TColumn);
var
I: Integer;
begin
for I := 0 to DBGrid1.Columns.Count - 1 do
DBGrid1.Columns[i].Title.Font.Style := [];
if(Column.Field.KeyFields = '') then
IBTable1.IndexFieldNames:=Column.FieldName
else
IBTable1.IndexFieldNames:=Column.Field.KeyFields;
Column.Title.Font.Style := [fsBold];
end;

procedure TFRAtendimento.Desfazer1Click(Sender: TObject);
begin
IBTable1.Cancel;
ShowMessage ('Cadastro de Novo Atendimento cancelado.');
end;

procedure TFRAtendimento.EmAndamento1Click(Sender: TObject);
begin
IBTable1.Filter := 'STATUS = 2';
IBTable1.Filtered := True;
end;

procedure TFRAtendimento.ExcluirNovoCadastro1Click(Sender: TObject);
begin
If Application.MessageBox('Confirma Exclusão ?','Cuidado !!!',MB_YESNO +
MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES Then
IBTable1.Delete;
end;

procedure TFRAtendimento.Finalizado1Click(Sender: TObject);
begin
IBTable1.Filter := 'STATUS = 4';
IBTable1.Filtered := True;
end;

procedure TFRAtendimento.FormCreate(Sender: TObject);
begin
IBTable1.Open;
IBTable1.Last;
IBTable2.Open;
IBTable2.Last;
IBTable3.Open;
IBTable3.Last;
IBTable4.Open;
IBTable4.Last;
IBTable5.Open;
IBTable5.Last;

end;

procedure TFRAtendimento.IBTable2AfterOpen(DataSet: TDataSet);
begin
DataSet.Refresh;
end;

procedure TFRAtendimento.NovoCadastro1Click(Sender: TObject);

var
NOVO: integer;

begin
IBTable1.Last;
NOVO:=IBTable1.FieldByName ('CODIGO ATENDIMENTO').AsInteger+1;
IBTable1.Append;
IBTable1.FieldByName('CODIGO ATENDIMENTO').AsInteger:=NOVO;
DBEdit2.SetFocus;
end;

procedure TFRAtendimento.ProximoCliente1Click(Sender: TObject);
begin
IBTable1.Next;
end;

procedure TFRAtendimento.Retornar1Click(Sender: TObject);
begin
IBTable1.Filter := 'STATUS = 3';
IBTable1.Filtered := True;
end;

procedure TFRAtendimento.Sair1Click(Sender: TObject);
begin
CLOSE;
end;

procedure TFRAtendimento.SalvarCliente1Click(Sender: TObject);

var
NOVO : integer;
begin
IBTable1.Post;
ShowMessage ('Atendimento Cadastrado com Sucesso.');
end;

end.
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

unit unitatendimento;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, DBCtrls, Grids, DBGrids, Mask,
  DB, DBClient, IBQuery, IBCustomDataSet, IBTable, IBDatabase;

type
  TFRAtendimento = class(TForm)
    MainMenu1: TMainMenu;
    A1: TMenuItem;
    NovoCadastro1: TMenuItem;
    SalvarCliente1: TMenuItem;
    Desfazer1: TMenuItem;
    ExcluirNovoCadastro1: TMenuItem;
    ProximoCliente1: TMenuItem;
    ClienteAnterior1: TMenuItem;
    N1: TMenuItem;
    Sair1: TMenuItem;
    Procurar1: TMenuItem;
    Relatrio1: TMenuItem;
    Clie1: TMenuItem;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label3: TLabel;
    Label13: TLabel;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    Label9: TLabel;
    DBEdit9: TDBEdit;
    Label12: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    DBEdit15: TDBEdit;
    DBNavigator1: TDBNavigator;
    DBGrid1: TDBGrid;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label6: TLabel;
    DBEdit10: TDBEdit;
    Label10: TLabel;
    DBEdit11: TDBEdit;
    Label11: TLabel;
    DBEdit12: TDBEdit;
    Label4: TLabel;
    Label16: TLabel;
    DBEdit17: TDBEdit;
    DBMemo1: TDBMemo;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBTable1: TIBTable;
    DataSource1: TDataSource;
    IBTransaction2: TIBTransaction;
    IBTable2: TIBTable;
    DataSource2: TDataSource;
    DataSource3: TDataSource;
    DataSource4: TDataSource;
    IBTransaction3: TIBTransaction;
    IBTransaction4: TIBTransaction;
    IBTable3: TIBTable;
    IBTable4: TIBTable;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    DBLookupComboBox3: TDBLookupComboBox;
    DBMemo2: TDBMemo;
    DataSource5: TDataSource;
    IBTable5: TIBTable;
    IBTransaction5: TIBTransaction;
    DBLookupComboBox4: TDBLookupComboBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    AguardandoRetorno1: TMenuItem;
    EmAndamento1: TMenuItem;
    Retornar1: TMenuItem;
    Finalizado1: TMenuItem;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure Sair1Click(Sender: TObject);
    procedure ProximoCliente1Click(Sender: TObject);
    procedure ClienteAnterior1Click(Sender: TObject);
    procedure ExcluirNovoCadastro1Click(Sender: TObject);
    procedure Desfazer1Click(Sender: TObject);
    procedure SalvarCliente1Click(Sender: TObject);
    procedure NovoCadastro1Click(Sender: TObject);
    procedure DBEdit10Enter(Sender: TObject);
    procedure DBEdit11Enter(Sender: TObject);
    procedure DBEdit7Enter(Sender: TObject);
    procedure DBEdit8Enter(Sender: TObject);
    procedure DBEdit15Enter(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure Button1Click(Sender: TObject);
    procedure AguardandoRetorno1Click(Sender: TObject);
    procedure EmAndamento1Click(Sender: TObject);
    procedure Retornar1Click(Sender: TObject);
    procedure Finalizado1Click(Sender: TObject);
    procedure IBTable2AfterOpen(DataSet: TDataSet);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FRAtendimento: TFRAtendimento;

implementation

uses unitclientes, uniterro;

{$R *.dfm}


procedure TFRAtendimento.AguardandoRetorno1Click(Sender: TObject);
begin
  IBTable1.Filter := 'STATUS = 1';
  IBTable1.Filtered := True;
end;

procedure TFRAtendimento.BitBtn1Click(Sender: TObject);
var
  NOVO: integer;

begin
  IBTable1.Last;
  NOVO:=IBTable1.FieldByName ('CODIGO ATENDIMENTO').AsInteger+1;
  IBTable1.Append;
  IBTable1.FieldByName('CODIGO ATENDIMENTO').AsInteger:=NOVO;
  DBEdit10.Text:=datetostr(now);
  DBEdit7.Text:=timetostr(now);
  DBEdit2.SetFocus;


end;

procedure TFRAtendimento.BitBtn2Click(Sender: TObject);
var
 NOVO : integer;
begin
 IBTable1.Post;
 ShowMessage ('Atendimento Cadastrado com Sucesso.');

end;

procedure TFRAtendimento.BitBtn3Click(Sender: TObject);
begin
  IBTable1.Cancel;
  ShowMessage ('Cadastro de Novo Atendimento cancelado.');
end;

procedure TFRAtendimento.BitBtn4Click(Sender: TObject);
begin
  If Application.MessageBox('Confirma Exclusão ?','Cuidado !!!',MB_YESNO +
                           MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES Then
  IBTable1.Delete;
end;

procedure TFRAtendimento.BitBtn6Click(Sender: TObject);
begin
  IBTable1.Prior;
end;

procedure TFRAtendimento.BitBtn7Click(Sender: TObject);
begin
  IBTable1.Next;
end;

procedure TFRAtendimento.BitBtn8Click(Sender: TObject);
begin
  CLOSE;
end;

procedure TFRAtendimento.Button3Click(Sender: TObject);
begin
 DataSource1.DataSet.Close;
 DBGrid1.DataSource.DataSet.Filtered := False;
 DataSource1.DataSet.Open;
end;

procedure TFRAtendimento.Button4Click(Sender: TObject);
var
 codigocliente : String;

begin
 FRErro := TFRErro.Create(Application);
 FRErro.ShowModal();
 codigoCliente := FRErro.IBTable1.FieldByName('ERRO/PROBLEMA').AsString;
 DBMemo1.Lines.Add('ERRO/PROBLEMA: ' + codigoCliente);
end;

procedure TFRAtendimento.Button1Click(Sender: TObject);
begin
  FRCliente.ShowModal ()
end;

procedure TFRAtendimento.Button2Click(Sender: TObject);
begin
  FRErro.ShowModal ()
end;

procedure TFRAtendimento.ClienteAnterior1Click(Sender: TObject);
begin
  IBTable1.Prior;
end;

procedure TFRAtendimento.DBEdit10Enter(Sender: TObject);
begin
  DBEdit10.Field.EditMask:= '!99/99/0000;1';
end;

procedure TFRAtendimento.DBEdit11Enter(Sender: TObject);
begin
  DBEdit11.Field.EditMask:= '!99/99/0000;1';
end;

procedure TFRAtendimento.DBEdit15Enter(Sender: TObject);
begin
  DBEdit15.Field.EditMask:= 'R$999,99;0';
end;

procedure TFRAtendimento.DBEdit7Enter(Sender: TObject);
begin
  DBEdit7.Field.EditMask:= '!90:00;1;_';
end;

procedure TFRAtendimento.DBEdit8Enter(Sender: TObject);
begin
  DBEdit8.Field.EditMask:= '!90:00;1;_';
end;

procedure TFRAtendimento.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if IBTable1.FieldByName('STATUS').Value='4' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clRed;
  end
  else
  if IBTable1.FieldByName('STATUS').Value='3' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clBlue;
  end
  else
  if IBTable1.FieldByName('STATUS').Value='2' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clGreen;
  end
  else
  if IBTable1.FieldByName('STATUS').Value='1' then
  begin
    DBGrid1.Canvas.Brush.Color:=clMenu;
    DbGrid1.Canvas.Font.Color := clpurple;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TFRAtendimento.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
  Pesquisa : String;

begin
  if key = #13 then

begin
if InputQuery('Pesquisar por: ' + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName, 'Digite o conteúdo a Pesquisar', Pesquisa) then
begin
  TDBGrid(Sender).DataSource.DataSet.Filter := '"' + TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName + '"' + ' LIKE ' + UpperCase(QuotedStr(Pesquisa + '%'));
  TDBGrid(Sender).DataSource.DataSet.Filtered := True;
end
else
  TDBGrid(Sender).DataSource.DataSet.Filtered := False;

end;

end;

procedure TFRAtendimento.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  mousePt: TGridcoord;
begin
  mousePt := DbGrid1.MouseCoord(x,y);
  if mousePt.y = 0 then
    Screen.Cursor := crHandPoint
  else
    Screen.Cursor := crDefault;

end;

procedure TFRAtendimento.DBGrid1TitleClick(Column: TColumn);
var
  I: Integer;
begin
  for I := 0 to DBGrid1.Columns.Count - 1 do
    DBGrid1.Columns[i].Title.Font.Style := [];
  if(Column.Field.KeyFields = '') then
    IBTable1.IndexFieldNames:=Column.FieldName
  else
    IBTable1.IndexFieldNames:=Column.Field.KeyFields;
  Column.Title.Font.Style := [fsBold];
end;

procedure TFRAtendimento.Desfazer1Click(Sender: TObject);
begin
  IBTable1.Cancel;
  ShowMessage ('Cadastro de Novo Atendimento cancelado.');
end;

procedure TFRAtendimento.EmAndamento1Click(Sender: TObject);
begin
   IBTable1.Filter := 'STATUS = 2';
   IBTable1.Filtered := True;
end;

procedure TFRAtendimento.ExcluirNovoCadastro1Click(Sender: TObject);
begin
  If Application.MessageBox('Confirma Exclusão ?','Cuidado !!!',MB_YESNO +
                           MB_ICONQUESTION + MB_DEFBUTTON2) = IDYES Then
  IBTable1.Delete;
end;

procedure TFRAtendimento.Finalizado1Click(Sender: TObject);
begin
  IBTable1.Filter := 'STATUS = 4';
  IBTable1.Filtered := True;
end;

procedure TFRAtendimento.FormCreate(Sender: TObject);
begin
  IBTable1.Open;
  IBTable1.Last;
  IBTable2.Open;
  IBTable2.Last;
  IBTable3.Open;
  IBTable3.Last;
  IBTable4.Open;
  IBTable4.Last;
  IBTable5.Open;
  IBTable5.Last;

end;

procedure TFRAtendimento.IBTable2AfterOpen(DataSet: TDataSet);
begin
 DataSet.Refresh;
end;

procedure TFRAtendimento.NovoCadastro1Click(Sender: TObject);

  var
  NOVO: integer;

begin
  IBTable1.Last;
  NOVO:=IBTable1.FieldByName ('CODIGO ATENDIMENTO').AsInteger+1;
  IBTable1.Append;
  IBTable1.FieldByName('CODIGO ATENDIMENTO').AsInteger:=NOVO;
  DBEdit2.SetFocus;
end;

procedure TFRAtendimento.ProximoCliente1Click(Sender: TObject);
begin
  IBTable1.Next;
end;

procedure TFRAtendimento.Retornar1Click(Sender: TObject);
begin
  IBTable1.Filter := 'STATUS = 3';
  IBTable1.Filtered := True;
end;

procedure TFRAtendimento.Sair1Click(Sender: TObject);
begin
  CLOSE;
end;

procedure TFRAtendimento.SalvarCliente1Click(Sender: TObject);

  var
 NOVO : integer;
begin
 IBTable1.Post;
 ShowMessage ('Atendimento Cadastrado com Sucesso.');
end;

end.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Não vejo problemas. Confirme pra mim: quando vocÊ clica dentro do DBMemo o conteúdo some?
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Exatamente.
E se eu tentar salvar da o seguinte erro:

IBTable1: Dataset not in edit insert mode
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Como suspeitei. A tabela não está em modo de inserção.
Você precisará chamar o método Insert ou o Edit (se for inserir um registro novo ou editar, respectivamente).

Você pode ter um botão "Novo" ou "Editar" e executar o seguinte no OnClick:
Para iserir:
IBTable1.Insert;

Para editar:
IBTable1.Edit;
GOSTEI 0
Felipe Arruda

Felipe Arruda

12/06/2013

Boa Tarde amigo, muito obrigado, deu certinho.
Obrigado mesmo.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

12/06/2013

Que bom, Felipe. Fico feliz por ter ajudado.
Um grande abraço.
Estou encerrando o tópico.
GOSTEI 0
POSTAR