Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   MDI utilizando un Tpanel como parent (https://www.clubdelphi.com/foros/showthread.php?t=69069)

mjjj 23-07-2010 19:27:06

MDI utilizando un Tpanel como parent
 
Hola, no se si este tema cabe en esta categoría, espero que si.

Este problema me surgio después de resolver un asunto con carga dinamica de TForm... lo que está en otro hilo.

Vamos al grano.
Utilizo Delphi 2006, en una aplicación tengo 2 Form, el main el cual contiene un TPanel y un componente de terceros (TMS Software, de pago), y un Tform al cual lo llamo desde el principal y se carga de forma dinamica en modo de ejecución.

El punto es que necesito que el Tform cargado, este en el TPanel (parent).
Utilizo el siguiente codigo.

Código Delphi [-]
var
form:Tform;
begin
      form:= Tform.Create(self);
//    form.FormStyle := fsmdichild;
      form.Parent := panel1;
       form.show;
end;

Trate de utilizar MDI, pero no funciona bien el componente de tercero que estoi utilizando, y no lo quiero dejar de lado (por eso comente esa linea, para que se sepa que ya trate eso)

El problema es que algunos componentes como TEdit, TMemo, etc. funcionan a media... no los puedo seleccionar.

Recalque la linea del parent, ya que sin ésta funciona bien, pero el TForm puede andar libre por toda la pantalla, y eso es que lo quiero evitar.

Espero me puedan ayudar, gracias

coso 23-07-2010 21:20:38

Hola,
prueba que el Owner tambien sea Panel1 y nos cuentas. Un saludo.

Chris 23-07-2010 21:51:43

Supongo que lo que quieres es que la ventana hija ocupe todo el tamaño del panel. para hacer esto deberás quitarle todos los bordes a la ventana hija y maximizarla. No te preocupes, quedará como si fuese un panel embebido dentro del form. Otra mejor opción en lugar de maximizar la ventana es que le indiques que deberá ocupar toda el área cliente con la propiedad Align/ment.

saludos,
chris

mjjj 24-07-2010 00:12:09

Tengo casi resuelto mi problema, finalmente utilize MDI.

Lo último que quiero resolver es como sacar la barra de la aplicación.
La forma mas sencilla seria poniendo la propiedad del form, borderstyle en bsnone, pero esto no me sirve, ya que necesito sacar la barra y ademas que la ventana del form sea sizeable.

Esto es porque el componente de tercero que utilizo hace las veces de barra, y al tener la barra de la aplicación se ve raro... 2 barras de programa.

Espero me puedan ayudar.

Gracias

ecfisa 31-07-2010 23:36:13

Hola mjjj.

Si lo que queres es un form sin bordes y sizeable, hacé lo siguiente:

Código:

type
  TForm1 = class(TForm)
  private
      procedure CreateParams(var Params: TCreateParams); override;
  public
end;
 
var
  Form1: TForm1;
  ...
implementation
 
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  BorderStyle := bsNone;
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_STATICEDGE;
  Params.Style := Params.Style or WS_SIZEBOX;
end;


Saludos.


La franja horaria es GMT +2. Ahora son las 12:47:41.

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