Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: VCL / WinForms / Controls (https://www.delphipraxis.net/24-library-vcl-winforms-controls/)
-   -   Delphi Im StringGrid mit Enter immer ins nächste Feld springen (https://www.delphipraxis.net/6258-im-stringgrid-mit-enter-immer-ins-naechste-feld-springen.html)

Daniel B 5. Jul 2003 10:39


Im StringGrid mit Enter immer ins nächste Feld springen
 
Hallo,

hiermit kann man bei Enter-Druck, immer in die nächste Feld springen, es werden alle der Reihe nach durchgegangen, und zwar immer von links nach rechts und dann immer die nächste Zeile, aus der letzten Zelle wird dann wieder in die erste gesprungen, den Teil kann man aber auch natürlich wieder ausbauen!
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    with StringGrid1 do
    begin
      if Col < ColCount -1 then //Nächste Spalte
        Col := Col +1
      else if Row < RowCount -1 then
      begin //Nächste Zeile
        Row := Row +1;
        Col := 1;
      end else
      begin //Geh wieder an den Anfang des Grids
        Row := 1;
        Col := 1;
      end;
    end;
  end;
end;
Grüsse, Daniel :hi:

Hansa 5. Jul 2003 12:53

Re: Im StringGrid mit Enter immer ins nächste Feld springen
 
Hi,

soweit, so gut, aber für Anfänger: um etwas eingeben zu können, muß im Objektinspektor die Option "goEditing" auf true gesetzt werden.

Desweiteren ist es manchmal gut, das Grid vergrößern zu können, z.B. wenn man noch nicht weiß, wieviele Eingaben überhaupt gemacht werden. Das geht dann so (*** beachten) :

Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    with StringGrid1 do
    begin
      if Col < ColCount -1 then //Nächste Spalte
        Col := Col +1
      else if Row < RowCount -1 then
      begin //Nächste Zeile
        Row := Row +1;
        Col := 1;
      end else
      begin                       //Zeile am Ende des Grids einfügen
        RowCount := RowCount + 1; // *** statt Row := 1 1 Zeile anfügen
        Row := RowCount -1;       // *** Cursor in die neue Zeile
        Col := 1;
      end;
    end;
  end
end;


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