[Delphi] Tekst w StringGrid

0

Mam komponent StringGrid składający się z 6 kolumn. I jak zrobić, żeby w kolumnie 3, 4, 5 i 6 można było wpisywać tylko cyfry.
Zrobiłem coś takiego:

procedure TForm1.StringGridKeyPressed(ble ble ble);
begin
if (StringGrid.Col = 3) or (StringGrid.Col = 4) or
(StringGrid.Col = 5) or (StringGrid.Col = 6) then
begin
if not(Key in['0'..'9']) then
Key := #0;
end;
end;

no i ta procedurta działa w kolumnach: 4, 5 i 6 ale nie chce działać e kolumnie 3. Czy może ktoś wie o czemu? HELP

0

Nie działa, i nie będzię bo kolumny są indeksowane od zera. Kolumna trzecia ma indeks 2 czyli if StringGrid.Col = 2 then ...

0

A liczysz kolumny od 1 czy od 0? :)
To działa na 100% zakładając, że liczymy od 0:

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (StringGrid1.Col in [3, 4, 5, 6]) and not (Key in ['0'..'9']) then
Key := #0;
end;

0

Dryo, po co się tak rozpisujesz. Wystarczy:

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (StringGrid1.Col in [3..6]) and not (Key in ['0'..'9']) then
Key := #0;
end;
</quote>

0

Dryo, po co się tak rozpisujesz. Wystarczy:

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (StringGrid1.Col in [3..6]) and not (Key in ['0'..'9']) then
Key := #0;
end;
</quote>

Odnosze delikatne wrażenie że napisales to samo..

0

Odnosze delikatne wrażenie że napisales to samo.

Nie to samo. Jest subtelna różnica.
Ja napisałem:
[3, 4, 5, 6]
a Vogel:
[3..6]
:) Po prostu robiłem to automatycznie. Nawet nie patrzyłem, czy te elementy są z jednego ciągu :)
Niech żyje obsługa zbiorów w Pascalu !!

0

Wielkie dzięki!
Liczyłem kolumny od 1 i na tym mój błąd polegał.

0

Czy -1 (minus jeden) to cyfra, bo jeśli tak to jak ją wpiszesz.

0

Czy -1 (minus jeden) to cyfra, bo jeśli tak to jak ją wpiszesz.

Jasne, że nie cyfra. W systemie dziesiętnym cyfry to:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Skąd w ogóle to pytanie?

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