Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как вывести форму поверх главной без использования ShowModal?   Найти похожие ветки 

 
Дмитрий   (2004-04-23 12:44) [0]

Проблема заключается в следующем... Программа делает расчёт... Во время которого требуется выводить промежуточные результаты в отдельную форму...
То есть
...
//вызов из MainForm по событию
Task.Calculate;
...

В методе Calculate вызывается ProcessForm.ShowModal и по идее дальше расчёты должны продолжаться, что не случается по известным причинам... Но это прелюдия...

Обхожу след. образом...

...
//пользователь никоим образом не должен во время расчёта //добраться до главной формы
MainForm.Enabled := False;
Task.Calculate;
MainForm.Enabled := True;
...
А при расчёте вызываю ProcessForm.Show...
Однако одно неудобство... После MainForm.Enabled := True; главная форма сворачивается... Как этого избежать?


 
Дмитрий   (2004-04-23 12:44) [0]

Проблема заключается в следующем... Программа делает расчёт... Во время которого требуется выводить промежуточные результаты в отдельную форму...
То есть
...
//вызов из MainForm по событию
Task.Calculate;
...

В методе Calculate вызывается ProcessForm.ShowModal и по идее дальше расчёты должны продолжаться, что не случается по известным причинам... Но это прелюдия...

Обхожу след. образом...

...
//пользователь никоим образом не должен во время расчёта //добраться до главной формы
MainForm.Enabled := False;
Task.Calculate;
MainForm.Enabled := True;
...
А при расчёте вызываю ProcessForm.Show...
Однако одно неудобство... После MainForm.Enabled := True; главная форма сворачивается... Как этого избежать?


 
Курдль ©   (2004-04-23 12:57) [1]

Если у Вас "висит" модальное окно над главным - не парьте мозги - юзер до последнего и так не доберется.


 
Курдль ©   (2004-04-23 12:57) [1]

Если у Вас "висит" модальное окно над главным - не парьте мозги - юзер до последнего и так не доберется.


 
Дмитрий   (2004-04-23 13:08) [2]

Ты не догнал, что модальное окно нельзя использовать... Потому что, когда оно вызывается по ShowModal всё управление передаётся ему... А мне надо туда только инфу вывести и продолжить расчёт... А закрывать его мне незя, потому что данные должны апдейтиться...


 
Дмитрий   (2004-04-23 13:08) [2]

Ты не догнал, что модальное окно нельзя использовать... Потому что, когда оно вызывается по ShowModal всё управление передаётся ему... А мне надо туда только инфу вывести и продолжить расчёт... А закрывать его мне незя, потому что данные должны апдейтиться...


 
Гаврила   (2004-04-23 13:09) [3]

Передавай в модальное окно CallBack


 
Гаврила   (2004-04-23 13:09) [3]

Передавай в модальное окно CallBack


 
Дмитрий   (2004-04-23 13:16) [4]

2Гаврила: А это как, простите?


 
Дмитрий   (2004-04-23 13:16) [4]

2Гаврила: А это как, простите?


 
Игорь Шевченко ©   (2004-04-23 13:53) [5]


> Во время которого требуется выводить промежуточные результаты
> в отдельную форму...


Отдельная форма со стилем fsStayOnTop ?


 
Игорь Шевченко ©   (2004-04-23 13:53) [5]


> Во время которого требуется выводить промежуточные результаты
> в отдельную форму...


Отдельная форма со стилем fsStayOnTop ?


 
Гаврила   (2004-04-23 14:07) [6]

fsStayOnTop плох тем, что остается доступ к главной форме, а его по условию задачи, быть не должно.
Если только не обрабатывать сообщения в процессе выполнения операции (кстати, тоже вариант)

>> А это как, простите?

Ну указатель на процедуру или метод передаем в модальную форму, сама процедура реализована в основной форме ,а модальная форма ее просто вызывает
Это если эта модальная форма общая на разные случаи таких длительных процедур. А если она только для этого случая - так просто перенеси процедуру в модальную форму и все )


 
Гаврила   (2004-04-23 14:07) [6]

fsStayOnTop плох тем, что остается доступ к главной форме, а его по условию задачи, быть не должно.
Если только не обрабатывать сообщения в процессе выполнения операции (кстати, тоже вариант)

>> А это как, простите?

Ну указатель на процедуру или метод передаем в модальную форму, сама процедура реализована в основной форме ,а модальная форма ее просто вызывает
Это если эта модальная форма общая на разные случаи таких длительных процедур. А если она только для этого случая - так просто перенеси процедуру в модальную форму и все )


 
Игорь Шевченко ©   (2004-04-23 14:10) [7]


