Когда форма 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
Новые материалы
Изучите Vue перед React. Вот почему
Сегодняшняя сеть представляет собой запутанный беспорядок из разных языков, библиотек и фреймворков, и начинающие веб-разработчики часто не могут понять, что изучать в первую очередь.
Что вы..
Гл.31 — Помощь слабослышащим с помощью возможностей машинного обучения Apple Watch.
1 500 000 000 – количество людей с потерей слуха в мире. Это почти 20% населения Земли! (источник: who.int )
Недавно я экспериментировал с Apple Sound Classification API, и результаты на..
Машинное обучение без кода / Глубокое обучение Каждый специалист по обработке и анализу данных должен знать
Akkio, Очевидно.ай, DataRobot, Левити, Clarifai, Teachable Machines, Lobe, Pimer, DynaBench, APAflow
Teachable Machine- https://teachablemachine.withgoogle.com/ Vertex AI..
Код, который работает вместе, остается вместе
Первоначально это было опубликовано в tiagojdf .
Когда я только начинал как младший программист, я всегда терялся, глядя на внутренний код.
Я предположил, что отчасти это было из-за того,..
Эта модель Google сочетает в себе рассуждение и действие в рамках одной языковой модели.
ReAct предоставляет архитектуру, которая инициирует действия на основе путей рассуждений языка.
Недавно я запустил образовательный информационный бюллетень, посвященный ИИ, у которого уже..
Сортировка структур JSON по нескольким полям в JavaScript
Array.sort() не для слабонервных. Особенно, когда речь идет о сортировке сложных структур данных.
Большинство руководств по JavaScript дают только краткое введение в Array.sort() . Обычно..
Иллюзии разработки программного обеспечения
Многие вещи не то, чем кажутся
Реальность — это всего лишь иллюзия, хотя и очень настойчивая. Альберт Эйнштейн
Разработка программного обеспечения никогда не бывает такой, какой кажется...