Piotr Wójcik

Piotr Wójcik Programista, IPC
s.c.

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

potrzebuje procedury uniemożliwiającej wpisywanie do TextBox'a niektórych znaków np. '.":; itp.?
Marcin Nizioł

Marcin Nizioł Analityk SI /
programista C#, RCGW
S.A.

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

Oprogramuj sobie zdarzenie nacisniecia klawisza i po sprawie.
Temat jest na tyle prosty ze wygooglasz go sobie w kilka chwil.
Piotr M.

Piotr M. programista

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

Aspirant Piotr Wójcik:
potrzebuje procedury uniemożliwiającej wpisywanie do TextBox'a niektórych znaków np. '.":; itp.?

private void textBox1_KeyPress( object sender, KeyPressEventArgs e )
{
if ( e.KeyChar == '.' )
{
e.Handled = true;
}
}
Piotr F. edytował(a) ten post dnia 09.09.08 o godzinie 18:10

konto usunięte

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

W Delphi można umożliwić wpisywanie tylko niektórych znaków np. cyfr w TEdit w następujący sposób:

// zdarzenie OnKeyPress, Formularz Form1: TForm, komponent Edit1: TEdit

procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (Key in ['0'..'9']) then Key:=#0;
// przypisując do Key wartość #0 (NULL) uniemożliwiamy
//wprowadzenie znaków spoza zakresu 0 do 9 więc można wpisać tylko
//cyfry
end;

Można również oprogramować komponent tak aby można było wprowadzić dany znak np. przecinek tylko raz.

Przykład:

procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (Key in ['0'..'9',',',#8]) then Key:=#0
else if Key=',' then
if Pos(Key,Edit1.Text)<>0 then Key:=#0;
end;

Pozdrawiam.Dariusz Rorat edytował(a) ten post dnia 11.11.09 o godzinie 20:48
Mariusz Bułkowski

Mariusz Bułkowski W tajnej służbie Jej
Królewskiej Mości

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

A co jak user zna klawisze skrótów
Ctrl-V ?

konto usunięte

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

Jeżeli oprogramujemy zdarzenie OnKeyPress tak jak to przedstawiłem na przykładnie nie można wkleić tekstu do tego pola przy pomocy skrótu Ctrl+V nawet jeżeli zawiera tylko cyfry (jeżeli to zdarzenie nie jest oprogramowane to jest to możliwe i można wkleić dowolny tekst). Testowałem to już na Delphi i Lazarusie. Możliwe że istnieje możliwość oprogramowania tego komponentu tak aby można było wklejać np. tylko cyfry a liter nie ale jeszcze tego nie próbowałem.

Muszę przyznać że pisanie programów "idiotoodpornych" jest dość trudne ponieważ trzeba uwzględnić różne operacje na tym komponencie. W razie potrzeby można użyć TMaskEdit zamiast TEdit.
Piotr M.

Piotr M. programista

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

W razie czego można pobierać wartość przez StrToIntDef(edit.text, 0) ;)

konto usunięte

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

Dariusz Rorat:
[...]
Muszę przyznać że pisanie programów "idiotoodpornych" jest dość trudne ponieważ trzeba uwzględnić różne operacje na tym komponencie.
[...]
Noo, pewnie trzeba jednak uwzględnić... Cóż, praca inżyniera na ogół jest trudna i, za przeproszeniem, odpowiedzialna.

A co powiecie, Panowie, o tym: http://wiadomosci.gazeta.pl/Wiadomosci/1,80277,7242810... ?Wojciech Błoński edytował(a) ten post dnia 12.11.09 o godzinie 21:23

konto usunięte

Temat: Filtrowanie wpisywanych znaków w TextBox'ie

IMO najlepszym rozwiązaniem jest funkcja która potraktuje text odpowiednim RegExp'em. Można jej użyć w różnych eventach: OnKeyPress i OnExit (na wypadek ctrl+v) powinny załatwić temat.



Wyślij zaproszenie do