PDA

Ver la Versión Completa : Poder seleccionar ToolButton


Parsec
08-04-2013, 14:44:17
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:
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/showthread.php?t=82514&highlight=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.
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.

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
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
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