![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Подскажите пожалуйста, как сделать, чтобы в Edit можно было ввести цифры от 0 до 12
Заранее благодарен за ответы. Последний раз редактировалось ciev, 17.04.2009 в 17:46. |
|
#2
|
||||
|
||||
|
|
|
#3
|
|||
|
|||
|
Цитата:
и что?от 0 до 9 вводится.а как ввести 10,11,12? |
|
#4
|
|||
|
|||
|
Цитата:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': if (Edit1.Text <> '') and (StrToInt(Edit1.Text + Key) > 12) then
Key := #0;
#8: {};
else Key := #0;
end;
end;P.S. Это условие (Edit1.Text <> ''), кстати, необязательно проверять... Можно просто Код:
'0'..'9': if StrToInt(Edit1.Text + Key) > 12 then Key := #0; Последний раз редактировалось Nyctos Kasignete, 17.04.2009 в 18:16. |
|
#5
|
|||
|
|||
|
Цитата:
Код:
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
var
ci:integer;
ix,iy:integer;
CEdit:TEdit;
begin
for iy:=1 to 12 do
for ix:=1 to 12 do
if Sender is TEdit then
if (Sender as TEdit)=CEdits[ix,iy] then
CEdit:=CEdits[ix,iy];
if (Sender as TEdit)=CEdits[12,12] then
Exit;
if not(Key in['0'..'9',#8]) then
Key:= #0;
if Key <> #8 then begin
ci:=CEdit.ComponentIndex;Последний раз редактировалось Admin, 17.04.2009 в 18:54. |
|
#6
|
|||
|
|||
|
Уж простите, какой-то ужас... Зачем вложенные циклы?? Я так поняла, CEdits — двумерный массив объектов TEdit на форме. Ну назначьте им всем один и тот же обработчик события OnKeyPress. Типа такого...
Код:
procedure TForm1.AllEditsKeyPress(Sender: TObject; var Key: Char);
var
ci: Integer;
begin
if (Sender as TEdit) = CEdits[12,12] then Exit; // не поняла, зачем это...
case Key of
'0'..'9': if (StrToInt((Sender as TEdit).Text + Key) > 12) then
Key := #0;
#8: {};
else Key := #0;
end;
ci := (Sender as TEdit).ComponentIndex |