2011-11-02 8 views
7

Sto provando a creare la mia prima app basata su FireMonkey e ho colpito un muro. L'unico controllo elenco virtuale che riesco a trovare è tGrid.Firemonkey: lo styling dei componenti Grid/List tGrid o alternative (Virtual)

Questo componente è abbastanza buono, ma non riesco a capire come estenderlo o personalizzarlo. Ho capito che c'è la colonna tCheckbox, la colonna tImage ecc, ma cosa succede se ho bisogno di un ButtonColumn o qualcosa del genere?

Inoltre, mi piacerebbe impostare una riga in base allo stato dei dati che rappresenta.

Un esempio: se il dato rappresentato nella riga ha "Errore = Vero" dovrebbe essere visualizzato in rosso.

Qualcuno ha avuto un problema simile? O trovato componenti di lista virtuale/griglia alternativi? O anche solo alcuni suggerimenti sull'uso del componente tGrid. Questi componenti sono piuttosto essenziali in tutte le app di database, quindi dovrebbe essere una richiesta piuttosto comune.

Anche come nota, non penso che il TGrid supporti Drag & di righe?

Ho guardato Firemonkey version of VirtualTreeView e Firemonkey and large amounts of data

+0

Artis potrebbe essere che sono un po 'in ritardo con questo. Sono nuovo in embarcadero fire monkey e ho un sacco di domande su FMX Grid. Potresti postare il tuo codice per lo styling della Tcolumn? Grazie John –

+0

Ciao pubblicherò del codice quando torno al computer. Devo dire però che la soluzione non era poi così elegante alla fine. Probabilmente andrò per il nuovo componente della tabella di TMS. La mia soluzione era difettosa e non facile da mantenere. –

risposta

6

Se si guardano le fonti, TCheckColumn è a soli 15 righe di codice. Se è necessario creare la propria classe discendente di colonne, è abbastanza semplice. Questa è una soluzione, altrimenti è possibile creare dinamicamente alcuni componenti nelle celle e quindi eseguire il cast dei bambini durante il controllo degli oggetti di scena (TColumn.CellControlByRow() restituisce un TControl e i figli saranno ciò che si è inserito lì).

Come si desidera "allineare" la riga, suggerisco di scrivere la propria classe TColumn, anche se è possibile eseguire la pittura nell'evento OnPaint.

+0

Ciao grazie per la risposta. Creare la mia colonna sembra fare il trucco. Naturalmente non apparirà nell'editor di colonne, ma posso aggiungerlo usando tGrid.AddObject Ora che ho il controllo della colonna e delle celle, sembra più facile fare il resto. –

+2

Se qualcuno è interessato; Ho risolto lo stile delle celle eseguendo l'override della procedura UpdateColumn di TColumn. In questo ho aggiunto una funzione, simile a GetValue, GetCellStyleLookup, Questo è pubblicato nella griglia proprio come GetValue. Così ora posso applicare uno stile (creato con l'Editor di stile) a qualsiasi cella in base al contenuto virtuale. Non ho idea se questo è il modo migliore/previsto di farlo, ma funziona. e data una documentazione così scarsa, non ho tempo per capire qualcos'altro. –

Problemi correlati