Salve a tutti!

Sono inesperto e masochista, combinazione che può facilmente portare a realizzare un foglio di calcolo come Excel in delphi. Folle vero?

Comunque. Sto usando un frame che fa da foglio di calcolo, in questo modo posso aggiungere altri fogli come fa excel ridisegnando il frame. Su questo frame uso una NiceGrid per simulare excel. La NiceGrid è un componente che ho trovato su internet, funziona esattamente come le StringGrid ma è molto più bello.
Il problema è che l'utente scrive le formule, e io voglio fargli vedere il risultato. Perciò ho pensato di aggiungere un'altra nicegrid invisibile. Su quella invisibile tengo le formule, su quella visibile scrivo il risultato.

Il problema è che l'utente scrive su quella visibile. Il problema è che non so come sincronizzare le celle.

Quando l'utente scrive (evento OnChange) basta che dico che il contenuto della stessa cella della griglia invisibile diventi uguale a quella in cui scrive. Poi quando l'utente esce dalla cella (OnColRowChanged) io faccio il calcolo della formula e scrivo il risultato nella cella... e scatta di nuovo onChange che azzera la formula nella griglia nascosta.

La mia idea è stata di spostare il ragionamento nel onKeyDown. una cosa del tipo:

procedure TSheet.VisualGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
HideGrid.OnKeyDown(Sender, key, shift);
end;

Così poi nell'evento onColRowChanged facevo il calcolo. Però quando premo un tasto sulla visualgrid mi da un access violation at address 0000000000. E non capisco perchè!!!