Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 28.11.2012, 22:33
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

Изменил вопрос
Ответить с цитированием
  #17  
Старый 28.11.2012, 22:44
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Цитата:
Сообщение от sorockinalex
Изменил вопрос
Верни вопрос как был (тоесть сделай как раньше), и пиши не
Цитата:
Код:
NumberEdit[0].OnChange:=EditKeyPress;
а
Код:
NumberEdit[0].OnKeyPress:=EditKeyPress;

где EditKeyPress - предыдущая версия.
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
sorockinalex (28.11.2012)
  #18  
Старый 28.11.2012, 23:09
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

А было так. Изменённое. Работает! Спасибо!
Код:
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  
Старый 11.01.2013, 08:58
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

Опять с той же проблемой, но немного вдругом ракурсе. Решил наконец вынести процедуру эту в 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;
Со словами:
Цитата:
Incompatible types: method pointer and regular procedure

Где-то в другом месте нужно объявлять процедуру или по-другому объявлять... Подскажите, вечная проблема с вынесением процедур за пределы текущего модуля...
Ответить с цитированием
  #20  
Старый 11.01.2013, 09:03
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

Пытаюсь её разместить в паблик в дата модуле - пишет:
Цитата:
Unsatisfied forward of external declaration TDM.EditKeyPressDigits

Добавил тут же....
Разобрался... Не указал TDM. в заглавии самой процедуры внизу

Но всё равно пишет при компиляции, что
Цитата:
Undeclared identifier EditKeyPressDigits

Последний раз редактировалось sorockinalex, 11.01.2013 в 09:07.
Ответить с цитированием
  #21  
Старый 11.01.2013, 09:50
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию

Сделал!
Делать так:
Помещаем процедуру в 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;
У меня была ошибка - вместо OnKeyPress было OnChange
Ответить с цитированием
  #22  
Старый 11.01.2013, 09:56
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Ну надо не OnChange использовать, а OnKeyPress.
У него другие параметры - посмотри в справке
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter