Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

Edit   Найти похожие ветки 

 
Ivolg ©   (2006-06-30 16:22) [0]

Я создаю Edit таким образом:
[CODE]
var
Edit:TEdit;
begin
    Edit:=TEdit.Create(self);
    Edit.Parent:=Form1;
    Edit.Show;
[/CODE]
Как отловить событие OnKeyDown ?


 
Loginov Dmitry ©   (2006-06-30 16:24) [1]

var
Edit:TEdit;
begin
   Edit:=TEdit.Create(self);
   Edit.Parent:=Form1;
   //Edit.Show;
   Edit.OnKeyDown := MyKeyDown;


 
Ega23 ©   (2006-06-30 16:28) [2]


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.


 
Ivolg ©   (2006-06-30 16:31) [3]

Спасибо, разобрался )


 
Ivolg ©   (2006-07-02 12:39) [4]

Почему-то, когда я создаю второй Edit, то процедура MyKeyDown обрабатывается во втором Edit"е, а в первом - нет...


 
PSPF2003 ©   (2006-07-02 12:42) [5]

Напиши код


 
PSPF2003 ©   (2006-07-02 12:51) [6]

Напиши код как ты его создаеш


 
Ivolg ©   (2006-07-02 12:55) [7]

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 13:03) [8]

Я не понял а что у тебя неработает?


 
Ivolg ©   (2006-07-02 13:11) [9]

Хм, странно... Щяс проверил - работает, а недавно неработало... Значит баг где-то был...


 
PSPF2003 ©   (2006-07-02 13:18) [10]

Бывает у меня делфи переодически просится зарегистрироватся :)


 
Ivolg ©   (2006-07-02 13:52) [11]

На мамом-то деле бага небыло...

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...


 
Ketmar ©   (2006-07-02 15:29) [12]

вот же удивительно, да? переменную Edit перезаписали, а тупая Delphi и не догадалась, что надо использовать не новое значение, а то, которое было до присваивания. сносите вы эту Delphi, она ни на что не годна.

хинт: sender в обработчике для кого передают?


 
Ivolg ©   (2006-07-02 15:41) [13]

Я уже разобрался... Просто сделал массив TEdit"ов и все...


 
Ketmar ©   (2006-07-02 16:26) [14]

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


 
PSPF2003 ©   (2006-07-02 16:35) [15]


> доблестные китайские комсомольцы пишут код, который уже
> написан...

:))))



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

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
1-1149496141
DelphiLexx
2006-06-05 12:29
2006.07.23
В OnCreate формы запретить отображение этой формы


10-1122705847
rentgen
2005-07-30 10:44
2006.07.23
WorkBooks.Title -?


2-1152105202
oleggar
2006-07-05 17:13
2006.07.23
webbrowser


2-1151861905
Призрак
2006-07-02 21:38
2006.07.23
Передать PChar через PostMessage


15-1151231537
@BraIN
2006-06-25 14:32
2006.07.23
Windows Vista Product Key