![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
события в RunTime [D6]
Илья_С © (2007-09-17 14:26:00)Уважаемые мастера.
Как присвоить FEdit событие ONKeyDown.
Вот пример:
program App;
uses
Windows,
Forms,
StdCtrls,
Graphics,
Classes,
Controls,
SysUtils,
Messages,
Main_u in 'Main_u.pas' {Main_f};
{$R *.res}
const
Afr = 9825;
var
sOld:TForm;
FLab:TLabel;
FKey:Boolean;
FEdit:TEdit;
FOK,FCancel:TButton;
FOKClick,FCancelClick:TNotifyEvent;
procedure OKClick;
begin
if FEdit.Text = Inttostr(Afr) then
begin
FKey:=True;
sOld.Close;
end else
Application.Terminate;
end;
procedure CancelClick;
begin
FKey:=False;
Application.Terminate;
end;
begin
Application.Initialize;
Application.CreateHandle;
FKey:=False;
sOld:=TForm.Create(nil);
sOld.Position:=poScreenCenter;
sOld.BorderStyle:=bsToolWindow;
sOld.Caption:='Îãðàíè÷åíèå ; äîñòóïà';
sOld.Height:=100;
sOld.Width:=285;
sOld.KeyPreview:=True;
FLab:=TLabel.Create(nil);
FLab.Parent:=sOld;
Flab.Left:=5;
FLab.Top:=5;
Flab.Font.Style:=[FSBold];
Flab.Font.Name:='Tahoma';
Flab.Caption:='Ââåäèòå àâòîðèçèðîâàí 237;ûé êëþ÷ !';
Flab.Update;
FEdit:=TEdit.Create(nil);
FEdit.Parent:=sOld;
FEdit.Left:=5;
FEdit.Top:=20;
FEdit.Width:=270;
FEdit.PasswordChar:='*';
FEdit.OnKeyDown ??????
Если идти через TMethod - ошибка.
FCancel:=TButton.Create(nil);
FCancel.Parent:=sOld;
FCancel.Height:=21;
FCancel.Caption:='&Îòìåíà';
FCancel.Top:=48;
FCancel.Left:=sOld.Width-FCancel.Width-10;
FOK:=TButton.Create(nil);
FOK.Parent:=sOld;
FOK.Height:=21;
FOK.Caption:='&OK';
FOK.Top:=48;
FOK.Left:=sOld.Width-FOK.Width-10-FCancel.Width-5;
TMethod(FOKClick).Data:=nil;
TMethod(FOKClick).Code:=@OKClick;
TMethod(FCancelClick).Data:=nil;
TMethod(FCancelClick).Code:=@CancelClick;
FOK.OnClick:=FOKClick;
FCancel.OnClick:=FCancelClick;
sOld.ShowModal;
FLab.Free;
FEdit.Free;
FOK.Free;
sOld.Free;
if not FKey then
begin
Application.Terminate;
Exit;
end;
Application.CreateForm(TMain_f, Main_f);
Application.MainForm.WindowState:=wsMaximized;
Application.Run;
DVM (2007-09-17 15:21:00) [1]Если исправить немного то работать оно будет. Но зачем городить такой странный огород только для того, чтобы вывести форму с двумя кнопками (форма ввода пароля), когда все это можно сделать по-человечески?
DrPass (2007-09-17 15:14:00) [2]
> Суслик © (17.09.07 15:10) [6]
Работать-то будет. Но зачем применять хаки, если не знаешь элементарных вещей?
Суслик (2007-09-17 15:10:00) [3]
> [5] DrPass © (17.09.07 15:07)
> > TMethod(FOKClick).Data:=nil;
> > TMethod(FOKClick).Code:=@OKClick;
кстати ничего ужасного - работать то будет :)
DrPass (2007-09-17 15:07:00) [4]
> Application.Initialize;
> Application.CreateHandle;
> TMethod(FOKClick).Data:=nil;
> TMethod(FOKClick).Code:=@OKClick;
> Application.Terminate;
> Exit;
С ума сойти... Все равно что браться считать интегралы, не научившись таблице умножения...
Anatoly Podgoretsky (2007-09-17 14:54:00) [5]> Denis_ (17.09.2007 14:49:03) [3]
Насколько хватило интеллекта.
Denis_ (2007-09-17 14:49:00) [6]
> program App
неужели специально так назвал, типа шутка юмора? :D
DVM (2007-09-17 14:37:00) [7]зачем все в файл проекта запихал?
DVM (2007-09-17 14:36:00) [8]что за бред?