01. oktober 2003 - 16:52Der er
8 kommentarer og 1 løsning
Flytte markør til en bestemt celle i stringgrid
Hej
Er der nogen der ved hvordan man kan flytte markøren til en angivet celle i en stringgrid !
Det jeg ønsker er at når brugeren trykker enter så flyttes markøren til næste kolonne i samme row.
Jeg har tænkt mig noget lignende: procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 Then "gå til næste celle" end;
Som standard må man trykke på enter når man har skrevet en tekst, og så med piltastene pile til næste felt, det er lidt dumt synes jeg, så hvis man kan få enter til at flytte markøren for brugeren så bliver det hele mere anvendeligt !
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Slettet bruger
01. oktober 2003 - 17:00#1
Prøvc det her:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 Then with StringGrid1 do begin if Col >= ColCount - 1 then begin if Row <> RowCount - 1 then begin Row := Row + 1; Col := 1 end; end else Col := Col + 1; end; end;
Synes godt om
Slettet bruger
01. oktober 2003 - 17:09#2
Hvis det bare skal være i samme row kan du gøre sådan:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 Then if not (StringGrid1.Col >= StringGrid1.ColCount - 1) then StringGrid1.Col := 1 + StringGrid1.Col; end;
Mit løsningsforslag (ikke nødvendigvis bedre end hejhejs):
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then with StringGrid1 do begin if (Row < RowCount - 1) or (Col < ColCount - 1) then Col := (Col mod (ColCount - FixedCols)) + FixedCols; if (Col = FixedCols) and (Row < RowCount - 1) then Row := Row + 1; end; end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then with StringGrid1 do begin if (Row < RowCount - 1) or (Col < ColCount - 1) then Col := ((Col + 1) mod (ColCount - FixedCols)) + FixedCols; if (Col = FixedCols) and (Row < RowCount - 1) then Row := Row + 1; end; end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then with StringGrid1 do begin if (Row < RowCount - 1) or (Col < ColCount - 1) then Col := ((Col - FixedCols + 1) mod (ColCount - FixedCols)) + FixedCols; if (Col = FixedCols) and (Row < RowCount - 1) then Row := ((Row - FixedRows + 1) mod (RowCount - FixedRows)) + FixedRows; end; end;
Og den her "går i ring":
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then with StringGrid1 do begin Col := ((Col - FixedCols + 1) mod (ColCount - FixedCols)) + FixedCols; if (Col = FixedCols) then Row := ((Row - FixedRows + 1) mod (RowCount - FixedRows)) + FixedRows; end; end;
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.