Delphi - Listar componentes

   
Vista:

Listar componentes

Publicado por Andrea (16 intervenciones) el 12/11/2010 15:24:26
Hola..
Consulta.. teniendo un form con n componentes (edits, labels, buutons, etc), hay forma de disponer de una lista de los mismos en forma automática?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Listar componentes

Publicado por skull leader (80 intervenciones) el 12/11/2010 18:28:14
si, yo uso este metodo cuando necesito deshabilitar todos los componentes de mi forma.

hago un for
for i := 0 to ComponentCount - 1 do

y teniendo una variable tipo TComponent, le doy el valor del componente actual
Component := Components[i];

despues pregunto si Component es un TControl
if Component is TControl then

y busco si el componente soporta Enabled
PropInfo := GetPropInfo(Component.ClassInfo,'Enabled');
(PropInfo : PPropInfo;)

bueno, el punto es que si estoy recorriendo la lista de componentes desde un for, debe ser posible

solo sería cosa de que recolectes la información, o si lo que quieres es una lista en tiempo de diseño, creo que debes usar un plugin como GExperts o CnPack

espero te sirva
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Listar componentes -- Alguna Idea? :-)

Publicado por Andrea (16 intervenciones) el 12/11/2010 19:44:03
Gracias por tu ayuda,
Puede recorrer los componentes de mi form y reubicarlos con el siguiente procedure:

procedure FormResize(Sender: TObject);
var
i: Integer;
AuxW, AuxH: Double;
begin

for i := 0 to ComponentCount - 1 do
begin
if (TGraphicControl(Components[i]).Visible) and (TGraphicControl(Components[i]).Align = alNone) then
begin
AuxW := TGraphicControl(Components[i]).Width;
AuxH := TGraphicControl(Components[i]).Height;

if TGraphicControl(Components[i]).ClassType = TSCButton then
AuxW := AuxW - 0.35;

TGraphicControl(Components[i]).Width := Trunc(TGraphicControl(Components[i]).Width * 1.6);
TGraphicControl(Components[i]).Left := Trunc((TGraphicControl(Components[i]).Width * TGraphicControl(Components[i]).Left) / AuxW);
TGraphicControl(Components[i]).Top := Trunc((TGraphicControl(Components[i]).Height * TGraphicControl(Components[i]).Top) / AuxH);

end;

end;

end;


El tema es que necesitaría tambien acceder de la misma manera, a cambiar el tamaño de la fuente, cosa que no estoy pudiendo...
Alguna Idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Listar componentes -- Alguna Idea? :-)

Publicado por skull leader (80 intervenciones) el 12/11/2010 20:18:12
ahora si ando corto de ideas...

solo se me ocurre intentar básicamente de la misma manera, buscando la propiedad Font donde aplique... pero sospecho que ya lo pensaste.

disculpa, si se me ocurre algo en el transcurso del día te lo hago saber.

si lo resuelves antes, nos gustaria ver como lo hiciste.

saludos =)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Listar componentes -- Alguna Idea? :-)

Publicado por Andrea (16 intervenciones) el 12/11/2010 21:10:25
Como Siempre

Los post de BigLuis ayudan y mucho: EXCELENTE

"
Notas Anteriores
Puntos por Pixel Alejandro Ojeda (25/07/2002) 2.891

Autor:
BigLuis 2.846
Fecha: 25/07/2002 19:46:07
Asunto: RE:Puntos por Pixel
Delphi al compilar el programa utiliza la resolucion del equipo en que compila y esa es la que muestra en cualquier ordenador cuando se ejecuta el programa, por lo tanto una manera sencilla, sin tener que escribir código, de solucionarlo es cambiar la resolucion de tu equipo a la que tenga en el que va a correr la aplicacion y solucionado.Peor no deja de ser una chapuza para un programador.

Aqui tienes un procedimiento para mantener la resolucion de la aplicacion ajustada a la que quieras, pasando los parametros longint
MantenResolucion(800,600) etc.
Implementalo como quieras, al crearse el formulario principal, en un boton.......

procedure TForm1.MantenResolucion(ScreenWidth,ScreenHaight :LongIntt);
var
OldFormWidth:Integer;
begin
scaled:=true;
if (screen.width<>ScreenWidth) then
begin
OldFormWidth:=width;
Height:=Longint(height)*longint(screen.height) div screenHeight;
Width:=Longint(Width)*longint(screen.Width) div screenWidth;
scaleBy(screen.width,ScreenWidth);
font.size:=(Width div OldformWidth)*font.size;
end;
end;
"


DE TODOS MODOS MUCHAS GRACIAS POR LA AYUDA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar