Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2010
dao_ar dao_ar is offline
Miembro
 
Registrado: ene 2005
Ubicación: Neuquen - Argentina
Posts: 24
Poder: 0
dao_ar Va por buen camino
Controles

Amigos, estoy dandole vueltas a un tema que no puedo definir

Tengo unos controles (puede ser cualquiera) para introducir datos, con una validacion que obliga a introducir un dato, sino no puede salir (onExit). pero si el usuario se arrepiente debo dejarlo volver a los controles anteriores o pulsar el boton de cancelar, pero no debo dejarlo continuar con la carga, sin completar los datos en su totalidad.
Como puedo detectar cuando pulsa sobre un control anterior, o posterior o sobre un boton ? (en este caso solo cancelar)
No quiero hacerlo al final, antes de grabar verificar que todos los controles esten correctos, quiero hacerlo a medida que lo carga.


Gracias a todos
Responder Con Cita
  #2  
Antiguo 04-11-2010
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
No se si entendi bien, pero creo que quieres hacer una validacion individual para cada edit por ejemplo y no hacerlo en el boton grabar, si es asi la puedes hacer en el evento onexit de cada control, o sea la vaidas cuando intenta salir del control, cuando todos los controles esten validados recien activas el boton grabar, de lo contrario puede dejar activo el boton cancelar.

Espero que te sirva y yo haya captado la idea, si no es asi, pon algun ejemplo y te ayudo con gusto.
__________________
\_--> NoShY <--_/
Responder Con Cita
  #3  
Antiguo 04-11-2010
dao_ar dao_ar is offline
Miembro
 
Registrado: ene 2005
Ubicación: Neuquen - Argentina
Posts: 24
Poder: 0
dao_ar Va por buen camino
Controles

No es eso. En cada control estoy validando y no puede sarlir salvo que introduzca un dato. El tema es que si quierecancelar o ir a los controles anteriores no puede hacerlos por el valid en el onExit. y es esos casos, solo en esos, si tiene que salir, pero no debe poder ir a los controles siguientes si no introduce un dato. Se entiende.
Lo que necesito es que en el caso de que sea el boton de cancelar o en los casos de que sean controles anteriores pueda salir del control, pero no pueda avanzar. Tengo que detectar que control pulsa para saber si lo dejo salir o no.
Espero que se entienda
Responder Con Cita
  #4  
Antiguo 04-11-2010
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
deberias ver que control focusea, en el evento onExit fijate a donde quiere ir...

Código Delphi [-]
if (not canterior1.Focused) or (not canterior2.Focused) then
  begin    
    showmessage('no puedes avanzar a ese control...');
    this.setfocus;
    exit;
  end;
__________________
\_--> NoShY <--_/

Última edición por noshy fecha: 04-11-2010 a las 16:33:16.
Responder Con Cita
  #5  
Antiguo 04-11-2010
dao_ar dao_ar is offline
Miembro
 
Registrado: ene 2005
Ubicación: Neuquen - Argentina
Posts: 24
Poder: 0
dao_ar Va por buen camino
controles

Ok.

Estaba intentando hacer algo asi, tambien queria probar con ControlState. pero me devuelve un error. Muchas gracias
Responder Con Cita
  #6  
Antiguo 04-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dao_ar.

Fijate si no te da alguna idea este tema.

Saludos.
Responder Con Cita
  #7  
Antiguo 04-11-2010
dao_ar dao_ar is offline
Miembro
 
Registrado: ene 2005
Ubicación: Neuquen - Argentina
Posts: 24
Poder: 0
dao_ar Va por buen camino
Controles

Gracias

Tambien puede ser una buena alternativa, se entiende perfectamente.

Gracias a todos.
Responder Con Cita
  #8  
Antiguo 04-11-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Otra idea:

El formulario tiene una propiedad ActiveControl, cuyo valor es el control activo en cada momento. En el evento OnExit de un control, ActiveControl contiene ya el control al que se va a desplazar el foco mientras que (Sender as TWinControl) contiene el control que se está abandonando. Entonces, podemos comparar la propiedad TabOrder de ambos controles para saber si estamos avanzando o retrocediendo:

Código Delphi [-]
{
  Asignamos este evento a todos los Edit.
}
procedure TForm1.EditExit(Sender: TObject);
begin
  if ((Sender as TEdit).Text = '') and ((Sender as TWinControl).TabOrder < ActiveControl.TabOrder) then
  begin
    ShowMessage('Falta capturar el dato');
    (Sender as TWinControl).SetFocus;
  end;
end;

// Saludos
Responder Con Cita
  #9  
Antiguo 09-11-2010
dao_ar dao_ar is offline
Miembro
 
Registrado: ene 2005
Ubicación: Neuquen - Argentina
Posts: 24
Poder: 0
dao_ar Va por buen camino
Contorles

Gracias por las ideas, con ellas pude resolver el problema decentemente !!!
Responder Con Cita
  #10  
Antiguo 09-11-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
dao_ar:

Siempre es bueno que aclares cuál fue tu solución final para que otros con dudas similares puedan aprovecharla.

// Saludos
Responder Con Cita
  #11  
Antiguo 17-11-2010
dao_ar dao_ar is offline
Miembro
 
Registrado: ene 2005
Ubicación: Neuquen - Argentina
Posts: 24
Poder: 0
dao_ar Va por buen camino
Controles

Ok.

Lo solucione con preguntando a donde va el foco (Noshy).

if (not canterior1.Focused) or (not canterior2.Focused) then ...

Tambien anduvo la idea de Roman
if ((Sender as TEdit).Text = '') and ((Sender as TWinControl).TabOrder < ActiveControl.TabOrder) then
..
pero la otra es mas simple. Y como no dejo muchas alternativas donde ir, solo para los anteriores o Cancelar
se puede controlar con la alternativa de Noshy.

Gracias a todos.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
nombrar controles Johnny Q Varios 6 30-06-2005 00:38:26
Controles ActiveX senpiterno Varios 12 27-09-2004 20:14:47
Alineación de controles roman OOP 9 24-08-2004 00:00:57
controles bd o no? walrus Conexión con bases de datos 1 04-08-2004 18:01:33
Parpadeo de controles roman Varios 11 03-04-2004 07:56:59


La franja horaria es GMT +2. Ahora son las 16:28:15.


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