PDA

Ver la Versión Completa : Cambiar la una propiedades de todos los componentes de una form


Mauro®
09-01-2007, 00:43:25
Hola a todos les escribo nuevamente para hacerles una consulta, hay alguna forma de cambiar una propiedad de todos los componentes de una form?. Mi problema en concreto es el siguiente, tengo un Datamodule con varias tablas y quisiera poder cambiarles a todas la propiedad Active de una sola vez. Alguien me puede orientar con esto???

Desde ya muchas gracias a todos.
Un gran saludo.
Mauro.

samantha jones
09-01-2007, 01:02:17
podrias poner algo como esto:


for i:=0 to componentsCount -1 do
if components[i] is TTable then
TTable(components[i]).open;

Mauro®
09-01-2007, 13:47:28
Hola gracias por la respuesta, ya había probado algo similar pero no me funciona, falta algo en el Uses?

Saludos y gracias.

BuenaOnda
09-01-2007, 14:05:46
Claro.. tienes que crear una instancia del objeto...

por ejemplo para limpiar todas las cajas de texto de un Form podria poner algo como esto :

Function LimpiarCajasDeTextos(Forma : TForm);
var
Caja : TEdit;
begin

FOR J:=0 TO Forma.ComponentCount - 1 DO
BEGIN
{ Limpiamos las Edits }
IF Forma.Components[J] IS TEdit THEN
BEGIN
Caja:=Forma.Components[J] as TEdit;
Caja.Text:='';
END;
END;
end;

obviamente debes poner en el uses de tu TDataModule, la libreria correspondiente para el Form (Forms) y para el TEdit...

Suerte espero que te sirva...:D

Lepe
09-01-2007, 20:36:21
Hola BuenaOnda, para ser concisos, al código de samantha jones no le falta nada.

Se supone que ese código va en el Datamodule, y puesto que dentro de él, existen ya objetos TTable, los uses los habrá añadido Delphi.

Para ser pejigueras... como decimos por aquí, pues sí, le falta declarar la variable "i" :D.

Quizás falte algo que no es obvio:

Esto no funcionará:

procedure AbreTablas;
var i:integer;
begin
for i:=0 to componentsCount -1 do
if components[i] is TTable then
TTable(components[i]).open;
end;


Sin embargo esto sí:


procedure TDatamodule1.AbreTablas;
var i:integer;
begin
for i:=0 to componentsCount -1 do
if components[i] is TTable then
TTable(components[i]).open;
end;


Siendo TDatamodule1 el nombre de dicho módulo de datos.

Saludos