Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-08-2005
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
evitar precionar dos veces F3 para cerrar una forma....

Hola a todos. Disculpen de nuevo compañeros, pero estoy en un dilema. tengo una forma para ordenes de compras, tiene una tabla maestra y un detalle del cual al presionar F3 en una DBGrid me abre la ventana de Articulos para buscar el producto y volver a presionar F3 me cierre la ventana de Articulos y me devuelve la clave para pasarsela a mi detalle.

Use en el Dbgrid los dos eventos OnKeyDown y OnEditButton para mandar a llamar a la forma de articulos:

procedure TfrmOrdCompras.DBGrid1EditButtonClick(Sender: TObject);
begin
If DBGrid1.selectedfield = BD.IbOrdCompDetORD_DET_ARTICULO then
Begin
frmMaterial.CrearMostrar;
with frmMaterial do
begin
tag:=1;
if frmMaterial.ShowModal= mrOK then
BD.IbOrdCompDet.FieldByName('ORD_DET_ARTICULO').AsInteger:= frmMaterial.intAsignArticulo;
end;
end;
end;
procedure TfrmOrdCompras.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i:integer;
begin
// Aqui va otro codigo para borrar una linea detalle antes de que se grabe
if Key = VK_DELETE then
.......

if key = VK_F3 then
begin
frmMaterial.ExecuteProveedor(BD.IbOrdComprasORDEN_PROV.AsString);
frmMaterial.CrearMostrar;
if frmMaterial.ShowModal= mrOk then
begin
BD.IbOrdCompDet.Edit;
BD.IbOrdCompDet.FieldByName('ORD_DET_ARTICULO').AsInteger:=frmMaterial.intAsignArticulo;
end;
end;

en la forma articulos: frmMaterial esta un procedimiento ( ExecuteProveedor )que me devuelve los productos filtrados en base al proveedor que yo eliga desde mi tabla maestra. y en el evento OnCloseQuery me guarda la clave del articulo para pasarlo a intAsignArticulo.

Todo va bien, la cuestion es que debo Presionar dos veces F3 para que me regrese a la Grilla.

Les agradeceria si me indicaran por que hace eso...o alguna otra forma de como elegir un articulo y pasarlo a la DBgrid.
gracias.
Responder Con Cita
  #2  
Antiguo 28-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Personalmente usaría una tecla (o una combinación de ellas) para mostrar el formulario de búsqueda y otra distinta para cerrarlo. Como el formulario de búsqueda puede contar con un par de botones, a saber, "Buscar" y "Cancelar" y, como además parece que muestras dicho formulario "modalmente" tal vez puedas aprovechar las propiedades "Default" y/o "Cancel" de los botones mencionados para evitarte codificación y obtener también el correspondiente "ModalResult", que es lo que puede interesarte, entre otras cosas, del formulario de búsqueda.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 28-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por Arturo
y en el evento OnCloseQuery me guarda la clave del articulo para pasarlo a intAsignArticulo.

Todo va bien, la cuestion es que debo Presionar dos veces F3 para que me regrese a la Grilla.
Quizás el OncloseQuery no sea el mejor evento. Ya que al mostrarla como modal, si el usuario da al boton aceptar, primero se vuelve al código que lo llamó y despues se destruye la ventana, por tanto, cuando se vuelve de la ventana, todavía no ha asignado la variable que quieres.

Supongo que en la ventana modal, tienes un bitbtn con su propiedad ModalResult := ok; en el onclick de ese boton es justo el sitio para asignar el articulo.

Me queda una duda, en la ventana de material, ¿tambien tienes controlada la tecla F3 para salir? ¿qué código controla eso?

Un saludo
Responder Con Cita
  #4  
Antiguo 29-08-2005
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
SALUDOS
cuando mando a llamar la forma de materiales es con un .showmodal, eligo el articulo desde la Dbgrid y en el evento OnKeyDown tengo esto:

if frmMaterial = nil then
frmMaterial := TfrmMaterial.Create(nil);
frmMaterial.ShowModal;

BdGridKeyDown.....
if key = vk_F3 then
ModalResult := mrOk;


Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:50:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi