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 28-08-2005
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
Question TEdit selecciona todo al recibir el foco pero se pierde con el click

Hola, tengo un problema que no he sabido resolver despues de buscar mucho por la ayuda y estos foros. Os explico: tengo un TEdit que debe seleccionarse todo al recibir el foco pero si lo recibe a traves de un click, se selecciona todo pero se pierde por el click (me explico, tiene lugar antes el evento de seleccionar todo por recibir el foco que el del click, el cual hace que se deseleccione todo).

Creo que la solucion pasaria por ignorar el click una vez tenga el foco, pero solo deberia ignorarlo esa vez...

Muchas gracias por adelantado que siempre me habeis sido de gran ayuda
__________________
SIN FIRMA :P
Responder Con Cita
  #2  
Antiguo 28-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Tuve ese problemas y lo resolvi agregando el codigo de seleccionar todo en el eveno OnClick del edit.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 29-08-2005
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
Cita:
Empezado por vtdeleon
lo resolvi agregando el codigo de seleccionar todo en el eveno OnClick del edit.
El problema con esta solución es que nunca vas a poder deshacerte de la selección mediante clicks.

Cuando el edit no tiene el foco y das click en él, el texto queda seleccionado como es de esperarse. Pero ya teniendo el foco, lo que se espera es que si vuelves a dar click en él, se pierda la selección y el cursor se coloque donde diste el click.

Para resolver esto, en el evento OnClick deberías detectar si se tiene o no el foco, pero esto no es posible precisamente porque el evento OnEnter sucede antes del OnClick de manera que para cuando éste sucede ya se tiene el foco siempre.

La única manera en que yo he resuelto esto es derivando una componente de TEdit e interceptando directamente el mensaje WM_LBUTTONDOWN.

Para no tener que instalar una nueva componente coloca esta declaración antes de la declaración del formulario:


Código Delphi [-]
type
  TEdit = class(StdCtrls.TEdit)
  private
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
  end;

e implementa WMLButtonDown así:


Código Delphi [-]
procedure TEdit.WMLButtonDown(var Message: TWMLButtonDown);
begin
  if Focused then
    inherited
  else
  begin
    SelectAll;
    SetFocus;
  end;
end;

// Saludos
Responder Con Cita
  #4  
Antiguo 29-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Gracias roman por el aclarandum
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 29-08-2005
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
Muchas gracias roman, es justo lo que queria.
__________________
SIN FIRMA :P
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 21:58:42.


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