Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2006
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
Obtener el dato de un TEdit

hola ...
como puedo obtener el dato de TEdit que posee el foco entre varios
Código Delphi [-]
 var
     dato : string;

     dato := (sender as TEdit). text   // algo asi ...esto esta malo eso si solo de ejemplo....
Responder Con Cita
  #2  
Antiguo 23-04-2006
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,

¿Algo así?

Código Delphi [-]
  if TEdit(Sender).Focused then
  begin
    {...}
  end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 23-04-2006
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
hola david
no es que sea pesao y que me digas todo lo que debo hacer...pero como obtengo el dato y lo paso a una variable?
Responder Con Cita
  #4  
Antiguo 23-04-2006
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,

No creo que seas pesado en absoluto, hombre. Ahora, que no me queda claro qué se trata de hacer... intuyo algo, pero, mi bola de cristal tiene nubes, como diría Richard Stallman en su castellano tan minúsculo como admirable.

Suponiendo que lo que te interese sea el contenido del "TEdit", esto es, el valor contenido en su propiedad "Text", discriminando además que dicho "TEdit" sea el que tenga el "foco de entrada"... queda por averiguar dónde quieres tomar el valor de dicha propiedad, en qué punto del programa.

Me explico. Supongamos un formulario con dos "TEdit" y un "TButton". En el evento "OnClick" del "TButton" queremos averiguar qué "TEdit" tiene el foco de entrada, con el fin de extraer el valor de su propiedad "Text" en una variable de tipo "string", por ejemplo.

Tenemos un problema: en el momento en que el evento "OnClick" del botón se dispare, el foco de entrada lo tendrá ya el propio botón... y no habrá "TEdit" con foco que valga.

Ahora cambiemos el escenario un poco. Tenemos un formulario con dos "TEdit", pero, en lugar de un "TButton" contamos además de con los "TEdit" con un "TSpeedButton", el cual tiene, entre otras características, la de que no toma el foco de entrada.

Entonces, al hacer clic en dicho "TSpeedButton" sí que podremos averiguar si el foco se encuentra en alguno de los "TEdit" del formulario, y, en caso afirmativo, tomar el valor de su propiedad "Text". Vamos allá, aver si adelantamos algo:

Código Delphi [-]
var
  TextoEdit: string;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if Edit1.Focused then
    TextoEdit := Edit1.Text
  else if Edit2.Focused then
    TextoEdit := Edit2.Text
  else
    ShowMessage('Ningún Edit tiene el foco');

  // Para ver el resultado...
  ShowMessage(TextoEdit);
end;

Supongamos ahora que tenemos más de dos "TEdit" y no queremos liarnos con "if... else if...", podríamos recorrer los componentes del formulario, averiguar si el que correspoda es un "TEdit" y si además tiene el foco de entrada:

Código Delphi [-]
var
  TextoEdit: string;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to ComponentCount-1 do
  begin
    if (Components[i] is TEdit) and TEdit(Components[i]).Focused then
      TextoEdit := TEdit(Components[i]).Text;
  end;

  // Para ver el resultado...
  ShowMessage(TextoEdit);
end;

Sin embargo, se al hilo de todo esto me he acordado de la propiedad "ActiveControl" del formulario en que se encuentren los "TEdit" que nos interesen. Dicha propiedad contiene el control (componente) que tiene el foco de entrada en el formulario, así pues, y, siguiendo con nuestro ejemplo de utilizar el evento "OnClick" del "TSpeedButton" podría quedarnos algo así:

Código Delphi [-]
var
  TextoEdit: string;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if ActiveControl is TEdit then
    TextoEdit := TEdit(ActiveControl).Text
  else
    ShowMessage('Ningún "TEdit" tiene el foco');

  // Para ver el resultado...
  ShowMessage(TextoEdit);
end;

No sé. Como ves la cosa puede plantearse de varias maneras y en buena medida dependerá de lo que estés tratando de llevar a cabo. No temas explayarte en su explicación, si lo crees oportuno. Yo espero haberte dado al menos alguna que otra posible idea. La solución es cosa tuya.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 11-05-2006
freelance freelance is offline
Registrado
 
Registrado: may 2006
Posts: 9
Poder: 0
freelance Va por buen camino
Todo bien aunque ...

Mejor usa ControlCount y no ComponentCount
Responder Con Cita
  #6  
Antiguo 11-05-2006
freelance freelance is offline
Registrado
 
Registrado: may 2006
Posts: 9
Poder: 0
freelance Va por buen camino
perdón ...

Usa ControlCount en vez de ComponentCount
y Controls[i] en vez de Components[i]
Responder Con Cita
  #7  
Antiguo 23-04-2006
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
La propiedad ActiveControl de un formulario apunta al control que tenga el foco. Entonces yo haría algo como:

Código Delphi [-]
if (ActiveControl is TEdit) then
  dato := TEdit(ActiveControl).Text;

// Saludos
Responder Con Cita
  #8  
Antiguo 23-04-2006
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
que mas puedo decir..gracias a los dos en especial a roman...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Alinear TEdit rebollo75 Varios 2 15-11-2004 13:35:58
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 20:13:48
obtener la clave del dato grabado? maruenda Conexión con bases de datos 6 11-05-2004 07:07:50
TEdit RoyTan Varios 5 26-11-2003 22:12:33
Array de TEdit tarco35 Varios 4 21-10-2003 10:23:52


La franja horaria es GMT +2. Ahora son las 23:58:06.


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