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

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

При использовании модулей доступа к BDE

Вопрос:

При использовании модулей доступа к BDE (DbiTypes, DbiProcs, DbiErrs), любая попытка вызвать процедуру abort выдает ошибку при компиляции при вызове метода abort “Statement expected,
but expression of type ‘Integer’ found”. Я пытался найти DbiTypes.pas, DbiProcs.pas
и DbiErrs.pas чтобы разобраться но не нашел этих файлов. Где расположены эти
файлы и как обойти ошибку?

Ответ:

Модули DbiTypes, DbiProcs,
DbiErrs это псевдонимы модуля “BDE”, обьявлены в Projects->Options->Directories/Conditionals->Unit
Aliases. Исходник модуля DBE находится в каталоге “doc” и называется “BDE.INT”.
В этом файле обьявленна константа ABORT со значением -2. Так как Вы хотите использовать
процедуру Abort(), которая обьявлена в модуле SysUtils, Вам нужно добавить префикс
SysUtils перед вызовом процедуры Abort.

Пример:
SysUtils.Abort;

Можно ли изменить вид текстового курсора (каретки) edit’а или другого элемента

Вопрос:

Можно ли изменить вид текстового курсора (каретки) edit'а или другого элемента
управления Windows?

Ответ:

Можно! В примере показано
как создать два цветных “bitmap’а”: “улыбчивый” и “хмурый” и присвоить их курсору
edit’а. Для этого нужно перехватить оконную процедуру edit’а. Чтобы сделать
это заменим адрес оконной процедуры Edit’а нашим собственным, а старую оконную
процедуру будем вызывать по необходимости. Пример показывает “улыбчивый” курсор
при наборе текста и “хмурый” при забое клавишей backspace. Прочитать остальную часть записи »

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

Вопрос:

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

Ответ:

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

При обработке события DrawCell компонента DrawGrid

Вопрос:

При обработке события DrawCell компонента DrawGrid я пишу Font.Color := clRed; и получаю бесконечный
цикл мерцаний. Почему?

Ответ:
Правильно укажите границы используемого канваса.
Пример:

If (Row = 0) then
	begin
		DrawGrid1.Canvas.Font.Color := clRed;
		DrawGrid1.Canvas.TextOut(Rect.Left,Rect.Top, IntToStr(Col));
	end;

Как перехватить нажатия функциональных клавиш и стрелок?

Вопрос:
Как перехватить нажатия функциональных клавиш и стрелок?

Ответ:

Проверяйте значение переменной
key на равенство VK_RIGHT, VK_LEFT, VK_F1 и т.д. на событии KeyDown формы.

Пример:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
	if Key = VK_RIGHT then
		Form1.Caption := 'Right';
	if Key = VK_F1 then
		Form1.Caption := 'F1';
end;