Выбор элементов из другого forms listview при открытом модальном окне

#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 часов борьбы все заработало — это было родительское свойство, которое не позволяло этого делать.