Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Вниз

Как к функции прикрепить процедуру   Найти похожие ветки 

 
Лесник   (2003-04-17 23:55) [0]

Привет знатоки. Столкнулся я со следующей проблемой: Мне необходимо чтобы стандартный InputtBox при вводе в поле Edit обрабатывал событие OnKeyPress и разрешал вводить только цифры. Создал я свой юнит в который переписал процедуру (из Dialogs.pas ) InputBox и InputQuery все работает пока не пытаюсь после создания Edit"a подключить процедуру EditKeyPress
Пример кода:

procedure EditKeyPress(Sender:TObject;var Key:Char);
begin
if not (Key in["0".."9") then key:=#0;
end;

function InputQueryN(const ACaption, APrompt: string;
var Value: string): Boolean;
...........
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := Prompt.Top + Prompt.Height + 5;
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := Value;
SelectAll;
OnKeyPress:=EditKeyPress; //здесь ошибка
end;
.............
Что здесь неправильно помогите разобраться.
Спасибо.


 
Лесник   (2003-04-17 23:57) [1]

Извиняюсь за опечатку

procedure EditKeyPress(Sender:TObject;var Key:Char);
begin
if not (Key in["0".."9"]) then key:=#0;
end;


 
DJ_Sedoy   (2003-04-18 05:18) [2]

Насколько я понял, то обработчик события должен быть методом объекта, а не просто процедурой.


 
Palladin   (2003-04-18 07:07) [3]

type TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object;


 
malkolinge   (2003-04-18 13:07) [4]

Код компонента в студию..особено интересен диспечер события


 
Лесник   (2003-04-18 18:26) [5]

Все равно ошибка
[Error] MyDialogs.pas(79): Incompatible types: "method pointer and regular procedure"


 
VAleksey   (2003-04-18 18:28) [6]

Вынеси описание процедуры обработчика в модуль.


 
Лесник   (2003-04-18 18:52) [7]

если пишу
OnKeyPress(Form,EditKeyPress);
получаю ошибку
[Error] MyDialogs.pas(79): Types of actual and formal var parameters must be identical


 
Юрий Федоров   (2003-04-18 19:47) [8]

Такой вариант
Type
TMyObject = class
procedure EditKeyPress(Sender:TObject;var Key:Char);

end;{class TMyObject}
....
var Obj : TMyObject;
....
function InputQueryN
...
OnKeyPress:=Obj.EditKeyPress;
Obj нужно еще и создать


 
Лесник   (2003-04-19 00:20) [9]

Спасибо Юрий Федоров ©
наконец то получилось
Type
TMyObject = class
procedure EditKeyPress(Sender:TObject;var Key:Char);
end;
procedure TMyObject.EditKeyPress(Sender:TObject; var Key: Char);

begin
If not (Key in ["0".."9",Decimalseparator])then Key:=#0;
end;
...
function InputQueryN(const ACaption, APrompt: string;
var Value: string): Boolean;
var obj:TMyObject;
....
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := Prompt.Top + Prompt.Height + 5;
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Font.Color:=clNavy;
Text := Value;
SelectAll;
OnKeyPress:=Obj.EditKeyPress;
end;
...

правда выдается
[Warning] MyDialogs.pas(92): Variable "Obj" might not have been initialized
но работает как надо.


 
Лесник   (2003-04-19 00:49) [10]

Мне еще посоветовали
With Edit Do SetWindowLong(Handle,GWL_STYLE,GetWindowLong(Handle,GWL_STYLE) or ES_NUMBER);
тоже работает но без децималсепаратора


 
LEON   (2003-04-19 20:07) [11]

чтобы убрать warning после бегина напиши obj := nil



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
8-653
xn0bys
2003-01-24 10:36
2003.05.01
Перерисовка куска Image...


3-421
Alex_t
2003-04-11 19:50
2003.05.01
проверка корректности данных в таблице


14-740
FALLout-13
2003-04-12 09:31
2003.05.01
Как написать что-нибудь подобное файлменеджеру? ОООчень надо!!!


6-666
sergey2
2003-03-04 21:50
2003.05.01
Как сохранить отдельные элементы HTML документа в файлы?


6-667
ga3
2003-03-06 03:51
2003.05.01
свойства обозревателя





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский