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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.014 c
3-1147818739
Kooler
2006-05-17 02:32
2006.07.23
Выборка данных в БД без SQL


1-1149660164
Вася
2006-06-07 10:02
2006.07.23
Подключение ккм через rs232


2-1151955143
Footballer
2006-07-03 23:32
2006.07.23
Чё такое Handle?


2-1151954606
Ivolg
2006-07-03 23:23
2006.07.23
Окна


15-1150873232
Rentgen
2006-06-21 11:00
2006.07.23
Точная печать в Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский