PDA

Ver la Versión Completa : Alineación de controles


roman
19-08-2004, 18:51:10
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í:



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

pero yo quisiera que se colocasen así:



+--------------------------------------+
| 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:



+--------------------------------------+
| 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
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
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:


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
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?


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:

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.