![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Edit
Ivolg © (2006-06-30 16:22:00)Я создаю Edit таким образом:
[CODE]
var
Edit:TEdit;
begin
Edit:=TEdit.Create(self);
Edit.Parent:=Form1;
Edit.Show;
[/CODE]
Как отловить событие OnKeyDown ?
PSPF2003 (2006-07-02 16:35:00) [1]
> доблестные китайские комсомольцы пишут код, который уже
> написан...
:))))
Ketmar (2006-07-02 16:26:00) [2]доблестные китайские комсомольцы пишут код, который уже написан...
Ivolg (2006-07-02 15:41:00) [3]Я уже разобрался... Просто сделал массив TEdit'ов и все...
Ketmar (2006-07-02 15:29:00) [4]вот же удивительно, да? переменную Edit перезаписали, а тупая Delphi и не догадалась, что надо использовать не новое значение, а то, которое было до присваивания. сносите вы эту Delphi, она ни на что не годна.
хинт: sender в обработчике для кого передают?
Ivolg (2006-07-02 13:52:00) [5]На мамом-то деле бага небыло...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
PageControl1: TPageControl;
procedure Button1Click(Sender: TObject);
procedure MyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Tb2:TTabSheet;
Edit:TEdit;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit:=TEdit.Create(Self);
Tb2:=TTabSheet.Create(PageControl1);
Tb2.PageControl:=PageControl1;
edit.Parent:=PageControl1.Pages[PageControl1.PageCount-1];
edit.OnKeyDown:=MyKeyDown;
end;
procedure TForm1.MyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
caption:=edit.Text;
end;
end.
Когда создается 1-й Edit, то все нормально... Когда я создаю 2-й, то при написании текста на 1-ом Edit'e, текст берется из последнего созданного, т.е
из 2-го Edit'a...
PSPF2003 (2006-07-02 13:18:00) [6]Бывает у меня делфи переодически просится зарегистрироватся :)
Ivolg (2006-07-02 13:11:00) [7]Хм, странно... Щяс проверил - работает, а недавно неработало... Значит баг где-то был...
PSPF2003 (2006-07-02 13:03:00) [8]Я не понял а что у тебя неработает?
Ivolg (2006-07-02 12:55:00) [9]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure MyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Tab:TTabSheet;
implementation
{$R *.DFM}
procedure TForm1.MyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage('MyKeyDown');
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
var
Edit:TEdit;
begin
Tab:=TTabSheet.Create(PageControl1);
Tab.PageControl:=PageControl1;
Edit:=TEdit.Create(Self);
edit.Parent:=PageControl1.Pages[PageControl1.PageCount-1];
edit.OnKeyDown:=MyKeyDown;
end;
end.
PSPF2003 (2006-07-02 12:51:00) [10]Напиши код как ты его создаеш
PSPF2003 (2006-07-02 12:42:00) [11]Напиши код
Ivolg (2006-07-02 12:39:00) [12]Почему-то, когда я создаю второй Edit, то процедура MyKeyDown обрабатывается во втором Edit'е, а в первом - нет...
Ivolg (2006-06-30 16:31:00) [13]Спасибо, разобрался )
Ega23 (2006-06-30 16:28:00) [14]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure MyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
With TEdit.Create(Self) do
begin
Parent:=Self;
SetBounds(100, 100, 100, 24);
OnKeyDown:=MyKeyDown;
end;
end;
procedure TForm1.MyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage('MyKeyDown');
end;
end.
Loginov Dmitry (2006-06-30 16:24:00) [15]
var
Edit:TEdit;
begin
Edit:=TEdit.Create(self);
Edit.Parent:=Form1;
//Edit.Show;
Edit.OnKeyDown := MyKeyDown;