Wątek przeniesiony 2017-01-22 22:13 z Delphi i Pascal przez furious programming.

Dynamiczne tworzenie StringGrid

0

Jak tworzyć dynamicznie StringGrid lub poprawne usunięcie wszystkich wierszy, próbuje to zrobić tak:

    for i := 0 to Form2.StringGrid1.RowCount - 2 do begin

     Form2.StringGrid1.DeleteRow(i);
   end; 

ale po ponownym wywołaniu wywala Grid index out of range jak to poprawić

0

Juz nie wazne bo mnie oświeciło :)

0

Przy usuwaniu elementów z komponentu na podstawie pętli For, zawsze indeksuje się od końca:

for I := Form.StringGrid.RowCount - 2 downto 0 do

W przeciwnym razie liczba iteracji pętli po usunięciu jednego elementu nie będzie zgodna z indeksacją tych elementów, czego efektem będzie wykroczenie poza zakres.

0

Dzieki już to wprowadzam. Mam jeszcze mały problem.

 for i := Form2.StringGrid1.RowCount - 2 downto 0 do begin

     Form2.StringGrid1.DeleteRow(i);
   end;

   Form2.StringGrid1.Cells[0,0] := 'Miejsce';
   Form2.StringGrid1.Cells[1,0] := 'Nazwa Gracza';
   Form2.StringGrid1.Cells[2,0] := 'Czas';           

Tak wygląda początek funkcji, która zajmuje się StringGrid, zrobiłem również sortowanie po liczbach, ale po dodaniu tego usuwania wierszy program gubi gdzieś index 1 widać to na screenie
screenshot-20170122223456.png
jak dodam Form2.StringGrid1.RowCount := Form2.StringGrid1.RowCount + 1; przed lub po (bez znaczenia) ustawianiem Form2.StringGrid1.Cells[0,0] := 'Miejsce'; to pojawia się wiersz z numerem 1 ale ponad tym, Form2.StringGrid1.Cells[0,0] := 'Miejsce'; itd. Jak to naprawić?

0

screenshot-20170122223908.png
tak to wyglada,
Dodam jeszcze ciąg dalszy kodu, żeby było jaśniej:

 AssignFile(f2, 'czas.txt');
  reset(f2);
  while not eof(f2) do
    begin
      readln(f2, s2);
      if StrToInt(s2) > 0 then  begin
      Form2.StringGrid1.RowCount := Form2.StringGrid1.RowCount + 1;
      Form2.StringGrid1.Cells[2,w] := s2;
      end;
     w := w + 1;
    end;
  CloseFile(f2);            
0

Dobra już mam FixedRows zapomniałem przywrócić na 1

1 użytkowników online, w tym zalogowanych: 0, gości: 1