Italian community of Lazarus and Free Pascal

Programmazione => LCL => Topic aperto da: Maverich - Agosto 24, 2013, 06:30:31 pm

Titolo: colorare TPageControl
Inserito da: Maverich - Agosto 24, 2013, 06:30:31 pm
invece di visualizzarlo sempre bianco vorrei poter cambiare colore al background
della pagina
il componente non dispone della property Color o di un'evento DrawItem.
si puo' ovviare inserendo un TPanel e impostando ParentColor=false align=alClient.
si puo' fare qualcosa ? meglio se generico senza Api windows.
Titolo: Re:colorare TPageControl
Inserito da: bonmario - Agosto 24, 2013, 09:10:35 pm
Non c'è tra le proprietà esposte nell'ObjectInspector, ma la puoi impostare a programma:
Codice: [Seleziona]
PageControl1.Color:=aColor;

Ciao, Mario
Titolo: Re:colorare TPageControl
Inserito da: Maverich - Agosto 24, 2013, 09:54:03 pm
questo lo ho gia' provato, ma non da risultati nemmeno dopo un refresh
il colorre di fondo resta invariato
Codice: [Seleziona]
PageControl1.Color := clNavy;
PageControl1.Refresh;
come anche
Codice: [Seleziona]
TabSheet1.Color := clGreen;
Titolo: Re:colorare TPageControl
Inserito da: Legolas - Agosto 24, 2013, 10:48:17 pm
Devi disabilitare l'utilizzo del file manifest tra le proprietà del progetto
Titolo: Re:colorare TPageControl
Inserito da: bonmario - Agosto 25, 2013, 08:07:42 am
Ciao,
ho riguardato il progetto dove lo uso, ed è urganizzato così:
ho un PageControl1, che contiene 3 TTabSheet. Ogni TTabSheet contiene a sua volta un TPanel.

Io imposto il colore sul TPageControl e su tutti i TPanel. Se non ricordo male, impostare il colore sul TPageControl, serve a colorare "le schede" che si vedono in alto.

Ciao, Mario
Titolo: Re:colorare TPageControl
Inserito da: Legolas - Agosto 25, 2013, 12:55:30 pm
Il problema è che il comportamento non è omogeneo su tutti gli OS. Su Linux probabilmente funziona senza fare altro; su Windows occorre disabilitare comunque la gestione del manifest, perché il colore del pagecontrol è una feature di cui si occupa nativamente il gestore di temi di Windows.

Per tagliare la testa al toro probabilmente la cosa migliore da fare è, come si è detto, utilizzare dei tpanel e colorare quelli :)
Titolo: Re:colorare TPageControl
Inserito da: bonmario - Agosto 25, 2013, 01:26:53 pm
Io ho un unico progetto in cui ho usato TPageControl che ho fatto nel 2009 e non ho più toccato da allora. Nelle opzioni del progetto ho il Manifest attivo. L'ho provato ieri su Linux e funziona. Purtroppo non lo posso provare su Windows in questo momento, in ogni caso, se ho quel flag attivo, significa che nel 2009 funzionava, quindi o è un bug, o è cambiato qualcosa nel frattempo.

Ciao, Mario
Titolo: Re:colorare TPageControl
Inserito da: Legolas - Agosto 25, 2013, 06:22:16 pm
Infatti è quello che stavo dicendo: su Linux funziona senza modifiche perché il suo gestore dei temi non prende il sopravvento; su Windows invece c'è bisogno di dire al gestore dei temi di farsi i fatti propri e di non colorare il pagecontrol perché lo vogliamo di un altro colore.
Questa cosa credo di averla letta sul forum di Lazarus, se ritrovo il thread lo posto qui ;)