Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фокус: " I'll be back... ", Он ушел, но обещал вернуться...( 
:(
    Опции темы
mrEvel
Дата 20.5.2007, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 (на форме и на имэйдже, которое занимает всю форму), но фокус не пропадает!

Подскажите что мне сделать...  smile 


PM MAIL   Вверх
Snowy
Дата 20.5.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



1. У формы выставь ActiveControl.
2. Установи у контролов TabOrder в нужном порядке.
PM MAIL   Вверх
mrEvel
Дата 20.5.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



Цитата(Snowy @ 20.5.2007,  11:20)
1. У формы выставь ActiveControl.
2. Установи у контролов TabOrder в нужном порядке.

Сделал как ты написал. Ставил в TrackBar1.TabOrder и 0 и 1 и 2 и 354, но всё равно появляется... smile 
PM MAIL   Вверх
Sunvas
Дата 20.5.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



mrEvel, подмени оконную процедуру Тракбара и при получении сообщения активации просто передавай его дальше.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
mrEvel
Дата 20.5.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



Цитата(Sunvas @ 20.5.2007,  13:07)
mrEvel, подмени оконную процедуру Тракбара и при получении сообщения активации просто передавай его дальше.

 smile   smile 
PM MAIL   Вверх
Sunvas
Дата 20.5.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



mrEvel, возьми за основу: http://forum.vingrad.ru/index.php?showtopi...t&p=1125535


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
mrEvel
Дата 20.5.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



Цитата(Sunvas @ 20.5.2007,  16:53)
mrEvel, возьми за основу: http://forum.vingrad.ru/index.php?showtopi...t&p=1125535

Спасибо... буду ковырять. Как справлюсь с проблемой - обязательно отпишу.
PM MAIL   Вверх
pseud
Дата 22.5.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Если они лежат на одном "родителе" (напр., TPanel), то:
Код

Memo1.TabOrder := 0;
TrackBar1.TabOrder := 1;


Если Memo1 лежит на Panel1, а TrackBar1 на Panel2, и Panel1 с Panel2 имеют одного "родителя", то:
Код

Panel1.TabOrder := 0;
Panel2.TabOrder := 1;


и т.д.
Сам проверил - все ОК. И просто в окне, и при переключении между приложениями.
PM MAIL   Вверх
Sunvas
Дата 22.5.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



pseud
Цитата(mrEvel @  20.5.2007,  11:51 Найти цитируемый пост)
 Ставил в TrackBar1.TabOrder и 0 и 1 и 2 и 354, но всё равно появляется... 





--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Misha_White
Дата 22.5.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: нет
Всего: 1



mrEvel
TabOrder меняй во время проектирования... Т.е. левой кнопкой на форме и т.д.
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
mrEvel
Дата 23.5.2007, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



Цитата(Misha_White @ 22.5.2007,  14:18)
mrEvel
TabOrder меняй во время проектирования... Т.е. левой кнопкой на форме и т.д.

Я меняю TabOrder в левой панели параметров, т.е. при проектировании...

Добавлено через 13 минут и 30 секунд
Цитата(Sunvas @ 20.5.2007,  16:53)
mrEvel, возьми за основу: http://forum.vingrad.ru/index.php?showtopi...t&p=1125535

По совету друга немного изменил предложенный метод обхода:

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;


Но все равно не пашет(((   При переключение на другое приложение и обратно фокус появляется. Мистика)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0804 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.