Delphi-PRAXiS

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 neue Zeile im Stringgrid (https://www.delphipraxis.net/35284-neue-zeile-im-stringgrid.html)

Hansa 4. Dez 2004 19:45


neue Zeile im Stringgrid
 
Hi,

vielleicht kann sich das mal jemand ansehen :

Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then begin
    if StringGrid1.Col = 1 then with StringGrid1 do begin
      if col = 1 then
        Col := 4
    end
    else if StringGrid1.Col = 4 then with StringGrid1 do begin
      if ((StringGrid1.Row ) mod 2 <> 0) then begin
        StringGrid1.RowCount := StringGrid1.RowCount+1;
        StringGrid1.Row := StringGrid1.RowCount - 2;
      end
      else
        StringGrid1.Row := StringGrid1.RowCount - 1;
      StringGrid1.RowCount := StringGrid1.RowCount+1;
      Col := 1;
    end;
  end;
end;
Es geht um ein Stringgrid, wobei die Spalten 1 und 4 zur Eingabe dienen. Mit Return soll von Spalte 1 in 4 gewechselt werden, sofern das in Spalte 1 gedrückt wird.

Wird Return in Spalte 4 gedrückt, so soll folgendes passieren : abwechselnd soll man in die nächste Zeile gelangen oder aber zuerst wird eine Leerzeile erzeugt und dann noch eine Zeile in der der Cursor dann steht. Ungefähr in diesem Stil :

Code:
xxxx                xxxx
xxxx                xxxx
leere Zeile
xxxx                xxxx
xxxx                xxxx
leere Zeile
usw.

Mit obigem Code sieht es so aus :

Code:
xxxx                xxxx
xxxx                xxxx
xxxx                xxxx
leere Zeile
xxxx                xxxx
xxxx                xxxx
xxxx                xxxx
leere Zeile
usw.

Wo ist da jetzt der Fehler, daß eine Zeile zuviel angezeigt wird, bzw. die Leerzeile zu spät ?

kiar 4. Dez 2004 19:50

Re: neue Zeile im Stringgrid
 
wie ebend schon erwähnt:

Delphi-Quellcode:
if ((StringGrid1.Row ) mod 2 <> 0) then begin
        StringGrid1.RowCount := StringGrid1.RowCount+1;
        StringGrid1.Row := StringGrid1.RowCount - 2;
      end
      else
begin
        StringGrid1.Row := StringGrid1.RowCount - 1;
      StringGrid1.RowCount := StringGrid1.RowCount+1;
end
raik

Hansa 4. Dez 2004 21:32

Re: neue Zeile im Stringgrid
 
Geht nicht so einfach. Ich vermute, daß im RowCount intern irgendwas umgebogen wird, so daß es so nicht geht. Eine andere Frage ist, ob das MOD 2 so überhaupt stimmt. Die 3 ist von 2 nicht weit weg. Wenn dann also 2 nur an einer Stelle zu früh oder eben zu spät um 1 erhöht wird, dann geht es schon nicht wie gewünscht.

Ich vermute, einer muß helfen, der sich mit den Internas vom Stringgrid auskennt. Oder besser als die 2 Zeilen in der OH weiß, was durch Veränderung des RowCount-Wertes genau passiert. Wer das wohl weiß ? Mir fällt momentan niemand ein. :mrgreen:

kiar 4. Dez 2004 22:08

Re: neue Zeile im Stringgrid
 
hallo hansa,

kann dein ergebnis nicht nachvollziehen, vllt ist es wirklich schon zu spät :mrgreen:

folgender code:
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
   if key = #13 then
   begin
   with StringGrid1 do
     begin
       if col = 1 then
          col:= 4
          else
          begin
          if col = 4 then
            begin
              if rowcount mod 2 <> 0 then
                 begin
                   rowcount:=rowCount + 3 ;
                   row:=rowcount-1;
                 end
                 else
                 Begin
                   rowcount:=rowcount + 1 ;
                   row:=rowcount-1
                 end;
            end;
            col:=1;
          end;
     end;
   end;
end;
brachte bei mir folgendes ergebnis
Code:
xxx --- --- xxx
xxx --- --- xxx
--- --- --- ---
--- --- --- ---
xxx --- --- xxx
xxx --- --- xxx

Christian Seehase 4. Dez 2004 23:00

Re: neue Zeile im Stringgrid
 
Moin Hansa,

Zitat:

Zitat von Hansa
Oder besser als die 2 Zeilen in der OH weiß, was durch Veränderung des RowCount-Wertes genau passiert. Wer das wohl weiß ? Mir fällt momentan niemand ein.

Also mir fällt da jemand ein.

Da Du eine Pro Version hast, kannst Du nämlich selber nachsehen. ;-)

kiar 4. Dez 2004 23:47

Re: neue Zeile im Stringgrid
 
hallo chris,

so einfach ist das aber nicht nachzuvollziehen, ich habe auch kurz nachgeschaut, aber richtig schlau bin ich da auch nicht geworden :(


raik


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