Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Alineación de controles (https://www.clubdelphi.com/foros/showthread.php?t=13474)

roman 19-08-2004 18:51:10

Alineación de controles
 
Hola,

Tengo un formulario con un ToolBar, un TreeView y un Memo. Quiero alinear los controles de manera que el ToolBar y el Memo se "peguen" a la parte superior (Alignment = alTop) y el TreeView a la izquierda (Alignment = alLeft).

Si pongo las propiedades tal y como comento los controles se colocan así:


Código:

+--------------------------------------+
|        Toolbar (alTop)              |
+--------------------------------------+
|                                      |
|          Memo (alTop)              |
|                                      |
|                                      |
+-------------+------------------------+
|            |
|  TreeView  |
|  (alLeft)  |
|            |
|            |
|            |
|            |
|            |
|            |
|            |
+-------------+

pero yo quisiera que se colocasen así:


Código:

+--------------------------------------+
|        ToolBar (alTop)              |
+-------------+------------------------+
|            |                        |
|            |    Memo (alTop)      |
|  TreeView  |                        |
|  (alLeft)  |                        |
|            +------------------------+
|            |
|            |
|            |
|            |
|            |
|            |
|            |
|            |
|            |
|            |
+-------------+

¿Existe alguna forma de hacer esto?

Sé que podría lograr el efecto colocando un Panel con Alignment = alClient y dentro de él al Memo:


Código:

+--------------------------------------+
|        ToolBar (alTop)              |
+-------------+------------------------+
|            |+----------------------+|
|            ||    Memo (alTop)      ||
|  TreeView  ||                      ||
|  (alLeft)  ||                      ||
|            |+----------------------+|
|            |                        |
|            |                        |
|            |                        |
|            |        Panel          |
|            |      (alClient)      |
|            |                        |
|            |                        |
|            |                        |
|            |                        |
|            |                        |
+-------------+------------------------+

pero el problema es que quiero que el formulario sea MDI, y el Panel ocultaría los formulario hijos.

// Gracias

Kreyser 19-08-2004 19:19:21

Aliniado de controles
 
Hola roman, prueba con esto:

- ToolBar : alTop
- TreeView: alLeft
- Memo: alClient

Espero te sirva.

Un saludo.

roman 19-08-2004 19:22:15

Gracias Kreyser, pero de esta forma el Memo ocupa toda el área cliente lo que ocultaría los formularios hijos.

// Saludos

Kreyser 19-08-2004 20:32:42

Ok
 
Perdona Roman, hay dias q ni con dibujos... ;) ;) ;)

Supongo que deseas hacer esto, para que no se desvirtue el form ante una modificación de tamaño por parte del usuario, solo se me ocurre mencionarte (si bien supongo eres plenamente consciente de ello) la propiedad Anchors [akLeft,akTop,akRight,akBottom].

Tal como entiendo, si realizaras algo tal que esto:

Código:

 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Align:=alCustom;
  Memo1.Left:=TreeView1.Width;
  Memo1.Top:=ToolBar1.Height;
  Memo1.Height:=X;
  Memo1.Width:=Form1.Width-TreeView1.Width;
  Memo1.Anchors:=[akLeft,akTop,akRight];
end;

El memo quedaria fijado aun con cambios por parte del usuario.

Puede que no tenga nada que ver con tus intenciones, pero te lo dejo caer por si ayudara.

Saludos.

roman 19-08-2004 22:05:29

Cita:

Empezado por Kreyser
Puede que no tenga nada que ver con tus intenciones, pero te lo dejo caer por si ayudara.

Gracias. De hecho sí, éste es el efecto que deseo; el problema es que al hacerlo así Delphi no determina correctamente el área cliente de manera que al maximizar los formularios hijos éstos quedan ocultos por el Memo.

Un saludo

vic_ia 20-08-2004 23:37:50

hola roman...

estaba observando el windows media 9 en la pestaña de biblioteca multimedia y me parece que la forma en que quieres acomodar tus elementos se asemeja mucho a esta pantalla y observo que ésta ha utilizado controles splitter (bueno algo similar) para la creación del diseño... tal vez por ese lado podrias checar si es posible realizar lo que buscas....

saludos...

moesis 22-08-2004 03:44:12

Saludos

Roman, ¿podrías explicar esto que comentas?

Cita:

pero el problema es que quiero que el formulario sea MDI, y el Panel ocultaría los formulario hijos.
Gracias.

Sirkius 22-08-2004 09:33:39

Creo que se refiere a que donde está el memo sigue siendo área cliente, donde los formularios hijos pueden estar (y logicamente, estarán ocultos). Con los align consigues que no forme parte del area cliente y que si alguien lleva un formulario por ahí, quede oculto pero sale una scrollbar de desplazamiento vertical.

salvica 22-08-2004 23:21:44

En TRUCOMANIA http://www.q3.nu/trucomania/truco.cgi?348&esp ponen un código para hacer transparentes los Forms, a lo mejor te sirve o te ayuda algo.

Suerte

Gydba 24-08-2004 00:00:57

Hola Roman,

La verdad, y a pesar de ser muy gráfica tu exposición, no entiendo bien como lo querés (Toda mi comprensión se quedó hace 3 horas cuando salí del laburo :)).

Yo probé algo así, según entendí por supuesto:
Código Delphi [-]
procedure TForm1.FormResize(Sender: TObject);
begin
   Memo1.SetBounds(TreeView1.Width, ToolBar1.Height, (Self.ClientWidth - TreeView1.Width), Memo1.Height)
end;
Espero no hacer un lio con esto, pero es lo más simple que puedo hacer por el momento con lo cansado que estoy.

Saludos para todos.


La franja horaria es GMT +2. Ahora son las 03:52:01.

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