Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Traer al frente mdichild (https://www.clubdelphi.com/foros/showthread.php?t=43515)

carlohg 14-05-2007 00:32:48

Traer al frente mdichild
 
Buenas tardes a todos.

Quisiera saber como traer mi ventana child al frente.
Gracias

dec 14-05-2007 00:40:30

Hola,

Código Delphi [-]
ChildForm.BringToFront();

carlohg 14-05-2007 00:44:18

Hola gracias

Ya lo habia intentado pero no me funciona

Los objetos del form padre siguen apareciendo en frente.

dec 14-05-2007 00:48:34

Hola,

Cita:

Empezado por carlohg
Ya lo habia intentado pero no me funciona

Podías haberlo dicho. :)

Pero, bueno. ¿Qué objetos? Generalmente en estos casos el formulario "padre" (o "fsMDIForm") contienen sólo formularios hijos... y no otros objetos. No estoy muy puesto en aplicaciones MDI, Multiple Document Interface (porque hablamos de aplicaciones MDI, ¿verdad?), pero, yo diría que lo que el "BringToFront()" debe funcionar...

Tal vez si explicas un poco más de qué estamos hablando... qué objetos dices que están en el formulario "padre"...

carlohg 14-05-2007 00:52:57

Asi cargo mi child.

Código Delphi [-]
procedure TForm1.Margenes1Click(Sender: TObject);
var
  Child : TChild;
begin
  Child := TChild.Create(Self);
  Child.Show;
  Child.BringToFront;
end;

Cuando se carga aparece atras de todos los objetos que tenga en mi mdi padre.

gluglu 14-05-2007 01:13:46

Has comprobado que seguro tu formulario 'padre' tiene puesta la propiedad FormStyle = fsMDIForm, y que tus formularios hijos tienen puesta dicha propiedad FormStyle = fsMDIChild ?? :rolleyes:

carlohg 14-05-2007 01:19:56

Hola

Claro que si.

carlohg 14-05-2007 01:23:18

Realmente quiero hacer ese mdi child para configurar las margenes de un Richedit para imprimir

Alguna otra Sugerencia?

Código Delphi [-]
if PrintDialog1.Execute then
  begin
    PixelsX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
    PixelsY := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
    LeftSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
    TopSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
    
   {en este lugar incluiria los valores desde mi formchild}

    R.Left := Round(PixelsX * valor desde MDICHILD) - LeftSpace;
    R.Right := Round(PixelsX * valor desde MDICHILD) - LeftSpace;
    R.Top := Round(PixelsY * valor desde MDICHILD) - TopSpace;
    R.Bottom := Round(PixelsY * valor desde MDICHILD) - TopSpace;
 
{/////}

    RichEdit1.PageRect := R;
    RichEdit1.Lines.Add('');
    RichEdit1.Lines.Add(DateTimeToStr(Now));
    RichEdit1.Print('Reporte'+Edit1.Text);
  end;

dec 14-05-2007 01:52:22

Hola,

Creo que lo que te sucede es que tienes un formulario "fsMDIForm", y dentro de este ciertos controles: "TRichEdit", etc. Y estos controles se superponen a los formularios hijos. Pero es que este tipo de formularios ("fsMDIForm") no están pensados para que albergen más que otros formularios "hijos".

Diría que una solución pasa por tener un formulario hijo que contenga el "TRichEdit", por ejemplo, y otro que contenga "controles" que interactúen, si quieres, con el "TRichEdit". No sé si me explico. Al menos a mí no se me ocurre ahora mismo otra solución que esta, vamos. :)

Lepe 14-05-2007 04:07:49

carlohg, no vemos tu pantalla, no sabemos de lo que hablas ni lo que tienes en mente. Por favor, explica qué quieres conseguir, y como lo tienes hecho hasta ahora.

Desde luego, en un MDI solo debería situarse el main menu, un toolbar, un StatusBar y posiblemente un panel alineado arriba/izquierda/derecha para contener otros controles.

Saludos

roman 14-05-2007 06:41:45

Tan sólo para enfatizar lo dicho por dec y Lepe; en un formulario MDI no conviene poner nada en el área cliente. El área cliente es el área no ocupada por ningún control que tenga especificada una alineación (Alignment) distinta de alNone.

// Saludos

JXJ 14-05-2007 08:12:16

Pues no conviene, pero seria conveniente.

Estoy haciendo un programa sencillo, que tenga lo basico
de funcionalidad de los IDEs, como Delphi o visual studio.

Se me ha hecho muy facil. crear un proyecto MDI
y en el formulario "padre" (o "fsMDIForm")
poner un panel1 a la izquierda, panel2 centrado
y su propiedad align como alclient
en el panel2 pongo un control. PageControl align alclient

y panel3 a la derecha

igual que a carlohg la ventana hija MDI me sale pero no logro
ponerla por encima de los paneles o incrustarla en el PageControl

Mi intencion es insertar las ventanas MDI, en el PageControl
y que por cada ventana Hija, haya un Tab del PageControl
con su la ventana hija incrustada. Igual que como el IDE de Delphi 2006
y recientes.

Lepe 14-05-2007 14:17:35

Hola JXJ, el panel Central no debe existir. Elimínalo y prueba la ejecución, verás que es lo que necesitas.

El pageControl, lo puedes simular con un Header, una fila de Botones flat u otro tipo de cosas, que te permitiran más flexibilidad, como incluir el botón de cierre de esa "pestaña".

En apariencia será igual, pero la construcción es más sencilla. Al crear una ventana hija, creas una nueva "pestaña". Este "PageControl", lo pones en el MDIFORM en un coolbar o donde quieras.

Si carlohg está haciendo lo mismo, le será de utilidad.

Saludos

JXJ 14-05-2007 16:50:33

Gracias Lepe , voy a probar..

dec 14-05-2007 17:48:28

Hola,

Hay un componente al lado mismo del "TPageControl", que es el "TTabControl"... creo que se llama así... y que viene a ser el "TPageControl" pero sin el "Page"... es decir, que "sólo" proporciona pestañas... :)

JXJ 15-05-2007 05:02:08

Gracias Dec ya lo estoy probando


La franja horaria es GMT +2. Ahora son las 07:53:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi