tylko jeden znak w Stringgrid

0

Czesc,
mam problem ze stringgridem.
Co wpisac w keypress komponentu, aby mozna bylo wpisac w komorke tylko jeden znak, a konkretnie jedna cyfre?

wymuszenie cyfr zrobilem tak:

if NOT (key IN ['0'..'9']) then
key := #0;

a jak uzyskac tylko jedna?

0
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
  x, y: Integer;
begin
  x:= TStringGrid(Sender).Col; //kolumna
  y:= TStringGrid(Sender).Row; //wiersz
  case Key of
    '0'..'9': if Length(TStringGrid(Sender).Cells[x, y]) > 0 then Key:= #00;
    #08, #13: //nic to backspace i enter obsługujemy normalnie
  else
    Key:= #00;
  end;
end;
0

ok, zamysł miałem podobny, dzięki.

PS. Obecna forma mnie zadowala, jednak jak wcisniemy klawisz, a potem zręcznie przestawimy myszką 'karetkę' w komórce na pozycje przed znakiem, który podaliśmy to możemy już wpisywać więcej cyfr heheh :)

0
kAzek napisał(a)

No chyba żartujesz nic takiego się nie dzieje (i nie ma prawa).

Dokładnie, jeśli w danej komórce jest już coś wpisane (czyli de facto długość łańcucha wynosi 1) to w momencie przypisania znaku o kodzie #0 do argumentu nic nie zostanie wpisane; Jeśli Twój program działa inaczej to coś masz skopane - podaj kod jaki masz to coś więcej będzie można napisać;

Cóż to by było za zabezpieczenie, jeśli jakieś dziwne cuda z myszką miałyby je złamać; Ewentualnie integracja kontrolki z menu kontekstowym może popsuć zabawę - jeśli takie menu jest podpięte pod kontrolkę to także trzeba kontrolować moment wklejania zawartości ze schowka; Inne "zręczne przestawienia myszy" to najwidoczniej bugi, nie niedoskonałość podanego kodu;

0

kod jest logiczny dla mnie.

Moze to być faktycznie jakiś bug kontrolki gridowej a mianowicie, TNiceGrid.

0

kod ten sam co Kazek podal:

var
  X, Y: Integer;
begin
  X := TNiceGrid(Sender).Col; //kolumna
  Y := TNiceGrid(Sender).Row; //wiersz

  case Key of
    '0'..'9': if Length(TNiceGrid(Sender).Cells[x, y]) > 0 then Key := #0;
    #08, #13:
  else
    Key := #0;
  end; 

1 użytkowników online, w tym zalogowanych: 0, gości: 1