Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
ВнизКак реализовать запрет деакривации дочернего окна в MDI-приложени Найти похожие ветки
← →
Гелена © (2007-09-26 13:45) [0]Уважаемые Мастера, помогите реализовать запрет переключения между дочерними окна в MDI-приложении. Закрывать или скрывать дочей нельзя. Если точнее, то какой код необходимо вписать в обработчик события onDeactivate. В литературе и справке я не нашла :-\ . Код, что называется "в лоб", не дает требуемого результата.
procedure TFormFieldPictureWindow.FormDeactivate(Sender: TObject);
begin
if bCode<>0
then
begin
ShowMessage("Вы не можете выбрать другое окно!");
FormFieldPictureWindow. FormActivate(FormFieldPictureWindow);
end;
end;
← →
Вася Правильный (2007-09-26 14:00) [1]а накой хрен тогда MDI ?
← →
Вася Правильный (2007-09-26 14:01) [2]http://delphimaster.net/view/2-1190799956/
кросспостинг наказуем
← →
Гелена © (2007-09-26 14:07) [3]блокировать нужно временно, пока не изменится флаг bCode. я пересылаю данные в активное окно, и если пользователь переключится в другое, то данные будут заносится туда. и ошибки работы с памятью обеспечены
← →
clickmaker © (2007-09-26 14:09) [4]
> я пересылаю данные в активное окно
кто мешает запомнить ссылку на активное окно?
← →
Гелена © (2007-09-26 14:12) [5]извините, случайно
← →
Сергей М. © (2007-09-26 14:22) [6]
> я пересылаю данные в активное окно
Сидишь на суку и пилишь его ?)
← →
Гелена © (2007-09-26 14:33) [7]пример был не удачный
я и работаю с сылкой на окно, которое было активным в момент начала пересылки, но если на слабеньком ПК начнут перерисовывать другие окна, то есть вероятность что данные начнут теряться
← →
Сергей М. © (2007-09-26 14:36) [8]
> есть вероятность что данные начнут теряться
Если они у тебя теряются, то это говорит только об одном - об ошибках в твоем алгоритме передачи данных.
← →
Гелена © (2007-09-26 15:09) [9]Алгоритм передачи данных проще не придумаешь
я забираю данные из КОМ-порта, которые туда пересылает микроконтроллер внешнего устройства. скорость компорта 115200. 200 пентиум начинает подтормаживать когда одновременно с приемом данных его заставляют перерисовывать картинки.
Признаю, что наверняка рисование в bitmap сделано не эфективно и планирую его пересмотреть и оптимизировать.
НО сейчас мне нужно запретить перерисовывание других окон во время приема данных.
использование onDeactivate показалось оптимальным вариантом. кто-нибудь может подсказать ответ на конкретный вопрос: как запретить переключаться между дочерними окнами не скрывая их?
← →
Сергей М. © (2007-09-26 15:18) [10]
> использование onDeactivate показалось оптимальным вариантом
Это тебе только "показалось".
Засада с перераспределением ресурсов может ждать тебя в таких условиях в любом месте, не связанном напрямую или косвенно с происходящим у тебя в приложении.
Для начала следует заострить внимание на корректности твоего алгоритма чтения данных из порта, ибо вряд ли контроллер посылает тебе данные без оглядки на потенциально возможное переполнение буфера передачи порта со своей стороны.
Далее можно вынести транспортную логику в отдельный поток, повысив до разумного максимума его приоритет.
Если и этого будет недостаточно, можно поиграться с повышением приоритета процесса твоего приложения.
← →
Гелена © (2007-09-26 17:12) [11]Сергей М. © (26.09.07 15:18) [10]
>Для начала следует заострить внимание на корректности твоего алгоритма чтения данных из порта, ибо вряд ли контроллер посылает тебе данные без оглядки на потенциально возможное переполнение буфера передачи порта со своей стороны.
контроллер таки посылает мне данные без оглядки на переполнение буфера. почему так - не ко мне, я его не программировала
>Далее можно вынести транспортную логику в отдельный поток, повысив до разумного максимума его приоритет.
такой вариант давно обдумываю, похоже без этого не обойтись
спасибо
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c