Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
ajustar componentes en form

Hola alguien me podria decir como hacer para que todos los componentes que estan dentro del form principal se ajusten al tamaño de pantalla dependiendo si tambien quiero maximizar el form o redimenzionar el form en tiempo de ejecucion.... y si quiero cambiar de pantalla que esta tambien se adapte a esta pantalla..
alguien me puede ayudar ? porque ayer estuve probando mi programa en una pantalla de 21'' y se descuadraba muchas cosas y el programa lo hice con una pantalla de 19''

bueno gracias
espero me ayuden
Responder Con Cita
  #2  
Antiguo 21-10-2010
Galahad Galahad is offline
Miembro
 
Registrado: abr 2007
Posts: 218
Poder: 18
Galahad Va por buen camino
ajustar componentes a pantalla

Este problema se ha comentado muchas veces en el foro, te recomiendo que hagas pruebas con la propiedad 'Anchors' de los componentes, utiliza el buscador del foro, por ejemplo aqui se trata este tema.

Saludos...
Responder Con Cita
  #3  
Antiguo 27-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
he probado la propiedad anchors y tambien en algunos posts que encontre en este foro el codigo que encontre lo utilize pero sin tener exito, se resescala un poco pero igual sigue viendose feo..

he visto programas muy simples y todos funcionan para cualquier resolucion.. y no puedo encontrar nada adecuado para poder hacerlo con mi aplicacion

alguien me ayuda ? alguien que halla hecho un programa en delphi que se ajuste a cualquier resolucion.. y cuando se resscale tambien se reescale sin que los componentes se escondan ?

gracias espero ayuda..
Responder Con Cita
  #4  
Antiguo 27-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Con una busqueda en el foro con la palabra 'redimensión', encontré estos temas relacionados a componentes:
LINK 1
LINK 2
LINK 3
LINK 4
LINK 5

No son todos, la búsqueda me arrojó 146 páginas...


Saludos.
Responder Con Cita
  #5  
Antiguo 28-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
hola ecfisa probe tu codigo

Código Delphi [-]
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var
  i:Integer;
begin
  for i:= 0 to ComponentCount - 1 do
  begin
    TControl(Components[i]).Left:= Round(NewWidth * TControl(Components[i]).Left / Width);
    TControl(Components[i]).Top:=  Round(NewHeight * TControl(Components[i]).Top / Height);
  end;
end;

y me da error access violation
estoy usando delphi 2010
Responder Con Cita
  #6  
Antiguo 28-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Rofocale.

Yo uso Delphi 7 y por supuesto no me dá ese error. No sé que pueda estar pasando, no creo que Delphi 2010 haya
cambiado tanto como para no aceptar un código tán simple. Supongo que las propiedades TForm.ComponentCount y
TForm.Components debe soportarlas.

Fijate así, sólo para probar, por que sinceramente no tengo idea de Delphi 2010.
Código Delphi [-]
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var
  i:Integer;
begin
 for i:= 0 to Self.ComponentCount - 1 do
  begin
    TControl(Self.Components[i]).Left:=
      Round(NewWidth * TControl(Self.Components[i]).Left / Self.Width);
    TControl(Self.Components[i]).Top:=
      Round(NewHeight * TControl(Self.Components[i]).Top / Self.Height);
  end;
end;

De todos modos este código ajusta las posiciones de los componentes, no el tamaño.

Saludos.

Última edición por ecfisa fecha: 28-10-2010 a las 05:27:17.
Responder Con Cita
  #7  
Antiguo 28-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
no funciona ecfisa..dice Access Violation at address...
Responder Con Cita
  #8  
Antiguo 28-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Rofocale Ver Mensaje
no funciona ecfisa..dice Access Violation at address...
Hola Rofocale.

Leyendo con atención el link , se puede apreciar el comentario del compañero FaKWeb que dice:
Cita:
Gracias por las respuestas... En la web de Torry, encontre algunos que podrian haberme servido.. Igual, por plena curiosidad proble el ide Delphi 10, y quede totalmente conforme.. Tiene todas esas opciones, de forma nativa, con solo controlar un par de parametros.. Para tenerlo en cuenta a la hora de cambiar el IDE.. Gracias a todos...
Quizá el problema se desata al intentar forzar una acción que ya está contemplada por Delphi 2010...

Revisá en la ayuda y en el User's Guide de Delphi si dice algo sobre el tema. Me es imposible darte otra sugerencia, ya que como te comenté antes,
no tengo Delphi 2010 para probar el código.


Saludos.
Responder Con Cita
  #9  
Antiguo 08-12-2010
Avatar de Matorral
Matorral Matorral is offline
Miembro
 
Registrado: oct 2006
Ubicación: Ferrol-Galicia
Posts: 31
Poder: 0
Matorral Va por buen camino
Hola Rofocale.

He probado el código y también me daba el mismo error. En mi caso me lo daba porque intentaba asignar valores (left y top) a propiedades readonly de componentes que no pertenecían a la clase TControl.

He cambiado el código y ya me funciona.

Código:
 
Código Delphi [-]
procedure TPrincipal.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var i:Integer;
var ClassRef: TClass;
var lEsControl:boolean;
begin
  for i:= 0 to ComponentCount - 1 do begin
    lEsControl:=False;
    ClassRef := Components[i].ClassType;
    while ClassRef <> nil do begin
      if ClassRef = TControl then
        lEsControl:=True;
      ClassRef := ClassRef.ClassParent;
    end;
    if lEsControl then begin
      TControl(Components[i]).Left:= 
           Round(NewWidth * TControl(Components[i]).Left / Principal.Width);
      TControl(Components[i]).Top:=  
           Round(NewHeight * TControl(Components[i]).Top / Principal.Height);
    end;
  end;
end;
Espero que no sea demasiado tarde y te sirva el código.

Un saludo.
__________________
Inieeeesssstademiviiiiidaaaaa.
Responder Con Cita
  #10  
Antiguo 08-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Matorral.

No había pensado en la posibilidad de un componente que no derive de TControl como por ejemplo TIBQuery o TDataSource.
Seguramente el error que le dá a Rofocale viene por ahi...

Se puede solucionar con una simple verificación:
Código Delphi [-]
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var
  i:Integer;
begin
  for i:= 0 to Self.ComponentCount - 1 do
    if Components[i] is TControl then
    begin
      TControl(Components[i]).Left:=
        Round(NewWidth * TControl(Components[i]).Left / Width);
      TControl(Components[i]).Top:=
        Round(NewHeight * TControl(Components[i]).Top / Height);
    end;
end;

Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Componentes sin form. rauros Varios 33 31-07-2008 08:51:44
Ayuda con componentes en form Vinicio Varios 8 13-09-2006 21:38:50
como ajustar componentes al form? crievep OOP 3 12-04-2006 20:25:43
componentes sin form coleleon OOP 1 30-11-2005 13:10:56
Ajustar un Form al ancho de un texto salvica Varios 10 01-05-2004 04:11:02


La franja horaria es GMT +2. Ahora son las 21:23:49.


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
Copyright 1996-2007 Club Delphi