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

Вниз

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

 
NaRuTo ©   (2009-06-16 17:32) [0]

Здраствуйте, Мастера! Помогите пожалуйста разобраться. У меня на форме есть два компонента - один дочерний класс родителя TCustomControl, второй просто TEdit. Как заставить дочерний класс родителя TCustomControl быть постоянно в фокусе? Т.е TEdit должен быть не активен до тех пор пока я на него не нажму. Заранее спасиб.


 
Naruto ©   (2009-06-16 17:33) [1]

Да забыл сказать мне нужно, чтобы класс TCustomControl смог обрабатывать события onKeyDown, onKeyPress.


 
DVM ©   (2009-06-16 17:35) [2]

Т.е. фактически тебе надо чтобы фокус не передавался с помощью TAB? Или что другое? Объясни зачем такое нужно.


 
oldman ©   (2009-06-16 18:03) [3]

Сделай у TEdit Visible=False и поставь SpeedButton "Ввести данные", при нажатии на который откроется твой TЕdit.
SpeedButton фокус не получит никогда.


 
Юрий Зотов ©   (2009-06-16 18:20) [4]

> нужно, чтобы класс TCustomControl смог обрабатывать события
> onKeyDown, onKeyPress.

Обработайте в наследнике сообщение WM_GETDLGCODE.
Детали см. в справке API.


 
Leonid Troyanovsky ©   (2009-06-16 18:32) [5]


> Юрий Зотов ©   (16.06.09 18:20) [4]

> > нужно, чтобы класс TCustomControl смог обрабатывать события

> Обработайте в наследнике сообщение WM_GETDLGCODE.

TCustomControl не обязан знать про WM_.
На худой конец CM_.

> NaRuTo ©   (16.06.09 17:32)  

> дочерний класс родителя TCustomControl быть постоянно в
> фокусе?

Фокус бывает у наследников TWinControl.

--
Regards, LVT.


 
oldman ©   (2009-06-16 18:43) [6]


> Т.е TEdit должен быть не активен до тех пор пока я на него
> не нажму.


А он без твоего участия получает фокус??????????????????


 
Naruto ©   (2009-06-16 18:49) [7]

Нет не получает. Как только форма стоновится активна фокус переходит к TEdit.


 
Leonid Troyanovsky ©   (2009-06-16 18:50) [8]


> Naruto ©   (16.06.09 17:33) [1]

> Да забыл сказать мне нужно, чтобы класс TCustomControl смог
> обрабатывать события onKeyDown, onKeyPress.

Установи у формы KeyPreview = true и выбирай контрол, который
должен на них реагировать.

--
Regards, LVT.


 
DVM ©   (2009-06-16 18:50) [9]


> Leonid Troyanovsky ©


> > дочерний класс родителя TCustomControl быть постоянно
> в
> > фокусе?
>
> Фокус бывает у наследников TWinControl.
>

Так TCustomControl  и есть наследник TWinControl


> TCustomControl не обязан знать про WM_.

Еще как обязан.

C TGraphicControl случаем не спутали?


 
DVM ©   (2009-06-16 18:54) [10]


> Naruto ©   (16.06.09 18:49) [7]

TabStop := true; для него сделал?

Ну и + [4] такого (там у меня со стрелками)

procedure TMyControl.WMGetDlgCode(var Message: TMessage);
begin
 Message.Result := DLGC_WANTMESSAGE or DLGC_WANTARROWS;
end;


 
DVM ©   (2009-06-16 19:08) [11]

Вот все нормально, фокус потомку TCustomControl передается:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type

 TMyControl = class(TCustomControl)
 private
   procedure WMSetFocus(var Message: TMessage); message WM_SETFOCUS;
   procedure WMKillFocus(var Message: TMessage); message WM_KILLFOCUS;
 protected
   procedure Paint; override;
 end;

 TForm1 = class(TForm)
   edt1: TEdit;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   MyControl: TMyControl;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

//------------------------------------------------------------------------------

procedure TMyControl.WMSetFocus(var Message: TMessage);
begin
 Repaint;
 inherited;
end;

//------------------------------------------------------------------------------

procedure TMyControl.WMKillFocus(var Message: TMessage);
begin
 Repaint;
 inherited;
end;

//------------------------------------------------------------------------------

procedure TMyControl.Paint;
begin
 if Self.Focused then
   Canvas.Brush.Color := clRed
 else
   Canvas.Brush.Color := clYellow;
 Canvas.FillRect(ClientRect);
end;

//------------------------------------------------------------------------------

procedure TForm1.FormCreate(Sender: TObject);
begin
 MyControl := TMyControl.Create(self);
 MyControl.Parent := Self;
 MyControl.Width := 100;
 MyControl.Height := 100;
 MyControl.TabStop := True;
end;

end.



 
Leonid Troyanovsky ©   (2009-06-16 19:22) [12]


> DVM ©   (16.06.09 18:50) [9]

> Так TCustomControl  и есть наследник TWinControl

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

Нет охоты ради этого дельфи ставить,
да и не найти оный во время ремонта :)

--
Regards, LVT.


 
Naruto ©   (2009-06-16 19:32) [13]

Странно как-то получилось onKeyDown не хотел обрабатывать VK_UP и VK_DOWN попробовал через API WM_KEYDOWN всё получилось. Всем большое спасибо особенно DVM ;)



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

Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
15-1245270610
Юрий
2009-06-18 00:30
2009.08.16
С днем рождения ! 18 июня 2009 четверг


2-1245404768
Андрэээ
2009-06-19 13:46
2009.08.16
FileStream


15-1245261116
jack128_
2009-06-17 21:51
2009.08.16
Ну что, вот я и папа!


6-1204874743
Михаил (Питер)
2008-03-07 10:25
2009.08.16
Широковещательный UDP запрос


15-1245079850
Cyrax
2009-06-15 19:30
2009.08.16
В каких случаях...





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