#delphi #user-interface #forms #delphi-xe
#delphi #пользовательский интерфейс #формы #delphi-xe
Вопрос:
У меня проблема, и это немного сложно объяснить, но я пытаюсь.
У меня есть главное окно приложения. И в этом главном окне у меня есть всплывающее диалоговое окно (другая форма, содержащая listview) с клиентами. Если я набираю в текстовом поле главного окна, оно появляется и автоматически заполняет данные в зависимости от того, что я ввожу. И я могу выбирать элементы оттуда, щелкая мышью по элементу или нажимая клавиши со стрелкой и вводом.
Теперь я добавил новое модальное диалоговое окно в главное окно и хочу получить доступ к этому всплывающему диалогу, как я делаю в главном окне, когда открыто новое модальное диалоговое окно. Если я введу в текстовое поле нового модального диалога, оно снова появится и заполнит данные в зависимости от того, что я ввожу.
Я добился того, что он появляется и заполняет данные, также я могу выбирать элементы, нажимая клавиши со стрелкой и ввод.
Проблема в том, что я не могу щелкнуть по элементу, как в основной форме, потому что модальное окно не позволяет мне этого сделать.
Есть ли способ щелкнуть элемент в этом всплывающем диалоговом окне, пока открыто другое модальное диалоговое окно? Хотите, чтобы обе формы были активны в одно и то же время?
Надеюсь, вы поняли мой вопрос.
С уважением, evilone
Ответ №1:
Используйте функцию EnableWindow. Вы можете вызвать это в обработчике событий OnShow, например:
// show Form3 and call modal dialog Form2
procedure TForm1.Button1Click(Sender: TObject);
begin
Form3.Show;
Form2.ShowModal;
end;
// make Form3 controls available while Form2 is modal:
procedure TForm2.FormShow(Sender: TObject);
begin
EnableWindow(Form3.Handle, True);
end;
Комментарии:
1. @Serg Должен ли я добавить этот код в модальное диалоговое окно и указать на дескриптор всплывающего окна?
2. Похоже, это не работает. Потому что у меня есть третье окно, из которого я хочу быть активным с Form2, открытым по вашему примеру. У меня есть Form1 — это главное окно, Form2 — это модальное окно. И я получаю доступ к этому третьему окну из Form1 и Form2. В Form1 все работает, но в Form2 я не могу щелкнуть по нему, потому что Form2 является модальным.
3. Все еще не могу заставить это работать. Возможно, это как-то связано с тем, что я устанавливаю эту Form1 в качестве родительской Form3. Если я включу EnableWindow (Form1. Обработайте, True) тогда я смогу получить к нему доступ, в противном случае нет.
4. Спасибо, после 3 часов борьбы все заработало — это было родительское свойство, которое не позволяло этого делать.