![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
mrEvel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
Всем доброго времени суток!
Во-первых, хотел выразить благодарность этому форуму, его основателям и постоянным участникам) Это один из самых лучших форумов, в котором не только быстро и по делу отвечают, но который и отличается красотой и удобством. Вот! Что-то настроение сегодня хорошее)) Теперь по делу. В моей программе есть два элемента, которые могут взять фокус - TrackBar и Memo. Когда я запускаю прогу, то автоматом фокус на себя берет TrackBar. Мне это очень резало глаз, поэтому я решил избавиться от этого дела. Почитал топик: http://forum.vingrad.ru/topic-64670.html#st_0_view_0 Сделал как там, а именно: procedure TForm1.FormCreate(Sender: TObject); begin form1.TrackBar1.ControlState:=[csFocusing]; form1.Memo1.ControlState:=[csFocusing]; end; Все замечательно, но когда переключаешься на другое приложение и обратно, то фокус появляется на TrackBar'е. Я попытался добавить эти же строчки в процедуры FormActivate, OnMouseMove (на форме и на имэйдже, которое занимает всю форму), но фокус не пропадает! Подскажите что мне сделать... ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
1. У формы выставь ActiveControl.
2. Установи у контролов TabOrder в нужном порядке. |
|||
|
||||
mrEvel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
Сделал как ты написал. Ставил в TrackBar1.TabOrder и 0 и 1 и 2 и 354, но всё равно появляется... ![]() |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
mrEvel, подмени оконную процедуру Тракбара и при получении сообщения активации просто передавай его дальше.
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
mrEvel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
![]() ![]() |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
mrEvel, возьми за основу: http://forum.vingrad.ru/index.php?showtopi...t&p=1125535
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
mrEvel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
Спасибо... буду ковырять. Как справлюсь с проблемой - обязательно отпишу. |
|||
|
||||
pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
Если они лежат на одном "родителе" (напр., TPanel), то:
Если Memo1 лежит на Panel1, а TrackBar1 на Panel2, и Panel1 с Panel2 имеют одного "родителя", то:
и т.д. Сам проверил - все ОК. И просто в окне, и при переключении между приложениями. |
||||
|
|||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
pseud,
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Misha_White |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 25.4.2007 Где: Кодинск Репутация: нет Всего: 1 |
mrEvel,
TabOrder меняй во время проектирования... Т.е. левой кнопкой на форме и т.д. --------------------
Я не волшебник... я только учусь... |
|||
|
||||
mrEvel |
|
||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
Я меняю TabOrder в левой панели параметров, т.е. при проектировании... Добавлено через 13 минут и 30 секунд
По совету друга немного изменил предложенный метод обхода: procedure TForm1.FormCreate(Sender: TObject); begin OldWndproc := SetWindowLong(TrackBar1.Handle,GWL_WNDPROC,LPARAM(@NewWinProc)); ... function NewWinProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall; begin if (umsg=WM_SETFOCUS) then exit else Result := CallWindowProc(Pointer(OldWndProc),wnd,uMsg,wParam,lParam); end; Но все равно не пашет((( При переключение на другое приложение и обратно фокус появляется. Мистика) |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |