GARANTIR DESCONTO

Fórum Por favor Form pelo DBGrid #176483

21/08/2003

0

Fiz uma pesquisa usando Query e meu resultado apareceu num DBGrid, até aí tudo bem. No meu formulário de cadastro de alunos uso Table. O que eu queria na realidade é colocar no evento OnDobleClick do DBGrid umas linhas de comando que fizessem basicamente o seguinte: abrisse o formulário de cadastrado mostrando o registro no qual foi clicado duas vezes.

Já me deram várias dicas sobre como fazer isso, eu já tentei mas sempre dá erro, eu não sei trabalhar muito bem com Query e isso acaba dificultado um pouco, mas todo o meu sistema está praticamente dependendo disso!

Gostaria de muitos detalhes sobre o código. Tudo bem que eu quero que funcione, mas tb quero entender como funciona. De que outra forma irei aprender?

Galera, Ajuda Aê!

Uso Delphi 5 e Tabelas Paradox.


Denysk

Denysk

Responder

Posts

21/08/2003

By Alemão

procedure Form1.DBGrid(Sender: TObject);
begin
form2.edit1.text := Query.FieldByName(´N´).AsString;
form2.ShowModal;
end;

o ´fieldbyname´ é o nome da coluna que contém teu conteúdo....

a hora que vc der o duplo click, ele vai usar o registro que vc selecionou no Grid como index...

entendeu?


Responder

Gostei + 0

21/08/2003

Ehvasc

Saudações Denysk,

Acho que o que vc quer fazer faz-se da seguinte forma:


no evento onDlbClick do grid vc faz o seguinte:

se o form de cadastro já estiver criado, antes de dar um show nele vc abra a table correspondente e dá um locate no registro selecionado com o duplo clique. Em código delphi ficaria mais ou menos assim:

if not Form_Cadastro.table1.active then
begin
Form_Cadastro.table1.Open;
end;

table1.locate(CAMPO_CHAVE_PRIMARIA,Query1.FieldByName(´CAMPO_CHAVE_PRIMARIA´),[]);


isso fará com que o registro apontado pela query seja o mesmo apontado pela table. Isso , se eu entendi direito, resolve seu problema. Qualquer coisa é só falar.


Responder

Gostei + 0

21/08/2003

Allen74

Denysk,

Tudo vai depender de como estará aberto o seu formulário de cadastro. Seria necessário mais informações, mas vou tentar te ajudar levando em consideração o seguinte:

Seu formulário de cadastros não foi criado. Isso quer dizer que ele não está na lista de autocreate forms que é exibida através do menu Project|Options do Delphi. Você está utilizando um componente TTable para o cadastro de clientes que está inserido no seu formulário de cadastros.

Com este tipo de informações, tudo ficará mais fácil.

Na sua query, você deverá incluir também na lista de campos que serão retornados, o(s) campo(s) que compõe a chave primária de seu cadastro. Neste caso irei supor que este campo chama-se [b:624c3facc2]codigo[/b:624c3facc2]

No evento OnDoubleClick da DBGrid, você irá escrever:

  Application.CreateForm (TFrmCadastro, FrmCadastro);
  FrmCadastro.Table1.Findkey([Query1.FieldByName(´codigo´).AsString]);
  FrmCadastro.ShowModal;
  FrmCadastro.Free


Para que o código acima funcione corretamente, você deve abrir a tabela de cadastros (Table1) no evento OnCreate do formulário de cadastros, caso a propriedade Table1.Active não tenha sido definida para true quando você desenhou o formulário.

Tente esta solução e se não funcionar, informe mais detalhes da estrutura de seu programa e dos formulários e também poste a mensagem de erro, caso ocorra.


Responder

Gostei + 0

25/08/2003

Denysk

Não entendo, fiz tudo o que me disseram, mas sempre me retorna uma mensagem de erro ´Key Violation´.
Eu não sei o que é isso. Fiz tuso direitinho.

Estou quase desistindo.

Denysk


Responder

Gostei + 0

25/08/2003

Uelton

Primeiro crie uma variável global no Var do seu form;
Var Form1:TForm;
Teste:String;

No evento OnDoubleClick da DBGrid, você irá:
{Estou supondo que o campo que você irá fazer a consulta é String}
Vamos lá:
Teste:=Dbgrid1.SelectedField.text;
Application.CreateForm(TForm1,Form1);
Form1.Table1.Locate( ´Nome do campo a ser buscado´ ,Teste,[])
Form1.showmodal;


Responder

Gostei + 0

26/08/2003

Denysk

E se o campo for do tipo integer, como fica?
Uso Delphi 5 e tabelas Paradox.

Denysk


Responder

Gostei + 0

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

Aceitar