Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Escribir y pasar Foco a un Edit (https://www.clubdelphi.com/foros/showthread.php?t=86548)

pepesoft 29-08-2014 23:22:31

Escribir y pasar Foco a un Edit
 
Hola amigos del foro, quiero que me ayuden con este problemita.

Tengo un TEdit y varios TRadiButton, lo que pasa es que al seleccionar un RadioButton el Focus queda en él. y lo que quiero es que al precionar una tecla cualquiera ponga el focus en el TEdit y al mismo tiempo escriva el valor de la tecla que se pulso.

estoy intentando con este código pero falta algo para verse bien.


Código Delphi [-]
procedure TForm1.RadioButton1KeyPress(Sender: TObject; var Key: Char);
begin
  if key in ['a'..'z','A'..'Z','1'..'9','0', #13] then
  begin
    // ....
    txtbuscar.SetFocus;
  end;
end;

Luis F. Orjuela 30-08-2014 00:45:34

Pero acaso el RadioButton no se selecciona con el mouse o con las teclas de cursor?

Tengo dudas...

Pero para lo que tú quieres debes replicar el mismo evento a los demás radiobuttons:

Código Delphi [-]
procedure TForm1.RadioButton1KeyPress(Sender: TObject; var Key: Char);
begin
  Edit1.Text:=Key;
  Edit1.SetFocus;
end;

Es decir en el Inspector de Objetos para el RadioButton2 en su envento OnKeyPress debes colocar RadioButton1KeyPress, que es el evento definido previamente, y hacer lo mismo para los demás RadioButtons..

pepesoft 30-08-2014 02:23:51

Luis F. Orejuela, gracias por tu ayuda.

El codigo quedo asi y claro que yo lo tengo que replicar en cada RadioButton, Funciona mas o menos asi. Copia el valor de la tecla pulsada, pone el foco y tambien el cursor delante del caracter que hay en el Edit.

Código Delphi [-]
procedure TForm1.RadioButtonKeyPress(Sender: TObject; var Key: Char);
begin
  if key in ['a'..'z','A'..'Z','1'..'9','0', #13] then
  begin
    txtbuscar.Text := Key;
    txtbuscar.SetFocus;
    txtbuscar.SelStart := length(txtbuscar.text);
  end;
end;

engranaje 31-08-2014 11:42:29

No es necesario que lo repliques en cada RadioButton. Basta con que se asigne en el OnKeyPress de cada radio button el mismo procedure. Todos los RadioButton pueden apuntar al mismo (si realmente quieres hacerlo exactamente igual en todos ellos)

Por otra parte si además de lo que has explicado cada radio button debe hacer cosas adicionales, o el texto debe enviarse a disitintos edits, puedes crearte un procerude del tipo:

Código Delphi [-]
procedure EnviarTeclaAtEdit(var Key: Char; aDestinoTecla:tEdit); 
begin   
  if key in ['a'..'z','A'..'Z','1'..'9','0', #13] then   
  begin
    aDestinoTecla.Text := Key;    
    aDestinoTecla.SetFocus;     
    aDestinoTecla.SelStart := length(aDestinoTecla.text);   
  end; 
end;

Para despues llamar al procedure en el OnKeyPress de cada radioButton de esta forma, pasandole el edit en el que quieras escribir:

Código Delphi [-]
procedure TForm1.RadioButtonKeyPress(Sender: TObject; var Key: Char); 
begin  
  EnviarTeclaAtEdit(Key,txtbuscar); 
end;

pepesoft 01-09-2014 02:30:55

engranaje, Excelente respuesta justo lo que necesito Gracias.


La franja horaria es GMT +2. Ahora son las 14:03:53.

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