> fsStayOnTop плох тем, что остается доступ к главной форме,
> а его по условию задачи, быть не должно


Расчет в отдельном потоке с выводами результатов ?


 
Игорь Шевченко ©   (2004-04-23 14:10) [7]


> fsStayOnTop плох тем, что остается доступ к главной форме,
> а его по условию задачи, быть не должно


Расчет в отдельном потоке с выводами результатов ?


 
clickmaker ©   (2004-04-23 14:20) [8]


> Однако одно неудобство... После MainForm.Enabled := True;
> главная форма сворачивается

Попробуй Application.Restore делать. Хотя, я такого глюка ни разу не наблюдал


 
clickmaker ©   (2004-04-23 14:20) [8]


> Однако одно неудобство... После MainForm.Enabled := True;
> главная форма сворачивается

Попробуй Application.Restore делать. Хотя, я такого глюка ни разу не наблюдал


 
Дмитрий   (2004-04-23 14:53) [9]

2Гаврила: Невозможно... Потому данные апдейтятся посреди большой и логичски неразбиваемой процедуры, а не где-то в конце...
2Игорь Шевченко: Потоки - это выход, но так не хочется заморачиваться... Чувствуется что можно проще

2All: Может я неправильно выразился... Ситуация такова... Расчёт, моё окно + куча левых, свёрнутых... После окончания расчёта окно теряет активность... А если одно из левых окон развёрнуто но не активно, то после окончания расчёта моё окно прячется под него, хотя было активным... Вот это ужасно неудобно... То есть нужно команда возвращающая моё окно поверх остальных...
З.Ы.Я бы так не заморачивался, если бы меня не прягли...


 
Дмитрий   (2004-04-23 14:53) [9]

2Гаврила: Невозможно... Потому данные апдейтятся посреди большой и логичски неразбиваемой процедуры, а не где-то в конце...
2Игорь Шевченко: Потоки - это выход, но так не хочется заморачиваться... Чувствуется что можно проще

2All: Может я неправильно выразился... Ситуация такова... Расчёт, моё окно + куча левых, свёрнутых... После окончания расчёта окно теряет активность... А если одно из левых окон развёрнуто но не активно, то после окончания расчёта моё окно прячется под него, хотя было активным... Вот это ужасно неудобно... То есть нужно команда возвращающая моё окно поверх остальных...
З.Ы.Я бы так не заморачивался, если бы меня не прягли...


 
Amoeba ©   (2004-04-23 15:25) [10]

На то время, когда должен быть запрещен доступ к другим формам, их можно просто временно дисейблить (Enabled := False). Это позволяет обходиться без сложностей, связанных с использованием модальных форм.


 
Amoeba ©   (2004-04-23 15:25) [10]

На то время, когда должен быть запрещен доступ к другим формам, их можно просто временно дисейблить (Enabled := False). Это позволяет обходиться без сложностей, связанных с использованием модальных форм.


 
Дмитрий   (2004-04-23 15:35) [11]

2Amoeba: Спасибо за помощь, но читать всё-таки надо внимательнее... Я так и сделал из-за чего и возник этот вопрос, котоый советую ещё раз прочитать...


 
Дмитрий   (2004-04-23 15:35) [11]

2Amoeba: Спасибо за помощь, но читать всё-таки надо внимательнее... Я так и сделал из-за чего и возник этот вопрос, котоый советую ещё раз прочитать...


 
evvcom ©   (2004-04-23 15:46) [12]

Я так понимаю, что окно, в которое ведется вывод - это лог-окно. У меня несколько таких задач было. И везде меня устраивала дополнительная закладка на PageControl в главном окне, куда я помещал RichEdit. Что не должно работать, то дизэйблил. Возможно, такой вариант устроит?


 
evvcom ©   (2004-04-23 15:46) [12]

Я так понимаю, что окно, в которое ведется вывод - это лог-окно. У меня несколько таких задач было. И везде меня устраивала дополнительная закладка на PageControl в главном окне, куда я помещал RichEdit. Что не должно работать, то дизэйблил. Возможно, такой вариант устроит?


 
Дмитрий   (2004-04-23 15:51) [13]

2evvcom: Не очень тебя понял... Можно поподробнее как ты делал?


 
Дмитрий   (2004-04-23 15:51) [13]

2evvcom: Не очень тебя понял... Можно поподробнее как ты делал?


 
evvcom ©   (2004-04-23 15:59) [14]

