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

Вниз

Создание компонентов Событие OnChange Для TEdit   Найти похожие ветки 

 
Коля   (2005-06-08 09:08) [0]

Уважаемые мастера Delphi у меня возникла пробляма суть которой я так и немогу понять. На динамически создоваемый компонент TEdit
Событию  OnChange присваиваю процедуру

procedure TLocate.SetGrid(const Value: TMyDbGrid);
begin
FGrid:=Value;
if Value<>nil then
 begin
  if FEdit=nil then
   begin
    FEdit:=TEdit.Create(Self);
    FEdit.Visible:=False;
    FEdit.Parent:=FGrid;
    FEdit.Ctl3D:=False;
    FEdit.OnChange:=EditChange;//-Вот она
    FEdit.OnKeyDown:=EditKeyDown;
    FEdit.OnExit:=EditExit;
    FGrid.OnKeyPress:=KeyPressGrid;
   end;
 end;
Все остальные присвоеные процедуры вызываются
а OnChange нет туда даже незажоит может кто знает вчём дело
Помогите пожалуйста очень надо.
end;


 
Digitman ©   (2005-06-08 09:17) [1]


> Все остальные присвоеные процедуры вызываются


это как ?

при


> FEdit.Visible:=False


эдит-контрол не может получить фокус, соответственно не может реагирговать ни на какие события ввода ..

?


 
Коля   (2005-06-08 09:23) [2]

Эдит становится Visible=True при KeyPress Grida И соответственно получает фокус ввода.

Procedure TLocate.KeyPressGrid(Sender: TObject; var Key: Char);
begin
FEdit.Visible:=True;
FEdit.Text:=Key;
FEdit.SetFocus;
FEdit.SelStart:=Length(FEdit.Text);
end;


 
Digitman ©   (2005-06-08 09:41) [3]

странно это ..

а ты WndProc() нигде не перекрывал ?


 
Коля   (2005-06-08 10:28) [4]

Да вроде нет


 
Digitman ©   (2005-06-08 10:43) [5]

метод TCustomEdit.Chahge (в теле которого собссно и вызывается обработчик OnChange) вызывается как результат обработки нотифик.сообщения EN_CHANGE

цитата из справки :

The EN_CHANGE notification message is sent when the user has taken an action that may have altered text in an edit control. Unlike the EN_UPDATE notification message, this notification message is sent after Windows updates the screen. The parent window of the edit control receives this notification message through the WM_COMMAND message.

Обрати внимание на подчеркнутое


 
Коля   (2005-06-08 11:17) [6]

Ну да после переопределения Parent на SetParent(value) компонента тобишь на форму или панель то всё ок но как это избавиться мне нужен парент на Grid


 
Digitman ©   (2005-06-08 11:42) [7]


> мне нужен парент на Grid


чем это обосновано ?


 
Коля   (2005-06-08 12:34) [8]

да уменя Grid Align =AlCli.. чтобы не искать его по форме
Left и TOP
Я выкрутился создал TPanel Определил на Grid а на Panel уже определил мой Edit


 
Digitman ©   (2005-06-08 12:39) [9]

можно было и без панели

делаешь форму родителем, обрабатываешь у нее OnResize, а в обработчике вычисляешь и устанавливаешь координаты эдит-контрола


 
Коля   (2005-06-08 14:36) [10]

Ну да можно было и так спасибо за помощь



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

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

Наверх




Память: 0.49 MB
Время: 0.028 c
9-1111308695
grouzd[E]v
2005-03-20 11:51
2005.06.29
ASCII и треугольник


1-1118181493
Green_Templar
2005-06-08 01:58
2005.06.29
свой тип файлов


14-1117439308
Kolan
2005-05-30 11:48
2005.06.29
что такое xmas


14-1117821313
NightStranger
2005-06-03 21:55
2005.06.29
Два уровня языков программирования?


4-1114885483
Okey_
2005-04-30 22:24
2005.06.29
WM_RButtonDown