AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringgrid zählt nur bis 10

Ein Thema von akazukilp · begonnen am 15. Okt 2020 · letzter Beitrag vom 22. Okt 2020
Antwort Antwort
Seite 1 von 3  1 23      
akazukilp

Registriert seit: 3. Sep 2020
18 Beiträge
 
#1

TStringgrid zählt nur bis 10

  Alt 15. Okt 2020, 19:01
Delphi-Version: 5
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

Geändert von mkinzler (15. Okt 2020 um 21:29 Uhr) Grund: Delphi Code Tag
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TStringgrid zählt nur bis 10

  Alt 15. Okt 2020, 19:11
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.
Heiko

Geändert von hoika (15. Okt 2020 um 19:13 Uhr)
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
379 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: TStringgrid zählt nur bis 10

  Alt 15. Okt 2020, 19:24
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.
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
337 Beiträge
 
Delphi 12 Athens
 
#4

AW: TStringgrid zählt nur bis 10

  Alt 15. Okt 2020, 19:26
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ß

Geändert von mmw (15. Okt 2020 um 20:13 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TStringgrid zählt nur bis 10

  Alt 15. Okt 2020, 21:19
Hallo,
das habe ich ja sogar übersehen

if Cells[j,i]

Cells[Col,Row] und nicht umgekehrt.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TStringgrid zählt nur bis 10

  Alt 15. Okt 2020, 21:48
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?!?
Michael Kübler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TStringgrid zählt nur bis 10

  Alt 15. Okt 2020, 22:03
Hallo,
ja, das if Cells[i, j] = '' (gleich mal die Parameter richtig vertauscht) ist etwas komisch,
zumal im FormCreate nichts im Grid stehen sollte.
Heiko
  Mit Zitat antworten Zitat
akazukilp

Registriert seit: 3. Sep 2020
18 Beiträge
 
#8

AW: TStringgrid zählt nur bis 10

  Alt 16. Okt 2020, 16:23
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;
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
337 Beiträge
 
Delphi 12 Athens
 
#9

AW: TStringgrid zählt nur bis 10

  Alt 16. Okt 2020, 16:46
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ß
  Mit Zitat antworten Zitat
akazukilp

Registriert seit: 3. Sep 2020
18 Beiträge
 
#10

AW: TStringgrid zählt nur bis 10

  Alt 16. Okt 2020, 20:06
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr.
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