Главное окно у меня часто содержит TPageControl компонент. Добавляю закладку, помещаю TRichEdit. И в этот RichEdit валю все логи. Перед началом вычисления показываю закладку с логами, Disable всего, что могло бы нарушить правильную работу вычислений, потом естественно Enable. Вычисления либо в отдельном потоке, либо в основном, разбавленные ProcessMessages, в зависимости от задачи.


 
evvcom ©   (2004-04-23 15:59) [14]

Главное окно у меня часто содержит TPageControl компонент. Добавляю закладку, помещаю TRichEdit. И в этот RichEdit валю все логи. Перед началом вычисления показываю закладку с логами, Disable всего, что могло бы нарушить правильную работу вычислений, потом естественно Enable. Вычисления либо в отдельном потоке, либо в основном, разбавленные ProcessMessages, в зависимости от задачи.


 
Дмитрий   (2004-04-23 16:16) [15]

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


 
Дмитрий   (2004-04-23 16:16) [15]

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


 
Гаврила   (2004-04-23 16:16) [16]

Насчет доп потока

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

Потому данные апдейтятся посреди большой и логичски неразбиваемой процедуры, а не где-то в конце...

Думаю, стоит изменить структуру программы. Такая вот большая и неразбиваемая процедура - не есть хорошо, имхо


 
Гаврила   (2004-04-23 16:16) [16]

Насчет доп потока

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

Потому данные апдейтятся посреди большой и логичски неразбиваемой процедуры, а не где-то в конце...

Думаю, стоит изменить структуру программы. Такая вот большая и неразбиваемая процедура - не есть хорошо, имхо


 
Дмитрий   (2004-04-23 16:21) [17]

Думаю, стоит изменить структуру программы. Такая вот большая и неразбиваемая процедура - не есть хорошо, имхо
2Гаврила: Да сам понимаю... Однако, разбить незя, так как это есть вычисляющая процедура от начала до конца... Если разбивать, получатся две процедуры с одинавым входом плюс во второй ещё на вход будут подаваться результаты первой... Бред?!


 
Дмитрий   (2004-04-23 16:21) [17]

Думаю, стоит изменить структуру программы. Такая вот большая и неразбиваемая процедура - не есть хорошо, имхо
2Гаврила: Да сам понимаю... Однако, разбить незя, так как это есть вычисляющая процедура от начала до конца... Если разбивать, получатся две процедуры с одинавым входом плюс во второй ещё на вход будут подаваться результаты первой... Бред?!


 
Гаврила   (2004-04-23 16:23) [18]

Почему бред ?


 
Гаврила   (2004-04-23 16:23) [18]

Почему бред ?


 
Дмитрий   (2004-04-23 16:42) [19]

Потому теряется логика и целостность вычислений... Это тоже самое что сделать ShowModal, а по OnShow делать goto ВЫЧИСЛЯЙ_ДАЛЬШЕ...
или что-нить подобное... Несомненно, это выход, но не самый приятный...


 
Дмитрий   (2004-04-23 16:42) [19]

Потому теряется логика и целостность вычислений... Это тоже самое что сделать ShowModal, а по OnShow делать goto ВЫЧИСЛЯЙ_ДАЛЬШЕ...
или что-нить подобное... Несомненно, это выход, но не самый приятный...


 
evvcom ©   (2004-04-23 16:46) [20]


> Потому теряется логика и целостность вычислений

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


 
evvcom ©   (2004-04-23 16:46) [20]


> Потому теряется логика и целостность вычислений

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


 
Дмитрий   (2004-04-23 16:50) [21]

2evvcom: Можно, но дело в том что это всего лишь маленькая часть одной большой задачи, которая сама по себе велика... Поверьте, люди, банально: ну невозможно вычислить полинтеграла в одной процедуре, а вторую в другой...


 
Дмитрий   (2004-04-23 16:50) [21]

2evvcom: Можно, но дело в том что это всего лишь маленькая часть одной большой задачи, которая сама по себе велика... Поверьте, люди, банально: ну невозможно вычислить полинтеграла в одной процедуре, а вторую в другой...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.052 c
4-1079351543
Talla2k
2004-03-15 14:52
2004.05.09
аналог SelLength на WinApi


3-1081752975
student
2004-04-12 10:56
2004.05.09
MSSQL через ADO


14-1082455892
Матлабист
2004-04-20 14:11
2004.05.09
http://delphibase.endimus.ru/


3-1081408628
balbes
2004-04-08 11:17
2004.05.09
Какую БД выбрать, чтобы данные были защищены (нужен SQL)?


3-1081480032
F. Evgeney
2004-04-09 07:07
2004.05.09
как правильно подключить сетвую базу через ADOTable





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский