Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Leere Zellen in StringGrid (https://www.delphipraxis.net/113440-leere-zellen-stringgrid.html)

Stecky2000 7. Mai 2008 23:03


Leere Zellen in StringGrid
 
Hallo allerseits.

Bin neu hier, hatte auch schon geposted, aber entweder hab ich was falsch gemacht oder...
Sollte mein Post nun doppelt erscheinen, bitte ich darum ihn zu löschen.

Also, ich bin kein Programmierer, befasse mich nur hobbymäßig damit und hab ein paar kleinere Programme geschrieben.
Für mein neues Projekt übe ich schon fleissig mit dem StringGrid.

Dabei finde ich keine Lösung, auch nicht über die Boardsuche.

Im Endeffekt habe ich im StringGrid 3 Spalten mit 15 Zeilen.
In Spalte 1 sollen die Werte aus Spalte 2 und 3 addiert werden.
Das mache ich über eine Schleife, ist alles kein Problem.

Leider wird das Programm eine Fehlermeldung aus, wenn in den zu addierenden Zellen 2 oder 3 kein Wert steht, sie also leer sind.

Deshalb wollte ich das mit folgendem Code abfangen, das funktioniert aber im StringGrid nicht.
Ich bin der Meinug das schon mit Edit1.Text erfolgreich genutzt zu haben und es im Internet auch gelesen zu haben. Nur, wie gesagt, mit dem StringGrid geht es nicht.

Kann mir jemand sagen warum?

So sieht der Code aus:

Delphi-Quellcode:
If StringGrid3.Cells[3, i] <> '' then ...
dann addiere
ich hab auch schon so probiert

Delphi-Quellcode:
If StringGrid3.Cells[3, i] = '' then ...
dann addiere nicht
also das Gegnteil.

Beides geht nicht. Welche Besonderheit gibt es beim StringGrid mit diesem Check?

Hansa 7. Mai 2008 23:36

Re: Leere Zellen in StringGrid
 
Die Lösung liegt doch auf der Hand. Beide Lösungen gehen nicht => an falscher Stelle eingebaut. Der Quelltext scheint streng geheim zu sein, deshalb kann man nicht viel mehr sagen.

michaelg 7. Mai 2008 23:39

Re: Leere Zellen in StringGrid
 
Könnte es sein, daß es sich nicht um Leerstrings handelt, sondern um NULL-Values? Wir wissen ja nicht, wie er das Grid mit den Werten befüllt.

Hansa 7. Mai 2008 23:57

Re: Leere Zellen in StringGrid
 
Damit wären wir hier :

Zitat:

Zitat von Stecky2000
..Leider wird das Programm eine Fehlermeldung aus, wenn in den zu addierenden Zellen 2 oder 3 kein Wert steht, sie also leer sind.

Also so wie immer. :mrgreen: Verschweigen/Unterdrückung der Fehlermeldung etc.

grenzgaenger 8. Mai 2008 00:06

Re: Leere Zellen in StringGrid
 
da muss ich hansa recht geben, zeig doch mal, was du bereits hast...

... dann stochern wir auch nicht nur um trüben

bluesbear 8. Mai 2008 06:37

Re: Leere Zellen in StringGrid
 
Ich rate mal mit <g>:
Laut Beschreibung dürfte im Stringgrid eine Spalte mit Index 3 nicht existieren.

Stecky2000 8. Mai 2008 07:02

Re: Leere Zellen in StringGrid
 
Hallo,

sorry, der Quelltext ist natürlich nicht geheim. Ich wollte das Problem aus meiner Sicht vereinfachen.
Des weiteren habe ich, da ich wie gesagt kein Programmierer bin, mein unprofessionellen Code ein wenig "verstecken" um nicht ausgelacht zu werden.

Aber, was solls. Ich habe es heute morgen plötzlich doch hin bekommen, dachte das gestern schon so probiert zu haben...

Wie Ihr sehen werdet, gehts auch nicht um 3 Splaten sondern um 5 (inkl. Fixrow), relevant sind aber nur 3 Spalten. Zur Zeit scheint es so zu funktionieren:

Delphi-Quellcode:
Procedure TForm1.Zeitenrechner;
var
i: Integer;

begin
     For i := 1 to 16 do
         If (StringGrid3.Cells[2, i] = '') or (StringGrid3.Cells[3, i] = '') then
         next
         else
         StringGrid3.Cells[2, i] := IntToStr(StrToInt(StringGrid3.Cells[4, i]) - StrToInt(StringGrid3.Cells[3, i]));

end;

Ich hätte es zwar lieber so, aber das geht nicht:

Delphi-Quellcode:
Procedure TForm1.Zeitenrechner;
var
i: Integer;

begin
     For i := 1 to 16 do
         If (StringGrid3.Cells[2, i] <> '') or (StringGrid3.Cells[3, i] <> '') then
         StringGrid3.Cells[2, i] := IntToStr(StrToInt(StringGrid3.Cells[4, i]) - StrToInt(StringGrid3.Cells[3, i]));

end;
Klappt das "ungleich hier nicht?

taaktaak 8. Mai 2008 07:10

Re: Leere Zellen in StringGrid
 
Moin, Moin,
also da verstehe ich einiges nicht so recht: Du prüfst die Spalten 2 und 3 und rechnest dann mit den Spalten 3 und 4, das Ergebnis kommt dann in Spalte 2?? Im ersten Post hast du das anders beschrieben...

// edit
Um auf die eigentliche Frage einzugehen: In der alternativ-Schleife musst du die Abfragelogik "umdrehen", d.h. die beiden Prüfungen müssen in diesem Fall mit AND verknüpft werden.

Stecky2000 8. Mai 2008 07:51

Re: Leere Zellen in StringGrid
 
Hast Recht, der Fehler ist mir eben beim Fummeln rein gekommen.
Es geht natürlich so:

Delphi-Quellcode:
Procedure TForm1.Zeitenrechner;
var
i: Integer;

begin
     For i := 1 to 16 do
         If (StringGrid3.Cells[3, i] = '') or (StringGrid3.Cells[4, i] = '') then
         next
         else
         StringGrid3.Cells[2, i] := IntToStr(StrToInt(StringGrid3.Cells[4, i]) - StrToInt(StringGrid3.Cells[3, i]));

end;
Und, Du hast auch da Recht mit dem kleinen Wörtchen "and" geht auch die zweite Wunschalternative!
Vielleicht war ich gestern abend einfach zu müde um klar zu denken ;-)

Ich danke Euch vielmals und werde, wenn Ihr nicht gegen dumme Fragen eines "Fummlers" habt, noch ab und zu hier sein.

taaktaak 8. Mai 2008 08:07

Re: Leere Zellen in StringGrid
 
Ach, da würd ich mir keine Sorgen machen: Die wenigsten Fragen sind wirklich "dumm" :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr.
Seite 1 von 2  1 2      

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