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

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

Как сохранить обьект TFont в реестре/ini/файле/таблице базы данных?

Вопрос:
Как сохранить обьект TFont в реестре/ini/файле/таблице базы данных?

Ответ:

Нужно сохранять атрибуты
шрифта (имя, размер и т.п.) а не сам обьект TFont. После считывания этой информации
следует проверить существует ли такой шрифт, прежде чем его использовать. Чтобы
не показаться голословным дополню ответ Borland’а своим примером сохранения/чтения
шрифта в/из реестра Прочитать остальную часть записи »

Как ограничить длинну текста, вводимого в TEdit

Вопрос:
Как ограничить длинну текста, вводимого в TEdit, так чтобы ширина текста не превышала
ширину TEdit'а?

Ответ:

В примере приведено два
способа ограничить длинну текста в TEdit так чтобы она не превышала ширину клиентской
области окна TEdit’а и не появлялась прокрутка текста. Первый способ устанавливает
свойство TEdit’а MaxLength равным числу букв “W”, которые поместятся в TEdit.
“W” выбрана потому, что является, наверное, самой широкой буквой в любом шрифте.
Этот метод сносно работает для шрифтов с фиксированной шириной букв, но для
шрифтов с переменной шириной букв вряд ли сгодится. Второй способ перхватывает
событие KeyPress TEdit’а и измеряет ширину уже введенного текста и ширину нового
символа. Если ширина больше чем клиентская область TEdit’а новый символ отбрасывается
и вызывается MessageBeep. Прочитать остальную часть записи »

Вопрос:
Как добится того чтобы TMemo и TEdit имели работали не только в режиме вставки символов,
но и в режиме замены?

Ответ:

Элементы управления Windows
TEdit и TMemo не имеют режима замены. Однако этот режим можно эмулировать установив
свойство SelLength edit’а или memo в 1 при обработке события KeyPress. Это заставит
его перезаписывать символ в текущей позиции курсора. В примере этот способ используется
для TMemo. Режим вставка/замена переключается клавишей “Insert”. Прочитать остальную часть записи »

Как заставить Delphi выполнять еще более строгую проверка типов?

Вопрос:

Как заставить Delphi выполнять еще более строгую проверка типов? Напрмер – я создаю пользовательский тип, унаследованный от double и могу передавать его любым функциям, принимающим параметр типа double.
Как заставить компилятор проводить более строгую проверку типов и выдавать предупреждение
в таких случаях?

Ответ:
См. ответ.   Прочитать остальную часть записи »

Как получить строку сообщения об ошибке Windows код которой получен функцией GetLastError?

Вопрос:
Как получить строку сообщения об ошибке Windows код которой получен функцией GetLastError?
Ответ:
Функция RTL SysErrorMessage(GetLastError).

Пример:

procedure TForm1.Button1Click(Sender: TObject);
begin
	{Cause a Windows system error message to be logged}
	ShowMessage(IntToStr(lStrLen(nil)));
	ShowMessage(SysErrorMessage(GetLastError));
end;