2011-09-20 6 views
39

Stiamo sperimentando quello che sembra essere uno strano bug nel componente ScrollBox di Firemonkey (dal TGrid eredita da TScrollBox interessa anche tutte le griglie). Su alcune delle nostre macchine di sviluppo, tutto funziona bene, mentre su altri il bug si verifica. Non siamo riusciti a rilevare alcun pattern tra i sistemi (abbiamo controllato OS, hardware grafico, versione DirectX).Firewallkey ScrollBox Bug

Riproduzione:

  1. Creare una nuova applicazione FireMonkey. Inserire un TScrollBox nel modulo.
  2. Aggiungere un pulsante a scrollBox e impostarne la posizione verticale su 500000.
  3. Avviare l'applicazione e controllare se il pulsante viene visualizzato quando si scorre fino alla fine della casella di scorrimento.

Se si verifica un errore, il pulsante non è visibile.

Quando si utilizza una griglia, le righe 1-19047 vengono visualizzate correttamente e tutte le righe da 19047 e superiori non vengono visualizzate.

Qualcuno ha idea di cosa potrebbe causare questo? O qualche idea su come possiamo identificare il problema in modo più dettagliato?

+0

A proposito ... La riga 19047 non viene visualizzata correttamente nel componente TGrid. È visibile solo parzialmente. –

+0

In alcuni sistemi viene rilevata un'eccezione dell'operazione in virgola mobile non valida quando si tenta di utilizzare la barra di scorrimento. –

+0

funziona bene sul mio 32 bit windows xp – VibeeshanRC

risposta

2

Dopo aver avuto tutti i tipi di problemi con lo scorrimento, sono giunto alla conclusione che c'è un problema di inizializzazione con i componenti di scorrimento in firemonkey, che si manifestano in comportamenti di scorrimento poco chiari. A volte funziona e talvolta non lo fa ...

Dopo aver pensato che ho risolto il problema più volte, solo per vedere riapparire il problema su una compilazione successiva (o un SO diverso), ho avuto molto successo in chiamando il metodo UpdateStyle del componente dopo aver aggiunto tutti i componenti secondari. Cioè il problema non è riemerso da quando è stata aggiunta la chiamata ...

E.g. Il seguente pseudo codice in un componente di scorrimento quindi chiama UpdateStyle che sembra forzare il componente per 'fissare' impostazioni non valide per diverse proprietà - Min, Max ecc

for i := 1 to x do 
    MyScrollComponent.AddObject(MyObject[i]); 
MyScrollComponent.UpdateStyle; 

Spero che questo funziona anche per te ...