Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Form MDIchild controlados por un TabControl (https://www.clubdelphi.com/foros/showthread.php?t=36865)

afxe 26-10-2006 19:44:54

Form MDIchild controlados por un TabControl
 
Hola foristas.

Uso D7 y FB2.0 La idea básicamente es esta: http://www.codeproject.com/csharp/MDITabBrowsing.asp
Tengo una aplicación MDI, y mis clientes piden que las ventanas 'hijas' se abran maximizadas, pero que puedan facilmente cambiar de una ventana a otra. Así que se me ocurrió poner un tabcontrol alineado al Top y uso los eventos OnCreate, OnDestroy, OnActivate, etc. para controlar los Forms que se abren y la pestaña a las que lo asocio.

La duda:
- Me gustaría que cada pestaña del tabcontrol tuvieran un pequeño icono en forma de aspa para que el usuario pueda cerrar las pestañas (y su form asociado). ¿se puede hacer o hay que buscar un componente apropiado?
- ¿Lo estoy haciendo de la mejor manera posible? Me lo he currado, pero si alguien viene con un truquito de la API no me importará rectificar el código.

Gracias a todos.

afxe 27-10-2006 13:26:28

Me respondo yo: Teneis razón... era demasiado obvio.
 
Asignar un TImageList, era tan simple la respuesta al cómo poner un gráfico en los tabs que no merecía la pena ni que contestarais.... Para controlar el OnClick sobre el Bitmap que se dibuje he programado el evento onMouseUp de la siguiente forma:

Código:

procedure TFrmMain.tcVentanasMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  i : Integer;
begin
  i := tcVentanas.TabRect(tcVentanas.TabIndex).Left;
  if PtInRect(Rect(7,2,20,16), Point(X-i, Y)) then
    SendMessage((tcVentanas.Tabs.Objects[tcVentanas.TabIndex] as TForm).Handle, WM_CLOSE, 0, 0);
end;

Y funciona perfectamente (ni que decir tiene que los forms que se abren los he asociado a la lista Objects de los Tabs del TabControl).

En cuanto a la pregunta de si es la mejor forma de hacerlo, queda en el aire por si alguien da alguna idea...

barencibia 11-05-2010 14:54:54

ayuda
 
Hola, he leído tu mensaje y me ha interesado mucho. He estado intentado hacer lo que comentas con el TabControl pero no lo consigo. Me podrías decir como abres varios formularios en un tabcontrol en diferentes pestañas. Yo lo hago pero cuando abro un nuevo form, el otro me desaparece.
Te pongo lo que he hecho a ver que me dices: Tengo un tabcontrol que se llama TabControl1:

frmPersonal := TfrmPersonal.Create(TabControl1);
TabControl1.Tabs.Add('Personal');
TabControl1.TabIndex := 0;
frmPersonal.Parent := TabControl1;
frmPersonal.Align := alClient;
frmPersonal.BorderStyle := bsNone;
frmPersonal.Left := 0;
frmPersonal.Top := 0;

Pero cuando abro el formulario de Clientes de la misma manera, la ventana de personal me desaparece. ¿Como asignas un form a una pestaña?

Muchas gracias


La franja horaria es GMT +2. Ahora son las 06:14:21.

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