Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2011
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Formulario que ocupe toda la pantalla

Buenas a tod@s,

quisiera que un formulario se mostrara siempre ocupando toda la pantalla. Quiero evitar con esto que dependiendo de la resolución del monitor se vea más o menos grande.

Saludos
Responder Con Cita
  #2  
Antiguo 02-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Para que un formulario ocupe la pantalla puedes dimensionarlo al tamaño de ésta:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Left:= 0;
  Top:= 0;
  Width:= Screen.Width;
  Height:= Screen.Height;
end;

Puede que te interese la lectura de este tema.

Saludos.
Responder Con Cita
  #3  
Antiguo 03-10-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 21
newtron Va camino a la fama
Hola.

Por otro lado si lo que te interesa es redimensionar los componentes de la pantalla tendrás que utilizar scaleby, haz una búsqueda que ya se ha tratado ese tema.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 03-10-2011
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Hola newtron,

estoy buscando código que utilice scaleby para redimensionar los componentes del formulario y no he encontrado nada, ¿me puedes echar un cable?.

Gracias y un saludo
Responder Con Cita
  #5  
Antiguo 03-10-2011
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
concretamente estoy utilizando esto:

Cita:
Height:= Height * Screen.Height div Alto;
Width:= Width * Screen.Width div Ancho;
ScaleBy(Screen.Width, Ancho); //en base al ancho
ScaleBy(Screen.Height, Alto); // en base al alto.
previamente tengo definido el ancho y alto con lo que lo diseñé.

El problema está en que, por ejemplo, un componente dbgrid 'si' se dimensiona pero los campos que continen 'no' y me aparece el odiado scroll.

Gracias
Responder Con Cita
  #6  
Antiguo 03-10-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 21
newtron Va camino a la fama
El asunto es que es peliagudo, en el caso de los grids tendrás que redimensionar también las casillas del mismo. Yo no uso dbgrids pero en el caso del stringgrid lo que hago es esto:

Código Delphi [-]
      StringGrid.DefaultRowHeight := DefaultRowHeight*longint ( screen.height ) DIV 600;

igualmente tendrás que hacer algo parecido con el width de las columnas.

El 600 es porque yo desarrollo a 800x600.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #7  
Antiguo 03-10-2011
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 Parsec.

Ya lo mencionó escafandra más arriba, pero como está codificado en C++ quizá no lo hayas podido probar.

Este código funciona razonablemente bién:
Código Delphi [-]
procedure AdaptarResolucion(AForm: TForm; Alto,Ancho: Integer);
begin
  with AForm do
  begin
    if Screen.PixelsPerInch = 96 then
    begin
      ClientHeight := ClientHeight * Screen.Height div Alto;
      ClientWidth := ClientWidth * Screen.width div Ancho;
      ScaleBy(Screen.Width, Ancho);
    end
    else if Screen.PixelsPerInch = 120 then
    begin
      ClientHeight := ClientHeight * Screen.Height div Alto;
      ClientHeight := ClientHeight + ((ClientHeight*15) div 100);
      ClientWidth := ClientWidth * Screen.Width div Ancho;
      ClientWidth := ClientWidth + ((ClientWidth*15) div 100);
      ScaleBy(Screen.Width,Ancho);
      Top := Top - 70;
      Left := Left - 70;
    end
    else
    begin
      ClientHeight := ClientHeight * Screen.Height div Alto;
      ClientWidth := ClientWidth * Screen.width div Ancho;
      ScaleBy(Screen.Width,Ancho);
    end;
  end;
end;

Ejemplo de llamada:
Código Delphi [-]
   AdaptarResolucion(Form1, 768, 1024);


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-10-2011 a las 14:07:38. Razón: Agregar ejemplo de llamada
Responder Con Cita
  #8  
Antiguo 03-10-2011
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
A eso me refiero newtron, para el caso de los Dbgrid o cualquier otro componente con características similares, tengo que ir columna por columna y cabecera por cabecera redimensionando, ¿verdad?.

Gracias Ecfisa
Gracias Newtron
Responder Con Cita
  #9  
Antiguo 03-10-2011
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Así es como lo he solucionado...

En la propiedad Align del form debe de llevar alClient, para que ocupe toda la pantalla.


Cita:
x:=Screen.Width;
y:= Screen.Height;

Height := Height * y div alto;
Width := Width * x div ancho;

