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/)
-   -   StringGrid über mehrere Cols springen (https://www.delphipraxis.net/209884-stringgrid-ueber-mehrere-cols-springen.html)

elmartino 3. Feb 2022 21:09

StringGrid über mehrere Cols springen
 
Ich habe ein Stringgrid mit 8 Cols und 13 Rows.
Auf den Cols 3 und 7 möchte ich Resultate eingeben.

alle Cols haben die Option - [goEditing] OnSelectCell
auf den Cols 3 und 7 die Options + [goEditing] gesetzt OnSelectCell

Ich möchte mit der Tabtaste #09 von Col 3 auf Col 7 springen.
Also die Cols 4,5,6, überspringen. In Col 7 Daten eingeben und mit der
Tabtaste wieder auf Col 3 auf der Nächsten Zeile springen.
Mit der Tabtaste möchte ich nur die Col 3 und 7 ansteuern.

gotabs habe ich aktiviert.

Wie kann ich das realisieren.

Delphi.Narium 3. Feb 2022 21:28

AW: StringGrid über mehrere Cols springen
 
Nur so als Idee, die Du ggfls. noch anpassen musst:
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    #9 : begin
           if StringGrid1.Col = 3 then
             StringGrid1.Col := 7
           else
           if StringGrid1.Col = 8 then
           begin
             StringGrid1.Col := 3;
             // Hier ist dann noch 'ne Sonderbehandlung der letzten Zeile im StringGrid erforderlich.
             StringGrid1.Row := StringGrid1.Row + 1;
           end;
         end;
  end;
end;
oder
Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
  if (aCol = 4) then
  begin
    StringGrid1.Col := 7;
    CanSelect := False;  
  end else
  if (aCol = 7) then
  begin
    StringGrid1.Col := 3;
    // Hier ist dann noch 'ne Sonderbehandlung der letzten Zeile im StringGrid erforderlich.
    StringGrid1.Row := StringGrid1.Row + 1;
    CanSelect := False;  
  end;
end;
(ungetestet hingedaddelt)

elmartino 5. Feb 2022 18:05

AW: StringGrid über mehrere Cols springen
 
Hallo danke für die Hilfe. Es hat funktioniert. Aber die angesteuerte Col darf nicht die letzte in in der Row sein. Ich habe eine zusätzliche Col definiert. ColCount = 9, abgefragte Cols = 4 und 8 obwohl die Cols 3 und 7 betroffen sind.
Hier mein Code:

procedure TForm1.SpieleKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#9 : begin
if Spiele.Col = 4 then
Spiele.Col := 7
else
if Spiele.Col = 8 then
begin
Spiele.Col := 3; // 1
if Spiele.Row = 12 then
begin
Spiele.Row := 1;
end
else
begin
Spiele.Row := Spiele.Row + 1;
end;
end;
end;
end;
end;

Andreas13 5. Feb 2022 18:24

AW: StringGrid über mehrere Cols springen
 
Hallo Elmartino,
Du kannst Deinen Quellcode etwas übersichtlicher formatieren, wenn Du das Delphi-Symbol (= gelber Helm mit dem roten Kamm) vom Menü direkt über dem Editorfenster benutzt. Oder für neutrale Fälle als einfachen Code mit dem Symbol gleich links daneben (= auf weißem Blatt blaue eckige Klammern <>). Das geht übrigens auch nachträglich, wenn Du Deine Beiträge editierst.

Gruß, Andreas


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