Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо