Тэги ‘implementation’

Вопрос:
Как сообщить всем формам моего приложения (в том числе и не видимым в данный момент)
об изминении каких-то глобальных значений?
Ответ:
Один из способов - создать пользовательское сообщение и использовать метод preform
чтобы разослать его всем формам из массива Screen.Forms. Read the rest of this entry »
Вопрос:
Как среагировать на минимизацию-максимизацию формы перед тем как произойдет изменение
размера формы?
Ответ:
В примере перехватывается сообщение WM_SYSCOMMAND. Если это сообщение говорит о
минимизации или максимизации формы - пищит динамик. Read the rest of this entry »
Вопрос:
Как сделать прямоугольник для выделения части картинки для редактирования?

Ответ:

Самый простой способ -
воспользоваться функцией Windows API DrawFocusRect. Функция DrawFocusRect использует
операцию XOR при рисовании – таким образом вывод прямоугольника дважды с одними
и теми же координатами стирает прямоугольник, и прямоугольник всегда будет виден,
на фоне какого бы цвета он не выводился. Read the rest of this entry »

Вопрос:
Как перехватить события в неклиентской области формы, в заголовке окна, например?
Ответ:
Создайте обработчик одного из сообщений WM_NC (non client - не клиентских) (посмотрите
WM_NC в Windows API help). Пример показывает как перехватить вижение мыши во всей
неклиенстской области окна (рамка и заголовок). Read the rest of this entry »
Вопрос:
  Как перемещать компонент мышкой во время работы программы "runtime"?

Ответ:

Перехватить событие OnMouseDown,
запомнить x и y координты курсора мыши. Отслеживать движение мыши по событию
OnMouseMove и перемещать компонент вслед за курсором мыши до тех пор пока не
произойдет событие OnMouseUp. В примере показано перемещение компонента TButton.
Перемещение начинается, когда пользователь “берет” TButton мышью, удерживая
нажатой клавишу “Сontrol”. Read the rest of this entry »

Вопрос:
Можно ли рисовать на рамке формы?
Ответ:
Обрабатывайте событие WM_NCPAINT. В примере рамка обводится красной линией
толщиной в 1 пиксел. Read the rest of this entry »
Вопрос:

События KeyPress и KeyDown не вызываются для клавиши Tab – как определить, что она была нажата?

Ответ:

На уровне формы клавиша
tab обычно обрабатывается Windows. В примере создается обработчик события CM_Dialog
для перехвата Dialog keys. Read the rest of this entry »

Вопрос:
Как создать отдельную подсказку (hint) для каждой ячейки StringGrid?

Ответ:

В приведенном примере
отслеживается движение курсора мыши – при перемещении между ячейками StringGrid’а
- появляется окно подсказки(hint), показываеющее номер текущей строки и колонки. Read the rest of this entry »

Вопрос:
Как узнать о нажатии "non-menu" клавиши в момент когда меню показано?
Ответ:
Создайте обработчик сообщения WM_MENUCHAR. Read the rest of this entry »
Вопрос:
Как показать подсказки "hints" для элементов меню?
Ответ:

В примере создается обработчик события Application.Hint - подсказки меню изображаются
на status panel. Read the rest of this entry »
Page 1 of 212»