2010-09-28 13 views
5

alt textPerché il trillo di Delphi 2010 controlla "sfarfallio" su Windows XP, ma non su Vista/7?

Ho notato che quando uso il controllo TRIBBON che viene fornito con Delphi 2010, funziona perfettamente sul mio sistema Windows 7. Tuttavia, l'applicazione presenta alcuni strani problemi di pittura su un sistema Windows XP con il "tema classico" (non ho provato il tema playschool).

So che ci sono altri componenti Ribbon disponibili da DevExpress e TMS Software, tuttavia l'acquisto di un controllo di terze parti non è un'opzione per questo progetto.

Qualcuno ha riscontrato questo problema o è a conoscenza di una soluzione?

+2

Mi piace lo stesso tema "playschool" – Nat

risposta

4

Molto probabilmente perché Windows 7 utilizza "Desktop Compositing", che in sostanza significa che un componente viene disegnato su una bitmap fuori schermo e quindi copiato sul display. In XP, un componente normalmente si disegna direttamente sul display (che può causare uno sfarfallio se il componente prima cancella ciò che è lì e disegna sulla "lavagna pulita").

Delphi supporta il doppio buffering, che ha la stessa funzione. Se si imposta la proprietà DoubleBuffered del ribbon su True (nel codice, poiché non è pubblicata), allora questo dovrebbe evitare lo sfarfallio (a costo della memoria aggiuntiva allocata e spostata durante il disegno) - Devo dire, tuttavia, che non ho in realtà l'ho provato con TRIBBON.

Si noti che non vi è alcun overhead aggiuntivo durante l'esecuzione su Windows 7 (o Vista, se è per questo) se si imposta DoubleBuffered su True. Il codice VCL ha il codice salta la business bitmap fuori dallo schermo quando si esegue su una versione di Windows che esegue il compositing desktop.

+0

Una buona risposta e in particolare la nota su nessun overhead da doublebuffered. – MarkF

0

Molto probabilmente questo è un bug nel codice TRIBBON, il rendering del nastro Microsoft perfetto sia in XP che in Win7.

Se si modifica il tema XP, il pulsante Riduci a icona visualizzato nell'immagine viene modificato in modo da riflettere il cambio del tema? Se questo è il caso il codice Ribbon è stato probabilmente ottimizzato per Vista e 7 e non è stato sviluppato per funzionare perfettamente sotto XP.

Non è possibile risolverlo a meno che non sia possibile modificare il codice TRIBBON.

Problemi correlati