ScaleBy(Screen.Width, ancho);
//El dbgrid no hace falta escalarlo porque lo hace según su contenido (ver a continuación)
// Dbgrid1.ScaleBy(Screen.Width, ancho);
Dbgrid1.Columns[0].Width:=Dbgrid1.Columns[0].Width * x div ancho;
Dbgrid1.Columns[1].Width:=Dbgrid1.Columns[1].Width * x div ancho;
Dbgrid1.Columns[2].Width:=Dbgrid1.Columns[2].Width * x div ancho;
Dbgrid1.Columns[3].Width:=Dbgrid1.Columns[3].Width * x div ancho;
Dbgrid1.Columns[4].Width:=Dbgrid1.Columns[4].Width * x div ancho;

Dbgrid1.Columns[0].Title.Font.Size:=Dbgrid1.Columns[0].Title.Font.Size * x div ancho;
Dbgrid1.Columns[1].Title.Font.Size:=Dbgrid1.Columns[1].Title.Font.Size * x div ancho;
Dbgrid1.Columns[2].Title.Font.Size:=Dbgrid1.Columns[2].Title.Font.Size * x div ancho;
Dbgrid1.Columns[3].Title.Font.Size:=Dbgrid1.Columns[3].Title.Font.Size * x div ancho;
Dbgrid1.Columns[4].Title.Font.Size:=Dbgrid1.Columns[4].Title.Font.Size * x div ancho;
Habría que ver la forma de optimizar el código para no repetir tanto Columns[0], [1], etc. y el formulario queda perfecto sea cual sea la resolución donde se vaya a mostrar.
Responder Con Cita
  #10  
Antiguo 03-10-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 21
newtron Va camino a la fama
Bueno, si no me equivoco tu código se podría optimizar un poco de la siguiente manera:

Código Delphi [-]
For N:=0 to Dbgrid1.Colcount do begin
  Dbgrid1.Columns[N].Width:=Dbgrid1.Columns[N].Width * x div ancho;
  Dbgrid1.Columns[N].Title.Font.Size:=Dbgrid1.Columns[N].Title.Font.Size * x div ancho;
end;

Saludos
__________________
Be water my friend.
Responder Con Cita
  #11  
Antiguo 03-10-2011
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 Parsec Ver Mensaje
Habría que ver la forma de optimizar el código para no repetir tanto Columns[0], [1], etc.
No lo probé pero creo que así debería funcionar sin problemas:
Código Delphi [-]
...
var
  i: Integer;
begin
  ...
  with DBGrid1 do
    for i:= 0 to Columns.Count -1 do
    begin
      Columns[i].Width:= Columns[i].Width * x div ancho;
      Columns[i].Title.Font.Size:= Columns[i].Title.Font.Size * x div ancho;
    end;
end;

Un saludo.

Edito: newtron, me alegra saber que tenemos en común algo más que la viajera...
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-10-2011 a las 18:02:34.
Responder Con Cita
  #12  
Antiguo 03-10-2011
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 Parsec.

Me acabo de acordar del método ScaleControls:
Código Delphi [-]
...
type
  TDBGrid = class(DBGrids.TDBGrid);
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
  ...

implementation

...
begin
  DBGrid1.ScaleBy(1024, Screen.Width);
  DBGrid1.ScaleControls(1024, Screen.Width);
end;
Pero tendrías que probar si realiza lo que buscas en las diferentes resoluciones...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #13  
Antiguo 03-10-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Edito: newtron, me alegra saber que tenemos en común algo más que la viajera...
Ojalá amigo ecfisa, ojalá porque creo que me faltarán vidas para llegar a tu nivel.
__________________
Be water my friend.
Responder Con Cita
  #14  
Antiguo 03-10-2011
Parsec Parsec is offline
Miembro
 
Registrado: abr 2006
Posts: 143
Poder: 19
Parsec Va por buen camino
Lo probaré Ecfisa.

Muchas gracias Newtron y Ecfisa por la ayuda.

Saludos cordiales
Responder Con Cita
  #15  
Antiguo 03-10-2011
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 newtron Ver Mensaje
Ojalá amigo ecfisa, ojalá porque creo que me faltarán vidas para llegar a tu nivel.
Vas a tener que repetir ese mantra varias vidas seguidas para que alguién (sobre todo yo) pueda creerlo...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-10-2011 a las 23:40:10.
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
Captura de pantalla (de formulario) Duc Gráficos 5 05-03-2009 18:30:46
QuickRep.Preview deja de ocupar toda la pantalla Tcmn Impresión 1 28-10-2006 01:29:51
Visualizar una pagina asp sin que ocupe toda la pantalla mamen .NET 6 12-11-2004 14:32:40
Form que ocupe toda la pantalla Mauro® Varios 2 10-06-2004 23:07:55
forma que ocupe toda la pantalla cahosoft Varios 7 01-05-2004 01:28:05


La franja horaria es GMT +2. Ahora son las 09:16:17.


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