Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: поведение немодальных окон как в 1С  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67459
Блог
bzums
Как интересно будет вести себя Showmodal?

Никто не мешает попробовать. Ну либо посмотреть в исходник Showmodal-а, и исходя из этого предсказать.

P.S. Подозреваю - плохо. Думаю, он заблокирует все остальные окна, включая главное, и в результате интерфейс намертво залипнет, так как модальное окно станет недоступным из-за недоступности родителя. Впрочем, можно поставить на главном окне примерно такой обработчик:

type
  TFormBaseDebug = class(TDCFBaseForm)
    ...
    { Чихаем на попытки всяких ShowModal-ов нас заблокировать }
    procedure WmEnable(var Msg: TWMEnable); message WM_ENABLE;
    ...
  end;

{ Чихаем на попытки всяких ShowModal-ов нас заблокировать }
procedure TFormBaseDebug.WmEnable(var Msg: TWMEnable);
begin
  inherited;
  if not Msg.Enabled then EnableWindow(Self.Handle, true);
end;

и всё станет нормально, я так думаю.

Сообщение было отредактировано: 5 ноя 21, 18:29
5 ноя 21, 18:25    [22392259]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
bzums
Member

Откуда:
Сообщений: 191
Спасибо.
А потенциально , если возьму этот вариант на вооружение, с чем у меня могут быть проблемы?
Требования только два - главная форма и окна в ней все дочерние, но не МДИ.
Формы могут быть как те, что только один экземпляр ( справочники), так и допускающие многие экземпляры ( например по каждому виду документа ; расходная ведомость, приходная ).


Большое спасибо.
5 ноя 21, 20:23    [22392282]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
bzums
Member

Откуда:
Сообщений: 191
Кстати, пришла в голову мысль прятать заголовок формы при разворачивании на весь экран через bsNone. Это можно так реализовать?
5 ноя 21, 20:28    [22392284]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3954
DHDD,

О как :) Не знал что оно так умеет.
автор
Честно говоря, никогда не понимал полезности этих операций, но вот уж что делается за пять минут, так это как раз эти убер-фичи.

Так то всё можно сделать, вопросов нет. Но если оно так и так умеет, то зачем возится. А с меню, как уже сказали VCL разбирается.

Сообщение было отредактировано: 6 ноя 21, 00:43
6 ноя 21, 00:43    [22392396]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67459
Блог
makhaon
Но если оно так и так умеет, то зачем возится

Затем, что реализация MDI в дельфе имеет кучу врождённых недостатков, и пользоваться ей - удовольствие для свежепрочитавших "освой за 21 день". Потом хочется более вменяемого поведения.
6 ноя 21, 01:29    [22392410]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
bzums
Member

Откуда:
Сообщений: 191
softwarer

Затем, что реализация MDI в дельфе имеет кучу врождённых недостатков
Хочется более вменяемого поведения


Напишите мне, пожалуйста, про эти недостатки.
О чём идёт разговор? Очень надо.
Спасибо большое.
6 ноя 21, 16:57    [22392549]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3954
bzums,

то ли мне повезло, то ли я на их пока не попадал. главный и единственный из известных - что MDI форма может существовать только одна. хотя на уровне операционки этого запрета не существует.
7 ноя 21, 20:41    [22392870]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67459
Блог
bzums
Напишите мне, пожалуйста, про эти недостатки. О чём идёт разговор? Очень надо.

Я уже плохо помню, потому что отказался от MDI где-то с 99-го года. Первый и наиболее очевидный - уже упоминавшийся идиотизм, согласно которому mdi-ное окно всегда и сразу видимо. В результате приходится ставить ему FormStyle = fsNormal и делать fsMDIChild там, где хочешь, чтобы окно стало видимым. Насколько я помню, mdi-ное окно не могло иметь собственного main menu, надо было имитировать его через тулбары. Насколько я помню, были проблемы с вызовом клавиатурных action-ов - возможно, в случае, если открыты несколько однотипных окон. Итд.
7 ноя 21, 23:37    [22392919]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 58408
есть у меня программка на д7+мди
работает уже лет 18, с декабря 2003-его. Раз в год пересобираю, добавляю какую-нить фигню
юзеры не нудят
но одна такая. Была вторая, со временем умерла
8 ноя 21, 09:09    [22392964]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
bzums
Member

Откуда:
Сообщений: 191
Провел тест
В принципе то что нужно.
Одно но - при сворачивании вниз и изменении размеров главной формы в большую сторону, эти свернутые формы висят на том же месте (куда были первоначально свернуты).
Стандартного варианта, например, закладок или ленты какой-то внизу не нашел.
Некрасиво.

Спасибо.
8 ноя 21, 13:34    [22393099]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
bzums
Member

Откуда:
Сообщений: 191
Подскажите, как сделать, чтобы главная форма сама отрисовывала скроллбары, если дочерняя выходит за ее границы.
Если у дочерней формы родитель - главная форма, то все нормально.
У меня же на клавной форме еще панель / лист / сроллбокс (пока не выбрал), если я дочернюю двигаю за пределы, ничего не происходит до тех пор, пока я у родителя вручную не поменяю размеры.

СПасибо.

К сообщению приложен файл. Размер - 149Kb
9 ноя 21, 16:25    [22393723]     Ответить | Цитировать Сообщить модератору
 Re: поведение немодальных окон как в 1С  [new]
bzums
Member

Откуда:
Сообщений: 191
bzums,

Хотя никто мне и не дал совета, я так и не пробовал решить эту проблему.

Возник вопрос, который можно наверное в этой же ветке и опубликовать.

А для МДИ формы нельзя провернуть такой фокус - кинуть например панель на задний план? Или любой другой контрол. Получается, форма перерисовывается принудительно и всегда то, что должно какбы по задумке на фоне, оно как раз сверху. То есть дочерние формы получаются под панелью.

Это как так?

Хочу на главной форме, например, кнопки ьыстрог доступа или виджет...

Спасибо.
18 ноя 21, 21:43    [22397701]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить