Delphi, возможный сделать форму модальной к определенной родительской форме только?

Вы также можете использовать DataView RowFilter :

  // Create a DataView
  DataView dv = new DataView(dt);
  dv.RowFilter = " (Date >= #" +
  Dateyouwanttouse +
  "# And Date <= #" +
  DateTime.Now +
  "# ) ";

Просто сделайте это:

foreach (DataRowView rowView in dv)
{
    DataRow row = rowView.Row;
    // Do something //
}

11
задан Cœur 14 June 2018 в 11:18
поделиться

4 ответа

Так же, как в стороне (хотя это была бы очень большая работа), другой подход к этой проблеме является путем, которым пошел хром Google, где каждая "вкладка" является отдельным процессом, но появитесь пользователю как единственное интегрированное приложение.

Даже при том, что этот подход достиг бы того, что Вы хотели, я должен буду согласиться с комментарием, выше которого это повредило бы пользователя предположения и ожидания о модальном поведении.

0
ответ дан 3 December 2019 в 10:45
поделиться

Это возможно при создании каждой немодальной формы в ее собственном потоке. Каждая модальная форма затем заблокирует поток, которому она принадлежит.

Править: Это должно быть возможно, даже при том, что vcl не ориентирован на многопотоковое исполнение. Смотрите на объяснение Alexeys того, как это может быть сделано:

Таким образом, если у Вас есть ряд форм, которые должны жить в отдельном потоке, затем размещают их в один dll, компилируют его без пакетов и использования! Это будет работать, и это будет ориентировано на многопотоковое исполнение.

-1
ответ дан 3 December 2019 в 10:45
поделиться

Разве Вы не могли достигнуть того же эффекта, препятствуя тому, чтобы форма "Яблок" приняла фокус, в то время как его дочерняя форма открыта?

0
ответ дан 3 December 2019 в 10:45
поделиться

Если Вы взглянули на исходный код TCustomForm. ShowModal () Вы будете видеть, что VCL не использует Windows API call для показа модальных диалоговых окон, но что он действительно вместо этого отключает все другие формы в приложении, в то время как модальную форму показывают. Можно, конечно, попробовать тот же самый, просто Шоу () модальное формой диалоговое окно, затем отключить родителя, затем повторно включить его после того, как модальное формой диалоговое окно было закрыто. Должно быть центральное место, где Вы отслеживаете модальные формой диалоговые окна, формы, которые должны быть повторно включены и так далее. Необходимо однако протестировать полностью, делает ли код действительно, что Вы хотите, чтобы он сделал, переключившись назад и вперед между приложениями, при уменьшении приложения и так далее.

Сказав, что - я не думаю что это хорошая идея вообще. Это повреждает все предположения, которые пользователь Windows делает о поведении приложений. В отличие от этого, в Mac OS X нет никакого различия в Windows между модальными приложением и модальными формой диалоговыми окнами, и необходимо придерживаться поведения, согласовывающегося с платформой Ваш, программируют против.

Существует по всей вероятности лучший способ структурировать Ваш UI. Взгляните на соответствующую страницу для диалоговых окон в "Инструкциях по Взаимодействию Опыта пользователя Windows". Модальных диалоговых окон лучше избегают как можно больше, связанные инструкции показывают лучшие альтернативы для многих вариантов использования. При ограничении использования модальных диалоговых окон возможно, Вам больше не нужны модальные формой диалоговые окна.

6
ответ дан 3 December 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: