Главная страница
    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.48 MB
Время: 0.011 c
6-1142500622
Ifrit
2006-03-16 12:17
2006.07.23
Посылка сообщения (типа net send от другого имени..


2-1152024016
Новинький
2006-07-04 18:40
2006.07.23
Как по резать слово на части?


15-1151226572
oldman
2006-06-25 13:09
2006.07.23
До чего ж докатилось наше образование... :(


15-1150450044
MBo
2006-06-16 13:27
2006.07.23
Пятничные задачки для brain разминки ;)


3-1147629839
Моторин Алексей
2006-05-14 22:03
2006.07.23
Как Открыть базу DBF котороя использует инвертируемый индекс





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