Мой DELPHI – Программирование

Всё для программера

Можно ли рисовать на рамке формы?

Вопрос:
Можно ли рисовать на рамке формы?
Ответ:
Обрабатывайте событие WM_NCPAINT. В примере рамка обводится красной линией
толщиной в 1 пиксел. Прочитать остальную часть записи »

Как опеделить состояние списка ComboBox, выпал/скрыт?

Вопрос:
Как опеделить состояние списка ComboBox, выпал/скрыт?
Ответ:
Пошлите ComboBox сообщение CB_GETDROPPEDSTATE.

Пример:

if SendMessage(ComboBox1.Handle, CB_GETDROPPEDSTATE,0,0) = 1 the
	begin {список ComboBox выпал}

	end;

При использовании BitBtn Caption(текст) и картинка(bitmap) из файла не видны

Вопрос:

При использовании BitBtn Caption(текст) и картинка(bitmap) из файла не видны
одновременно. Почему?

Ответ:

Это может происходить
если картинка слишком велика. Класс TBitBtn сначала рисует картинку, а затем
выводит текст над, под, слева или справа от картинки (в завивимости от свойства
Layout). Если размер картинки такой же как у всей кнопки для вывода текста просто
не остается места. Если Вам нужно получить кнопку такого же размера как Ваша
картинка и видеть при этом надпись на кнопке Вам придется выводить текст надписи
непосредственно на канву картинки. Прочитать остальную часть записи »

Как скрыть форму при старте приложения?

Как скрыть форму при старте приложения?

К сожалению при создании окна приложения ни в одном из первых событий (OnCreate,
OnShow, OnActivate) нет доступа к свойству Visible. Использование функции
ShowWindow с параметром SW_HIDE в OnActivate-событии решает проблему (но
при этом не избежать кратковременного мерцания окна перед “исчезновением”):

procedure TForm1.OnActivate(Sender: TObject);
begin
  ShowWindow(Handle, SW_HIDE);
end;

чтобы сделать окно опять видимым необходимо вызвать ту же функцию, но уже
с другим параметром:

  ShowWindow(Handle, SW_SHOW); Прочитать остальную часть записи »

Как выяснить положение курсора в МЕМО?

Как выяснить положение курсора в МЕМО?

Необходимо вызвать дважды API-функцию “SendMessage”:


var
  xChr,
  xRow,
  xCol: LongInt;
...
 

xRow := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);
xChr := SendMessage(Memo1.Handle, EM_LINEINDEX, Zeile, 0);
xCol := Memo1.SelStart - xChr + 1;