|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
Изменил вопрос
|
#17
|
||||
|
||||
Цитата:
Цитата:
Код:
NumberEdit[0].OnKeyPress:=EditKeyPress; где EditKeyPress - предыдущая версия. |
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
sorockinalex (28.11.2012)
|
#18
|
|||
|
|||
А было так. Изменённое. Работает! Спасибо!
Код:
procedure TFAddEquipmentNumbers.FormCreate(Sender: TObject); begin LoadFormProperties(Self as TForm); SetLength(numberEdit,1); SetLength(birthyearEdit,1); NumberEdit[0]:=TEdit.Create(Self); NumberEdit[0].Parent:=Self; NumberEdit[0].Left:=8; NumberEdit[0].Top:=69; NumberEdit[0].Width:=60; NumberEdit[0].Height:=21; NumberEdit[0].Visible:=true; NumberEdit[0].Enabled:=true; NumberEdit[0].OnKeyPress:=EditKeyPress; birthyearEdit[0]:=TEdit.Create(Self); birthyearEdit[0].Parent:=Self; birthyearEdit[0].Left:=76; birthyearEdit[0].Top:=69; birthyearEdit[0].Width:=30; birthyearEdit[0].Height:=21; birthyearEdit[0].MaxLength:=2; birthyearEdit[0].Visible:=true; birthyearEdit[0].Enabled:=true; birthyearEdit[0].OnKeyPress:=EditKeyPress; try ApplyImage.Picture.LoadFromFile('icons\apply.ico'); except showmessage('Íå íàéäåíà èêîíêà apply.ico') end; try CloseImage.Picture.LoadFromFile('icons\close.ico'); except showmessage('Íå íàéäåíà èêîíêà close.ico') end; end; Код:
procedure TFAddEquipmentNumbers.EditKeyPress(Sender: TObject; var Key: Char); const allowedsymbols: set of Char=['0'..'9']; begin if (Key in allowedsymbols) then begin end else key :=#0; end; |
#19
|
|||
|
|||
Опять с той же проблемой, но немного вдругом ракурсе. Решил наконец вынести процедуру эту в DataModule...
Объявил процедуру здесь Код:
procedure EditKeyPressDigits(Sender: TObject; var Key: Char); const ... var ... implementation... Сама процедура: Код:
procedure EditKeyPressDigits(Sender: TObject; var Key: Char); const allowedsymbols: set of Char=['0'..'9', #8, #46]; begin if (Key in allowedsymbols) then begin end else key :=#0; end; Теперь как её вызвать не знаю. То, что в предыдущем посте отказывается работать: Код:
Edit2.OnChange := EditKeyPressDigits; Цитата:
Где-то в другом месте нужно объявлять процедуру или по-другому объявлять... Подскажите, вечная проблема с вынесением процедур за пределы текущего модуля... |
#20
|
|||
|
|||
Пытаюсь её разместить в паблик в дата модуле - пишет:
Цитата:
Добавил тут же.... Разобрался... Не указал TDM. в заглавии самой процедуры внизу Но всё равно пишет при компиляции, что Цитата:
Последний раз редактировалось sorockinalex, 11.01.2013 в 09:07. |
#21
|
|||
|
|||
Сделал!
Делать так: Помещаем процедуру в public Код:
type TDM = class(TDataModule) ... public procedure EditKeyPressDigits(Sender: TObject; var Key: Char); внизу сама процедура Код:
procedure TDM.EditKeyPressDigits(Sender: TObject; var Key: Char); const allowedsymbols: set of Char = ['0'..'9', #8, #46]; begin if (Key in allowedsymbols) then begin end else key := #0; end; Вызов процедуры так: Код:
Edit2.OnKeyPress := DM.EditKeyPressDigits; |
#22
|
|||
|
|||
Ну надо не OnChange использовать, а OnKeyPress.
У него другие параметры - посмотри в справке |