Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2010, 15:41   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

BOBAH13, вы немного людей запутали
Application.Run вызывается но в dpr файле.
для отработки цикла там Application.ProcessMessages;

просто в данном случае не нужно вешать основной поток, и все.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.01.2010, 15:45   #12
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
2. s. Creator - вы вызвали Application.Run; - это тоже самое что выше упомянутый цикл - поэтому и не тормозит.
Совершенно с вами согласен.
А что его ктото запрещал вызывать?
Мне показалось что не получается скрыть кнопку с ТаскБара.
s.Creator вне форума Ответить с цитированием
Старый 04.01.2010, 16:20   #13
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
BOBAH13, вы немного людей запутали
Application.Run вызывается но в dpr файле.
для отработки цикла там Application.ProcessMessages;

просто в данном случае не нужно вешать основной поток, и все.
Ничего не запутал. Вызывать "кусок кода" можно где угодно. Главное чтобы такой обработчик был один для приложения (была тут тема).

Никто не запрещал, про это и шла речь если вчитаться в то что я написал.

p.s. не пойму в чем проблема сейчас и какие вопросы могут тут возникать еще ?
BOBAH13 вне форума Ответить с цитированием
Старый 04.01.2010, 20:25   #14
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Да вроде всё работает. Тему можно закрывать. Но если что по этой теме, я может и спрошу здесь........
Altera вне форума Ответить с цитированием
Старый 05.01.2010, 00:19   #15
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Есть проблема!
Action-ы не срабатывают при нажатии указанных в них горячих клавиш, если использовать
Код:
while getMessage(appMes, 0, 0, 0) do
  begin
     translateMessage(appMes);
     dispatchMessage(appMes);
  end;


Помогите исправить?
Application.run не подходит (т.к. НЕТ акон созданных при помощи application.createForm), но ведь он не реализован всего тремя строчками.
Altera вне форума Ответить с цитированием
Старый 05.01.2010, 10:45   #16
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

( Могу немного ошибаться, последнии разы иконки в трее делал для сервисов с полгода назад. )

Самой иконке в трее передается только несколько событий мышки.
( при более низкоуровневом создаии ее можно указать какие мы будем обрабатывать и чем )

Если использовать стандартную инициализацию программы ( как в моем примере dfm ) с последующим сокрытием с Панели задач, то ShortCut будут срабатывать когда окно отображено и в фокусе.
В других случаях смотрите в сторону регистрации горячих системных клавиш ( RegisterHotKey ) или глобального хука на клавиатуру ( SetWindowsHookEx )
s.Creator вне форума Ответить с цитированием
Старый 05.01.2010, 15:40   #17
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от s.Creator Посмотреть сообщение
( Могу немного ошибаться, последнии разы иконки в трее делал для сервисов с полгода назад. )

Самой иконке в трее передается только несколько событий мышки.
( при более низкоуровневом создаии ее можно указать какие мы будем обрабатывать и чем )

Если использовать стандартную инициализацию программы ( как в моем примере dfm ) с последующим сокрытием с Панели задач, то ShortCut будут срабатывать когда окно отображено и в фокусе.
В других случаях смотрите в сторону регистрации горячих системных клавиш ( RegisterHotKey ) или глобального хука на клавиатуру ( SetWindowsHookEx )
А что, больше никак нельзя? Разве горячие клавиши, это не сообщения?
Объясните, почему Action не исполняется, когда окно в фокусе и нажимается сочетание клавишь, указанное в shortCut (этого action-а)
Altera вне форума Ответить с цитированием
Старый 05.01.2010, 15:58   #18
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
А что, больше никак нельзя? Разве горячие клавиши, это не сообщения?
Объясните, почему Action не исполняется, когда окно в фокусе и нажимается сочетание клавишь, указанное в shortCut (этого action-а)
Немного пощелкал ваш и мой вариант.
В моем варианте когда окно в фокусе shortCut работают.
Почему в вашем не работают, могу только предположить.
Как Вы сами писали Application.run - это не три строчки. И при задании главного окна идет не только присвоение свойства Application.
Там и хендл для Application создается и регистрируются WndProc ...
Я в подробности не вникал, просто делал по стандарту.
Могу предложить, как альтернативу, создавать пустое главное окно и никогда его не показывать. На нем заодно можно поместить меню для иконки.
s.Creator вне форума Ответить с цитированием
Старый 05.01.2010, 16:14   #19
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от s.Creator Посмотреть сообщение
Немного пощелкал ваш и мой вариант.
В моем варианте когда окно в фокусе shortCut работают.
Почему в вашем не работают, могу только предположить.
Как Вы сами писали Application.run - это не три строчки. И при задании главного окна идет не только присвоение свойства Application.
Там и хендл для Application создается и регистрируются WndProc ...
Я в подробности не вникал, просто делал по стандарту.
Могу предложить, как альтернативу, создавать пустое главное окно и никогда его не показывать. На нем заодно можно поместить меню для иконки.
Меню для иконки у меня уже есть где поместить. (dataModule)
Да там вообще даже TAB не работает. что-бы фокус менять.
А если вызывать не
Код:
while getMessage(appMes, 0, 0, 0) do
  begin
     translateMessage(appMes);
     dispatchMessage(appMes);
  end;
а Application.processMessages (в тех же условиях) то всё работает. Только как я уже говорил, проц сильно загружается.
Создавать одну форму СПЕЦИАЛЬНО для Application-а, а вам не кажется, что это идиотский способ? Почему это нельзя просто как-то реализовать. Вообще как объект Application связан с программой? Он обрабатывает сообщения? А ещё лезет там где не надо.
Даже свойство Application.MainFormOnTaskBar := true; А не applicationOnTaskBar...

Последний раз редактировалось Altera; 05.01.2010 в 16:27.
Altera вне форума Ответить с цитированием
Старый 05.01.2010, 22:06   #20
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Да там вообще даже TAB не работает. что-бы фокус менять.
Там это где ? Вот тут someProgramm2.zip они работают ( во всяком случае у меня - Delphi 2010, windows XP ) /
s.Creator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с потоком в Delphi 2009. S_Yevgeniy Общие вопросы Delphi 2 02.01.2010 13:16
неубиваемый вирус! все антивирусы не находят его! кто знает как его убрать? Yury111 Безопасность, Шифрование 12 05.06.2009 11:19
Нажать на кнопку не загружая страницу Des Работа с сетью в Delphi 1 30.04.2009 16:54
Проблема с потоком Araver Общие вопросы Delphi 4 16.10.2007 04:30