Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - StringGrid - jak přidat text

Zdravím.
Když mam StringGrid s jedním řádkem StringGrid1.RowCount := 1; (0 nejde)
A chcí postupně do něj přidavat text.
Toto mi funguje, ale vždý to přeskočí ten první řadek, což nechcí.
Jak na to?

procedure TForm1.Button2Click(Sender: TObject);
var
Row: Integer;
begin
Row := StringGrid1.RowCount;
StringGrid1.RowCount := Row + 1;
StringGrid1.Cells[1, Row]:='test';
StringGrid1.Row := Row;
end;

Předmět Autor Datum
Rowcount je počet řádků. Řádky jsou číslovány od nuly. Zvládneš zbytek? nový
Jan Fiala 12.02.2019 20:57
Jan Fiala
Nezvladnu :-) Ono by to šlo vyřešít takto. procedure TForm1.AdvStringGrid_popilekMouseDown(Sender:… nový
Kocap 12.02.2019 21:07
Kocap
procedure TForm1.Button2Click(Sender: TObject); var Row: Integer; begin StringGrid1.RowCount := Stri… nový
Jan Fiala 12.02.2019 21:24
Jan Fiala
To jsem zkoušel. To vynecha ten první řadek a vpiše text až do druheho. nový
Kocap 12.02.2019 21:42
Kocap
Váš zpusob je jednodužší než ta moje obluda, když ho upravím takto. begin StringGrid1.RowCount := S… nový
Kocap 12.02.2019 21:53
Kocap
Já jsem predpokladal, ze mas v prvnim radku nadpisy sloupecku. Ale jo, staci nastavit cislo radku ta… poslední
Jan Fiala 13.02.2019 06:17
Jan Fiala

Nezvladnu :-)
Ono by to šlo vyřešít takto.


procedure TForm1.AdvStringGrid_popilekMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Column: Longint;
  Row,Row1: Integer;
begin
  AdvStringGrid_popilek.MouseToCell(X, Y, Column, Row);
  if (Column = 0) and (Row = 1)  then
                                  begin
                                       if AdvStringGrid_popilek1.RowCount = 1 then
                                               begin
                                                  beep;
                                                  AdvStringGrid_popilek1.Cells[1,0]:= 'test';
                                                  AdvStringGrid_popilek1.RowCount := AdvStringGrid_popilek1.RowCount + 1; 
                                                  Label2.Caption :=  IntToStr(AdvStringGrid_popilek1.RowCount);
                                                end
                                                else
                                                begin
                                                    beep;
                                                    Row := AdvStringGrid_popilek1.RowCount;
                                                    AdvStringGrid_popilek1.Cells[1, Row -1]:='test';
                                                    AdvStringGrid_popilek1.RowCount := Row + 1;
                                                 end;
                                  end;

Toto však funguje tak, že to vpiše text do toho prvního řádku a přida další řadek.
Pak už vždý přida text a hned další řadek.
Ja bych se chtěl zbavit těch prazdných řadku.

První jen přidat ten text do toho prvního řádku.
A pak první přidat další a do něj vepsat text.

Ono při spuštění programu je Rowcount 1
Přidam text do prvního řádku a pokud nepřidam další řadek, je furt Rowcount 1, tedy else při dalšim kliku neproběhne.
To bych nesměl testovat Rowcount ale zda je text v bunkach.

procedure TForm1.Button2Click(Sender: TObject);
var
  Row: Integer;
begin
  StringGrid1.RowCount := StringGrid1.RowCount + 1;
  Row := StringGrid1.RowCount  - 1;
  StringGrid1.Cells[1, Row]:='test';
  StringGrid1.Row := Row;
end;

Já jsem predpokladal, ze mas v prvnim radku nadpisy sloupecku.
Ale jo, staci nastavit cislo radku tak, aby to repektovalo, ze prvni radek je cislo 0.
A co se tyka prazdneho radku, tak ho tam proste poprve nevkladej.

procedure TForm1.Button2Click(Sender: TObject);
var
  Row: Integer;
begin
  if StringGrid1.Cells[1, StringGrid1.RowCount - 1] <> '' then
    StringGrid1.RowCount := StringGrid1.RowCount + 1;
  Row := StringGrid1.RowCount  - 1;
  StringGrid1.Cells[1, Row]:='test';
  StringGrid1.Row := Row;
end;

Zpět do poradny Odpovědět na původní otázku Nahoru