Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   PageControl con botón de cerrar pestaña (https://www.clubdelphi.com/foros/showthread.php?t=95699)

LIGERO 24-05-2022 01:06:51

PageControl con botón de cerrar pestaña
 
Buenas;

Estoy haciendo una aplicación la cual dependiendo del menú, añade pestañas o páginas a un PageControl

La idea es que al lado del nombre de la página, aparezca un botón que permita cerrar dicha página, al igual que hace por ejemplo Embarcadero cuando tenemos abiertos varios ficheros del proyecto, que nos permite cerrar pulsando la X de cada pestaña.

No he visto ninguna propiedad del PageControl, ni de los TabSheet.

He buscado también en el componente TabControl, pero si exito.

Hay alguna forma de hacerlo?

Saludos

Neftali [Germán.Estévez] 24-05-2022 11:22:15

Los componentes estandard de delphi no traen esa caracteristica, aunque hoy en día es bastante habitual. Sin ir más lejos, como tú comentas, en el propio IDE de delphi, o en los navegadores (que son las que los pusieron de moda).

A partir de ahí tienes 2 opciones:
1) Optar por un componente de terceros que lo implemente.
2) Crear un componente propio que lo implemente.

1) Para la primera tienes muchas opciones, más o menos atractivas.
TMS:
https://www.tmssoftware.com/site/apc.asp
Las JVCL creo recordar que también tienen alguno.
Por supuesto las DevExpress.
Desde GetIt puedes descargar las "ChromeTabs" muy vissuales y atractivas y como su nombre indica "a semejanza" de las que implementa Chrome:
https://getitnow.embarcadero.com/tchrometabs/

Si buscas encontrarás más.

2) Para la segunda opción (por si quieres probar) puedes te puedes aventurar a derivar el componente e intentar implementar.
Al final no debe ser muy complejo, ya que sólo debes "pintar" la cruz, sobreescribiendo con alguno de los procedimientos de pintado (Draw, Paint,...). Y como segundo paso capturar los eventos de ratón para poder cerrarla cuando pulses.

Código Delphi [-]
procedure PageControlCloseButtonDrawTab(Control: TCustomTabControl; TabIndex: Integer;
      const Rect: TRect; Active: Boolean);

Código Delphi [-]
procedure PageControlCloseButtonMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Puedes revisar estas dos implementaciones; No parece muy complejo (en ambas además implementan otros movimientos de ratón, imagino que para cambiar el estado de la imagen):
https://stackoverflow.com/questions/...a-tpagecontrol
https://stackoverflow.com/questions/...phi-xe3-firemo

LIGERO 26-05-2022 01:21:15

Muchísimas gracias.
He probado el de Chrome y es muy completo


La franja horaria es GMT +2. Ahora son las 06:43:08.

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