Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Poder seleccionar ToolButton (https://www.clubdelphi.com/foros/showthread.php?t=82733)

Parsec 08-04-2013 14:44:17

Poder seleccionar ToolButton
 
Hola de nuevo,

me he atascado en una tontería.

Tengo varios ToolButton: ToolButton1..ToolButton5, ¿cómo puedo componer el nombre del ToolButton desde un procedimiento pasándole solo el número final?.

Pongo un ejemplo:
Código Delphi [-]
procedure TForm1.habilitauno(k:integer);
var
i:integer;
    begin
    for i := 1 to 10 do
      begin
         If i=k then
           'ToolButton'+IntToStr(i)].Enabled:=True; 
          else
           'ToolButton'+IntToStr(i).Enabled:=False;
      end;

    end;

Quiero habilitar, por ejemplo, ToolButton3 pero la forma de crear la cadena no es la correcta.
Saludos

fjcg02 08-04-2013 14:55:02

Hola,

http://clubdelphi.com/foros/showthre...=findcomponent

mensaje nº 10.

Saludos

Parsec 10-04-2013 00:51:17

Hola,

gracias por contestar, he probado con el siguiente código (sacado del hilo que me has puesto), pero no funciona.
Código Delphi [-]
for i := 1 to 10 do
      begin
         If i=k then
           TToolButton(FindComponent('ToolButton'+IntToStr(i))).Enabled:=True

          else
          TToolButton(FindComponent('ToolButton'+IntToStr(i))).Enabled:=False;
      end;

Los ToolButton no se deshabilitan, ¿que puede pasar?

Saludos

Caminante 10-04-2013 01:25:17

No veo la necesidad del bucle si solo vas a activar/desactivar un solo toolbutton.
Saludos

fjcg02 10-04-2013 09:25:57

Prueba a ver con una variable intermedia. Esto me funciona.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var toolB: TToolButton;
begin

toolB:= TtoolButton(findComponent('ToolButton1'));
toolB.Enabled:= False;

end;

Saludos

Parsec 10-04-2013 13:55:19

Cita:

Empezado por Caminante (Mensaje 458345)
No veo la necesidad del bucle si solo vas a activar/desactivar un solo toolbutton.
Saludos

Tengo 10 botones, cuando habilito uno de ellos tengo que deshabilitar los demás.

Ya funciona!!, muchas gracias fjcg02.

Saludos.

fjcg02 10-04-2013 14:06:32

A mandar ;)

Hoy ya me he ganado las alubias.

Saludos

Chris 10-04-2013 21:30:23

La próxima vez es mejor que utilices TActions para los TToolButtons.

Parsec 12-04-2013 19:10:02

Hola Chris,

Utilizo TtoolBar, porque parece lo más indicado, con el botón derecho añades ToolButtons a tu gusto.
¿Que ventajas tiene TActions?, aún puedo cambiar.

Saludos

Chris 12-04-2013 19:42:20

Cita:

Empezado por Parsec (Mensaje 458503)
Hola Chris,

Utilizo TtoolBar, porque parece lo más indicado, con el botón derecho añades ToolButtons a tu gusto.
¿Que ventajas tiene TActions?, aún puedo cambiar.

Saludos

Primero: si utilizas un TAction no tendrás que dejar de usar los TToolbutton's. Los ToolButton's estarán relacionados los TAction's por medio de la propiedad Action del primero.

Antes de seguir definamos unos terminos en un entorno Delphi:
Vista: La conforman todas las ventanas, dialogos y todos tipo de controles visibles e interactivos. Por ejemplo TEdit, TButton, TToolButton, etc.

Controlador: Son componentes invisibles al usuario final. Controlan y centralizan la lógica de negocios de la aplicación. Un ejemplo de controlador son los TAction, TApplicationEvents, TTimer, TDataset, etc.


El componente TAction funciona como un puente entre el controlador y la vista, al igual que lo hace el TDatasource. Así que por ejemplo, si deshabilitas un TAction automáticamente se deshabilitarán todos los controles visibles relacionados a ése TAction. Además de la propiedad Enabled, el componente TAction puede heredar muchas más propiedades gráficas a los controles relacionados, ejemplo: las propiedades Caption e Hint.


Usar TAction tiene muchas ventajas. Una de ellas es que centralizas el código en en los controladores y no en las vistas. Las últimas se vuelven más independientes de la lógica de negocios de tu aplicación.

Saludos!

Parsec 12-04-2013 19:55:52

Gracias por tu tiempo y tu explicación, lo probaré.

Saludos


La franja horaria es GMT +2. Ahora son las 09:44:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi