Ciao a tutti. Come da titolo ho la necessità di creare una tabella da runtime ma ho qualche difficoltà e spero che qualcuno possa aiutarmi. Questo è il codice che ho scritto.
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
tabella: array [1..9] of TStringGrid;
begin
for i:= 1 to 3 do
begin
// CREAZIONE GENERALE TABELLA
tabella[i]:= TStringGrid.Create(Form1);
tabella[i].Width:= 300;
tabella[i].Height:= 200;
tabella[i].top:= 50;
tabella[i].left:= 30;
tabella[i].FixedCols:= 0;
// CREAZIONE COLONNE
tabella[i].Columns.Add.Title.Create(0) // ERRORE!!!!!!
tabella[i].Columns.Add.Title.Alignment:= taCenter;
tabella[i].Columns.Add.Title.Caption:=('colonna0');
tabella[i].Columns.Add.Title.Alignment:= taCenter;
Tabella[i].Parent:= Form1;
end;
end;
E' da un po che ci sto sopra e non capisco perché mi da errore quando mi deve creare la prima colonna della tabella.
Spero che qualcuno possa aiutarmi. Ciao.
usa questo codice per iniziare
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
tabella: array [1..9] of TStringGrid;
begin
for i:= 1 to 3 do
begin
// CREAZIONE GENERALE TABELLA
tabella[i]:= TStringGrid.Create(Form1);
tabella[i].Width:= 300;
tabella[i].Height:= 200;
tabella[i].top:= 50;
tabella[i].left:= 10 + ((i-1) * 320);
tabella[i].FixedCols:= 0;
// CREAZIONE COLONNE
with tabella[i] do
try
Parent:= Form1;
with Columns.Add do begin
Title.Alignment:= taCenter;
Title.Caption:='colonna0';
end;
except
on e: exception do
MessageDlg(Application.Title, 'Errore nella creazione della griglia ' + IntToStr(i) + #10 +
e.Message,
mtError, [mbOk], 0);
end;
end;
end;
lo so che vengono generate 3 griglie ma è la stessa cosa che accadeva sul tuo codice, solo che non te ne accorgevi perché graficamente erano sovrapposte ;)
Se inserisci TStringGrid.Create in un loop, è chiaro che ad ogni passaggio ne crei 1.
Devi quindi creare la griglia prima del loop ed all'interno crei lo colonne.
Inoltre con la dichiarazione:
tabella: array [1..9] of TStringGrid;
allochi un array di 9 posizioni per 9 griglie...
Dovresti modificare il codice considerando che:
- hai bisogno di un solo puntatore per la griglia
- la griglia va creata fuori dal loop
- l'array delle colonne non serve (la griglia sa di quante colonne dispone)