Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Establecer botón activo (https://www.clubdelphi.com/foros/showthread.php?t=91177)

Angel.Matilla 24-11-2016 18:21:34

Establecer botón activo
 
Sé que será una tontería que seguro ya he hecho pero no soy capaz de recordar como.

Tengo este formulario que se crea de forma dinámica tanto el mensaje como los botones.

Los botones (TButton) se van añadiendo al formulario de derecha a izquierda. Ahí va la pregunta:

Como el objeto TButton no tiene el método SetFocus(), ¿Cómo hago para que el botón activo sea el último creado, el de más a la izquierda?

roman 24-11-2016 18:31:18

Cita:

Empezado por Angel.Matilla (Mensaje 511207)
Como el objeto TButton no tiene el método SetFocus(),

¿Por qué dices esto? TButton sí tiene ese método :confused:

LineComment Saludos

roman 24-11-2016 18:33:14

En todo caso, podrías intentar con la propiedad ActiveControl del formulario.

LineComment Saludos

AgustinOrtu 24-11-2016 18:43:16

Hasta donde yo se y como comenta roman, TButton al ser un TWinControl deberia tener su metodo SetFocus

SetFocus si no me falla la memoria esta implementado mas o menos asi, usando la API de Windows:

Código PHP:

  SendMessage(Handle o HWND del ButtonWM_SETFOCUS00); 


ecfisa 25-11-2016 01:46:16

Hola.

Si para mostrar el mensaje estas usando un formulario personalizado, podes hacer una función dentro del mismo que devuelva el botón que se encuentra mas a la izquierda y, despues de creados los botones, usarla para darle el foco:
Código PHP:

TButton__fastcall TMyFormMessage::mostLeftButtonvoid )
{
  
TButton *tb;
  
int mostLeft ClientWidth;

  for ( 
int i 0ControlCounti++ )
    if ( 
Controls[i]->ClassNameIs("TButton") )
      if ( 
Controls[i]->Left mostLeft )
         
tb static_cast<TButton*>(Controls[i]);

  return 
tb;
}

void __fastcall TMyFormMessage:: ...
{

  
/* En este punto los botones deberían estar creados  */

  
MostLeftButton()->SetFocus();
... 

Saludos :)

Angel.Matilla 25-11-2016 09:27:07

Gracias por las respuestas.


La franja horaria es GMT +2. Ahora son las 00:27:29.

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