![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отучить наследник TButton приимать фокус?
Витаий Победа © (2006-12-04 20:12:00)Чтобы по tab На него нельзя было перейти - есть свойство TabStop, а как отучить его брать фокус при клике?
DVM (2006-12-08 10:17:00) [1]
> да наверняка картинка на кнопке. а рамка поверх картинки
> не смотрится.
А нахрена тогда в качестве предка брать TButton. Взять TCustomControl и сделать получение фокуса по своему. И отрисовку рамки фокуса тоже.
Amoeba (2006-12-07 11:02:00) [2]
> Leonid Troyanovsky © (05.12.06 18:03) [9]
>
> > Витаий Победа (05.12.06 06:24) [6]
>
> > Казалось бы, фокусы, бутоны это вин апи, ан нет, это основное
>
> > :)))
>
>
> Какое уж тут вин апи.
> Просто, такой как "Извращения" еще не сделали.
>
> --
> Regards, LVT.
А жаль. Давно пора завести такой раздел.
Barloggg (2006-12-06 11:50:00) [3]да наверняка картинка на кнопке. а рамка поверх картинки не смотрится.
Игорь Шевченко (2006-12-05 18:08:00) [4]
> Чтобы по tab На него нельзя было перейти - есть свойство
> TabStop, а как отучить его брать фокус при клике?
Я сильно извиняюсь, а зачем требуется такое поведение ?
Leonid Troyanovsky (2006-12-05 18:03:00) [5]
> Витаий Победа (05.12.06 06:24) [6]
> Казалось бы, фокусы, бутоны это вин апи, ан нет, это основное
> :)))
Какое уж тут вин апи.
Просто, такой как "Извращения" еще не сделали.
--
Regards, LVT.
GrayFace (2006-12-05 12:41:00) [6]Можно попробовать превратить это в некнопку - перекрыть CreateParams запомнить Params.WindowClass.lpfnWndProc, вызвать inherited и восстановить lpfnWndProc.
Loginov Dmitry (2006-12-05 07:40:00) [7]> вот например TPanel наследник TWinControl а фокус не принимает
Ну это дело поправимо:
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.SetFocus;
end;
:))
Витаий Победа (2006-12-05 06:24:00) [8]Казалось бы, фокусы, бутоны это вин апи, ан нет, это основное :)))
trubin (2006-12-04 21:26:00) [9]Поправка:
> сразу по получению фокуса
передавать фокус в конце обработчика TMyButton.OnClick
trubin (2006-12-04 21:24:00) [10]Как вариант сразу по получению фокуса передавать его другому winControl-у
Витаий Победа (2006-12-04 20:47:00) [11]
> Eraser © (04.12.06 20:35) [1]
> использовать наследников TSpeedButton (TGraphicControl)
> - они по своей природе не могут получить фокус.
да тут такое дело, использую компоненты от Developer Express они в зависимости от установки стиля меняют свой вид (ала скиновые), так вот TCxButton (от TButton) у них есть а наследника TGraphicControl у них нет :( (или у меня нет...) они в своих редакторах каждый раз перерисовывают...
Витаий Победа (2006-12-04 20:43:00) [12]Расскажите лучше от чего зависит принимает контрол фокус или нет? вот например TPanel наследник TWinControl а фокус не принимает :(...
я тут исходники поукапал, кажется что когда вызывается кнопочная
CallWindowProc то она в внутри делает SetFocus для этого контрола :(
неужели никак нельзя отучить кнопку принимать фокус?TMyButton.WMSetFocus((7, 3212148, 0, 0))
TControl.WndProc((7, 3212148, 0, 0, 884, 49, 0, 0, 0, 0))
TWinControl.WndProc((7, 3212148, 0, 0, 884, 49, 0, 0, 0, 0))
TButtonControl.WndProc((7, 3212148, 0, 0, 884, 49, 0, 0, 0, 0))
TMyButton.WndProc((7, 3212148, 0, 0, 884, 49, 0, 0, 0, 0))
TWinControl.MainWndProc((7, 3212148, 0, 0, 884, 49, 0, 0, 0, 0))
StdWndProc(2556858,7,3212148,0)
TWinControl.DefaultHandler((no value))
TControl.WMLButtonDown((513, 1, 38, 18, (38, 18), 0))
TControl.WndProc((513, 1, 1179686, 0, 1, 0, 38, 18, 0, 0))
TWinControl.WndProc((513, 1, 1179686, 0, 1, 0, 38, 18, 0, 0))
TButtonControl.WndProc((513, 1, 1179686, 0, 1, 0, 38, 18, 0, 0))
TMyButton.WndProc((513, 1, 1179686, 0, 1, 0, 38, 18, 0, 0))
TWinControl.MainWndProc((513, 1, 1179686, 0, 1, 0, 38, 18, 0, 0))
StdWndProc(2556858,513,1,1179686)
TApplication.ProcessMessage((2556858, 513, 1, 1179686, 12579000, (625, 372)))
TApplication.HandleMessage
TApplication.Run
Project2
Eraser (2006-12-04 20:35:00) [13]использовать наследников TSpeedButton (TGraphicControl) - они по своей природе не могут получить фокус.