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

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

Функция keybd_event() принимает значения до 244

Вопрос:
Функция keybd_event() принимает значения до 244 - как мне отправить нажатие
клавиши с кодом #255 в элемент управления Windows?
Ответ:
Это может понадобится для иностранных языков или для специальных символов. (например,
в русских шрифтах символ с кодом #255 - я прописное). Приведенный в примере метод,
не стоит использовать в случае если символ может быть передан обычным способом
(функцией keybd_event()). Прочитать остальную часть записи »

Как программно перевести DBgrid

Вопрос:
Как программно перевести DBgrid в режим редактирования и установить курсор в
окошке редактирования в требуемую позицию?

Ответ:

Переведите таблицу в режим
редактирования, затем получите дескриптор (handle) окна редактирования и перешлите
ей сообщение EM_SETSEL. В качестве параметров вы должны переслать начальную
позицию курсора, и конечную позицию, определяющую конец выделения текста цветом.
В приведенном примере курсор помещается во вторую позицию, текст внутри ячейки
не выделяется. Прочитать остальную часть записи »

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

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

Пример:

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

	end;

Как сделать отступ в Memo?

Как сделать отступ в Memo?

С помощью API-функции SendMessage можно задать поля в Memo-компоненте. Если
необходимо, например, сделать отступ в 20 пикселей слева то можно это сделать
следующим образом:


var Rect: TRect;
begin
  SendMessage( Memo1.Handle, EM_GETRECT, 0, LongInt(@Rect));
  Rect.Left:= 20;
  SendMessage(Memo1.Handle, EM_SETRECT, 0, LongInt(@Rect));
  Memo1.Refresh;
end;

Поля в Memo-компоненте

Поля в Memo-компоненте

С помощью API-функции SendMessage можно задать поля в Memo-компоненте.
Если необходимо, например, сделать отступ в 20 пикселей слева то можно
это сделать следующим образом:
 

var Rect: TRect;
begin
  SendMessage( Memo1.Handle, EM_GETRECT, 0, LongInt(@Rect));
  Rect.Left:= 20;
  SendMessage(Memo1.Handle, EM_SETRECT, 0, LongInt(@Rect));
  Memo1.Refresh;
end;