Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.035 c
2-1191175017
Pacific
2007-09-30 21:56
2007.10.21
WebBrowser1


2-1191255641
Jkt
2007-10-01 20:20
2007.10.21
Переобразование xls в dbf4


15-1190091413
Kolan
2007-09-18 08:56
2007.10.21
Что-то я думаю, Gero пропал, а у меня есть DMClient RC1, может&amp;#133


15-1190355579
zdm77
2007-09-21 10:19
2007.10.21
ICQ игнор


6-1171358206
SergGG
2007-02-13 12:16
2007.10.21
MailSlot поймать реального клиента





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский