Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi problem mit schleife (https://www.delphipraxis.net/23374-problem-mit-schleife.html)

herrentor 2. Jun 2004 06:41


problem mit schleife
 
ich hab folgendes problem mit einer schleife.
beispiel: in zeile eins ist aus der combobox rechteck ausgewählt, es werden also die zellen in zeile 1 in der spalte 3 un 4 auf länge a bzw. höhe b umgestellt. soweit noch kein problem. jetzt gibt man zahlen in die zellen ein. dann geht man in die nächste zeile und wählt wieder etwas aus. jetzt werden die zellen in zeile 2 wie gewollt beschrieben, allerdings werden in zeile 1 die eingegebenen zahlen wieder von länge a und höhe b überschrieben. es ist natürlich logisch das das passiert, meine frage deshalb: wie kann ich umgehen, dass zeile 1 wieder überschrieben wird?

Code:

For i:=1 to 6 do                                    // von Zeile 1 bis 6 mache
     begin

      if Tab.Cells[1,i] = ComboBox1.Items[0] then   // falls nichts aktiviert ist
       begin
        Tab.Cells[3,i]:=('0');                      // ändern auf '0'
        Tab.Cells[4,i]:=('0');                      // ändern auf '0'
       end;

      if Tab.Cells[1,i] = ComboBox1.Items[1] then   // falls Rechteck aktiviert ist
       begin
        Tab.Cells[3,i]:=('Länge A');                // ändern auf 'Länge A'
        Tab.Cells[4,i]:=('Höhe B');                 // ändern auf 'Höhe B'
        Tab.Cells[2,i]:=('+');                      // Vorzeichen auf + stellen
       end;

      if Tab.Cells[1,i] = ComboBox1.Items[2] then   // falls Dreieck aktiviert ist
       begin
        Tab.Cells[3,i]:=('Länge A');                // ändern auf 'Länge A'
        Tab.Cells[4,i]:=('Höhe B');                 // ändern auf 'Höhe B'
        Tab.Cells[2,i]:=('+');                      // Vorzeichen auf + stellen
       end;

      if Tab.Cells[1,i] = ComboBox1.Items[3] then   // falls Kreissektor aktiviert ist
       begin
        Tab.Cells[3,i]:=('Radius');                 // ändern auf 'Radius'
        Tab.Cells[4,i]:=('Winkel');                 // ändern auf 'Winkel'
        Tab.Cells[2,i]:=('+');                      // Vorzeichen auf + stellen
       end;

      if Tab.Cells[1,i] = ComboBox1.Items[4] then   // falls Kreisabschnitt aktiviert ist
       begin
        Tab.Cells[3,i]:=('Radius');                 // ändern auf 'Radius'
        Tab.Cells[4,i]:=('Winkel');                 // ändern auf 'Winkel'
        Tab.Cells[2,i]:=('+');                      // Vorzeichen auf + stellen
       end;

      if Tab.Cells[1,i] = ComboBox1.Items[5] then    // wenn Kreis aktiviert
       begin
        Tab.Cells[3,i]:=('Radius');                  // zum besseren Verständniss 'Radius' in Spalte 3
        Tab.Cells[2,i]:=('+');                      // Vorzeichen auf + stellen
       end;

     end;
danke im voraus.

MrSpock 2. Jun 2004 07:10

Re: problem mit schleife
 
Hallo herrentor,

die Frage ist ja, was genau du von dem Programm erwartest. Soll nur die aktuelle Zeile angepasst werden, dann kannst du das anstatt in einer Schleife über die Eigenschaft Row erledigen. Willst du alle, aber nur die unmodifizierten Felder bearbeiten, musst du vor dem Schreiben entweder den Inhalt lesen und dann entscheiden, ob du diesen überschreiben willst, oder du merkst dir beim Schreiben, ob eine Zelle bereits mit Werten überschrieben wurde.

herrentor 2. Jun 2004 07:48

Re: problem mit schleife
 
es soll "einfach" nur in der zeile, in der man eine auswahl über die combobox anklickt, zwei zellen beschriftet werden und zwar nut in der zelle. in meiner variante wird das gemacht, jedoch ändern sich dann auch andere zeile, in der eine auswahl über die eingebaute combobox getroffen wurde.

MrSpock 2. Jun 2004 07:53

Re: problem mit schleife
 
Hallo herrentor,

das sollte dann doch so funktionieren, dass du anstatt der Schleife alle Anweisungen mit Row anstelle von i ausführst.

herrentor 2. Jun 2004 09:00

Re: problem mit schleife
 
ok, jetzt macht er es so. allerdings schreibt er erst in die zellen, wenn ich in sie klick. kann man nicht einstellen, dass die sofort beim klick auf die auswahl in der combobox beschrieben werden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 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