Когда форма Delphi объявляется и создается внутри библиотеки DLL и библиотеки DLL, загруженной хост-приложением, клавиши со стрелками и табуляцией не передаются через границу хоста / DLL. Это означает, что блоки TEdit и элементы управления TMemo, которые могут использоваться в форме, не будут реагировать на эти нажатия клавиш. Есть ли способ гарантировать, что эти нажатия клавиш передаются из основной формы приложения в форму в dll? Обратите внимание, что может быть несколько DLL, каждая из которых содержит форму. KeyPreview не имеет значения.
Передача клавиш со стрелками и табуляцией в форму Delphi в DLL
27.09.2011
Ответы:
1
Формы в DLL лишены этой поддержки, а также поддержки ярлыков (действий) меню. Вы можете написать код для имитации этого поведения.
////////////////////////////////////////////////////////////////
// If you display a form from inside a DLL/COM server, you will miss
// the automatic navigation between the controls with the "TAB" key.
// The "KeyPreview" property of the form has to be set to "True".
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
bShift: Boolean;
begin
// Check for tab key and switch focus to next or previous control.
// Handle this in the KeyPress event, to avoid a messagebeep.
if (Ord(Key) = VK_TAB) then
begin
bShift := Hi(GetKeyState(VK_SHIFT)) <> 0;
SelectNext(ActiveControl, not(bShift), True);
Key := #0; // mark as handled
end;
end;
27.09.2011
2
Глядя на этот вопрос и на ваш предыдущий, я бы сказал, что ваша основная проблема в том, что вы не используете пакеты времени выполнения.
Если бы вы использовали пакеты времени выполнения, у вас был бы единственный экземпляр VCL, и границы модуля не имели бы значения.
Без пакетов времени выполнения у вас есть отдельные экземпляры VCL. Для правильной работы навигации по форме VCL необходимо, чтобы каждый элемент управления распознавался как элемент управления VCL. Это невозможно, если у вас несколько экземпляров VCL.
27.09.2011
Новые материалы
Как ИИ меняет сельское хозяйство
Прочтите Статью Кэтлин Уолч в Forbes о том, как ИИ меняет сельское хозяйство .
Сельское хозяйство и земледелие - одна из древнейших и важнейших профессий в мире. Человечество прошло долгий..
Slack: проектирование современных интерфейсов человека и ИИ
Когда Стюарт Баттерфилд выделил Slack из быстро исчезающей онлайн-игры Tiny Speck, его перспективы были в лучшем случае неопределенными. Существовал очевидный спрос на средства связи на рабочем..
HTTP1.1 против HTTP2
Http расшифровывается как HyperText Transfer Protocol, это в основном метод, который компьютеры и серверы используют для запроса и отправки информации. HTTP1.1 - это более старая версия Http, а..
Радость вырезания
Радость фрагментов
По какой-то причине, когда я начал программировать в колледже, я активно сопротивлялся целому ряду земных благ, которые сделали бы мою жизнь чуточку удобнее. Я в основном..
Создайте стройный слайдер с нуля без каких-либо внешних инструментов
Слишком долго я полагался на сторонние плагины и инструменты для простых слайдеров. Пока в один прекрасный день в моей крошечной голове не загорелась лампочка, которую я могу сделать..
Буферы протоколов, часть 01: соглашения об именах и файловая организация
Если вам нравится читать статьи на Medium и вы заинтересованы в том, чтобы стать участником, я буду рад поделиться с вами своей реферальной ссылкой!
Наши партнеры
Globex SCI — уникальная система, которая хранит и позволяет использовать большие базы данных, опубликованные в блокчейне. Используя алгоритмы глубокого обучения и ИИ, мы можем прогнозировать..