Форум » GUI » Проблема с MDI окнами » Ответить

Проблема с MDI окнами

Dr. Oldwarez: Вот, хочу перевести программу на MDI интерфейс и обнаружил неприятный сюрприз. В MDI окнах невозможно стало устанавливать свойства элементов управления после их создания. Например, нужно в программе редактирования, чтобы после создания GETBOXа в него блокировали ввод, если это режим правки строки и разрешали ввод в режиме дозаписи. wndEdit.txtID.ReadOnly:=!lNew где lNew - флаг режима дозаписи. Почему-то при перестановке окна в MDI выдаётся сбой, будто такого элемента управления нет.

Ответов - 34, стр: 1 2 All

rovix: неа, всё равно не взлетело :( теперь, правда, другое сообщение. [pre2] --------------------------- Program Error --------------------------- Harbour MiniGUI Extended Edition 2.1.9 - 2013.01.22 ACTIVATE WINDOW: DEFINE WINDOW Structure is not closed. Program terminated. Called from _ACTIVATEWINDOW(1124) Called from VIEWPREDPR(501) Called from (b)MAIN(22) Called from _DOCONTROLEVENTPROCEDURE(1596) Called from EVENTS(1383) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1321) Called from MAIN(26) --------------------------- ОК --------------------------- [/pre2]

PSP: END WINDOW есть?

rovix: должно быть (сейчас не могу глянуть на работе осталось), я ведь саму программу не менял, просто в описании окна заменил MAIN на MAIN MDI, а для вложенных поставил MDICHILD. Ну плюс подправил файл как SergKis советовал.


rovix: PSP пишет: END WINDOW есть? Сейчас посмотрел - есть.

PSP: Весь кусок в студию.

rovix: PSP пишет: Весь кусок в студию. Здесь архив формочек и prg-файлов, всё остальное есть в папке MiniGUI\SAMPLES\BASIC\CONTACTOS_2

PSP: Проблема, возможно, в том, что при объявлении главного окна у вас в файле Principal.Fmg указано одновременно и MAIN, и MDI.

gfilatov2002: rovix пишет: я ведь саму программу не менял, просто в описании окна заменил MAIN на MAIN MDI, а для вложенных поставил MDICHILD. Обратите внимание, что окна типа MDICHILD не нужно активировать Возможно, также Вам будет интересен пример в папке samples\Basic\mdi_4

rovix: gfilatov2002 пишет: Обратите внимание, что окна типа MDICHILD не нужно активировать Вот где собака порылась Перейдём к следующему пункту- пропал тулбар в mdi PSP пишет: Проблема, возможно, в том, что при объявлении главного окна у вас в файле Principal.Fmg указано одновременно и MAIN, и MDI. Так в примерах было "MAIN MDI"

PSP: rovix пишет: Так в примерах было "MAIN MDI" Где? В MiniGUI\SAMPLES\BASIC\CONTACTOS_2 нет.

rovix: PSP пишет: Где? В MiniGUI\SAMPLES\BASIC\CONTACTOS_2 нет. Нет, конечно же в этом примере нет , я имел ввиду примеры в папках MDI* На примере CONTACTOS_2 я пытался перевести обычное приложение в mdi интерфейс

SergKis: rovix пишет:Перейдём к следующему пункту- пропал тулбар в mdi Как, я понимаю, toolbar в mdi может находится: - на MAIN MDI и один для всех CHILD окон - на всех CHILD оконах, на MAIN MDI отсутствовать. В примере, Principal.fmg - это child окно, а не main mdi, т.к. *.fmg содержат toolbar. По поводу statusbar - этот контрол должен находится на main mdi и исключен из child окон, вывод текстов надо с child окон перенаправить в main mdi. Пример вывода текста в Statusbar: [pre2] FUNCTION MsgSTB( cMessage, nItem, cForm ) LOCAL i Default nItem To 1 IF Empty( cForm ) i := AScan(_HMG_aFormType, 'A') cForm := iif(i > 0, _HMG_aFormNames [ i ], '') ENDIF IF _IsControlDefined("StatusBar", cForm) SetProperty( cForm, "StatusBar", "Item", nItem, cMessage ) ENDIF RETURN NIL В Principal.fmg событие ON INIT Nil заменить на: ON INIT ( MsgSTB("Contactos with MiniGUI IDE", 1), ; MsgSTB("Harbour MiniGUI", 2) ) так же поступить в Win_2.fmg А MAIN MDI окно надо создать сверху: ... DEFINE WINDOW Form_1 ; ... DEFINE MAIN MENU POPUP "File" ITEM "Principal.fmg" NAME Principal ACTION PrincipalCild() SEPARATOR ITEM "Exit" NAME Exit ACTION ThisWindow.Release END POPUP ... END MENU DEFINE STATUSBAR FONT 'MS Sans Serif' SIZE 9 STATUSITEM "HMG Power Ready! 1" STATUSITEM "HMG Power Ready! 2" ... END STATUSBAR END WINDOW ... Function PrincipalCild() ... Return [/pre2]

SergKis: Пример с toolbar на main mdi (средняя группа кнопок работает):Test Mdi

SergKis: SergKis пишет:Как, я понимаю, toolbar в mdi может находится: - на MAIN MDI и один для всех CHILD окон - на всех CHILD оконах, на MAIN MDI отсутствовать. Это я ОЧЕНЬ неправильно выразился. Надо - при переводе Clipper, WVT программ на mdi желательно использовать ...



полная версия страницы