Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TStringgrid zählt nur bis 10 (https://www.delphipraxis.net/205779-tstringgrid-zaehlt-nur-bis-10-a.html)

akazukilp 15. Okt 2020 18:01

Delphi-Version: 5

TStringgrid zählt nur bis 10
 
Hallo zusammen,

ich bin neu was das programmieren angeht und versuche heute ein Programm zu schreiben, dass in einem Stringgrid das 75 Col und 10 Rows hat diese von 1 bis 750 zu befüllen.
Mein Problem ist jetzt, dass wen ich das Programm ausführe, zählt er in der 1 Zeile nur bis 10 und nicht bis 75.
Woran liegt das?

Delphi-Quellcode:
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i, J, z : Integer;
begin
   z:=0;
  with StringGrid1 do
    for I := 1 to ColCount - 1 do
      for J:= 1 to RowCount - 1 do

        begin
          if Cells[j,i] = '' then begin
          inc(z);
          Stringgrid1.Cells[j,i] := IntToStr(z);

          end;
        end;
end;

end.
Danke schon mal im voraus für die Antworten.
Grüße Basti

hoika 15. Okt 2020 18:11

AW: TStringgrid zählt nur bis 10
 
Hallo,
ich sehe im Code keine 10 ??
Das muss du dem StringGrid schon sagen.


procedure TForm1.FormCreate(Sender: TObject);
var
i, J, z : Integer;
begin
z:=0;

StringGrid1.ColCount:= 75;
StringGrid1.RowCount:= 10;

with StringGrid1 do

Und ausserdem:
for I := 1 to ColCount - 1 do
Die Zählung begibt bei 0, nicht bei 1.

stifflersmom 15. Okt 2020 18:24

AW: TStringgrid zählt nur bis 10
 
Zitat:

Zitat von hoika (Beitrag 1475569)
Hallo,

Und ausserdem:
for I := 1 to ColCount - 1 do
Die Zählung begibt bei 0, nicht bei 1.

Wenn er eine Fixed Row und eine Fixed Col übergehen will, weil dort Spalten und Zeilenbezeichner stehen, macht eine Zählung von 1 an schon Sinn.

mmw 15. Okt 2020 18:26

AW: TStringgrid zählt nur bis 10
 
hallo,
vielleicht funktioniert dies -

Delphi-Quellcode:
var
  i, j, z: Integer;
begin

 z := 0;

  with StringGrid1 do
  begin
    for i := 0 to StringGrid1.RowCount - 1 do
      for j := 0 to stringgrid1.ColCount - 1 do

      begin
        if Cells[j, i] = '' then
        begin
          inc(z);
          Stringgrid1.Cells[j, i] := IntToStr(z);
        end;
      end;
  end;
end;
'Delphi Hilfe'

property Cells[ACol, ARow: Integer]:

Gruß

hoika 15. Okt 2020 20:19

AW: TStringgrid zählt nur bis 10
 
Hallo,
das habe ich ja sogar übersehen

if Cells[j,i]

Cells[Col,Row] und nicht umgekehrt.

scrat1979 15. Okt 2020 20:48

AW: TStringgrid zählt nur bis 10
 
Kleine Anmerkung meinerseits: Nirgends erwähnt der TE, dass die Zahl nur eingetragen werden soll wenn die Zelle(n) leer ist/sind. Falls das zutrifft würde ich die IF-Abfrage komplett streichen - oder übersehe ich da was?!?

hoika 15. Okt 2020 21:03

AW: TStringgrid zählt nur bis 10
 
Hallo,
ja, das if Cells[i, j] = '' (gleich mal die Parameter richtig vertauscht) ist etwas komisch,
zumal im FormCreate nichts im Grid stehen sollte.

akazukilp 16. Okt 2020 15:23

AW: TStringgrid zählt nur bis 10
 
Ok danke das klappt jetzt soweit.
Wen ich das jetzt rückwärts machen will.
Also ich starte von unten und gehe nach oben funktioniert es nicht was mach ich falsch.
Code:
procedure TForm1.Button1Click(Sender: TObject);
 var
  i, j, z: Integer;
begin

 z := 750;

  with StringGrid1 do
  begin
    for i := 750 to StringGrid1.RowCount - 1 do
      for j := 750 to stringgrid1.ColCount - 1 do

      begin
        if Cells[j, i] = '' then
        begin
          z := (z-1);
          Stringgrid1.Cells[j, i] := IntToStr(z);
        end;
      end;
  end;
end;

mmw 16. Okt 2020 15:46

AW: TStringgrid zählt nur bis 10
 
Halllo,

Zitat:

Also ich starte von unten und gehe nach oben

die for Schleifen sagen aber was anderes.

das hier ist ganz nüztlich

https://www.delphi-treff.de/object-pascal/schleifen/

Gruß

akazukilp 16. Okt 2020 19:06

AW: TStringgrid zählt nur bis 10
 
Zitat:

Zitat von mmw (Beitrag 1475629)
Halllo,

Zitat:

Also ich starte von unten und gehe nach oben

die for Schleifen sagen aber was anderes.

das hier ist ganz nüztlich

https://www.delphi-treff.de/object-pascal/schleifen/

Gruß

Danke das Problem mit dem runterzählen hab ich jetzt gelöst.
Aber ich find den Fehler nicht warum mir nichts reingeschrieben wird wen ich den Knopf drücke

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, J, z : Integer;
begin
  z := 751;
    with StringGrid1 do
    begin

      for i := 750 downto 1 do
         for J := 750 downto 1do

          begin
            if Cells[J,i] = '' then
            begin
              z := (z)-1;
              Stringgrid1.Cells[J, i] := IntToStr(z);

            end;
          end;
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz