purebasic.info

PureBasic forum
Текущее время: Ср окт 17, 2018 9:37 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: окна... и еще раз окна
СообщениеДобавлено: Пн мар 28, 2016 2:07 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 18, 2009 3:41 am
Сообщений: 1126
Благодарил (а): 86 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Может у кого есть на готове или в голове, чтобы не перебирать сотни примеров пока не наткнусь на нужный?
Как по проще получить такой "расфокус": :lol: :lol:
из основного окна по нажатию кнопки открывается новое окно, и пока это "новое" окно не закроется, нажатия кнопок в основном должно быть не возможно (ну... в смысле "фокус" на основное окно нельзя было "сделать") ?

СПС!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Пн мар 28, 2016 2:15 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
DisableWindow?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Пн мар 28, 2016 2:18 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Это называется модальное окно. Так и искать примеры
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Procedure ModalWindow()
  OpenWindow(1, 0, 0, 300, 200, "Modal", #PB_Window_SystemMenu | #PB_Window_WindowCentered, WindowID(0))
  DisableWindow(0, #True)
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        CloseWindow(1)
        DisableWindow(0, #False)
        Break
    EndSelect
  ForEver
EndProcedure
 
OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "Main", #PB_Window_SystemMenu)
ButtonGadget(0, 100, 100, 80, 30, "Modal Dialog")
 
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      If EventGadget() = 0
        ModalWindow()
      EndIf
  EndSelect
ForEver


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Сб ноя 05, 2016 4:34 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 78
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Это называется модальное окно.
А как называется, когда, в зависимости от выбранного пункта меню, надо изменить всё содержимое окна, кроме самого окна и в/у меню?
И каким путём это лучше реализовать?

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Сб ноя 05, 2016 5:43 pm 
Не в сети
док

Зарегистрирован: Пн сен 27, 2010 10:30 am
Сообщений: 144
Откуда: Уренгой
Благодарил (а): 0 раз.
Поблагодарили: 10 раз.
Пункты репутации: 5
Использовать HideGadget().


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Сб ноя 05, 2016 6:17 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 78
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
КЭС писал(а):
Использовать HideGadget().
Так он же их просто спрячет, а надо закрыть (полностью поменять содержимое главного окна).
Или я чего не так понял?

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Сб ноя 05, 2016 6:25 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1699
Откуда: Алматы
Благодарил (а): 15 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
имелось ввиду нарисовать скажем 30 гаджетов по 10 скажем на одной форме, а после 20 из них спрятать. а потом как меняешь страницу - те 10 спрятать и отобразить другие из тех спрятанных 20.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Сб ноя 05, 2016 6:30 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Gregory писал(а):
КЭС писал(а):
Или я чего не так понял?

Наверно да.
На форме 2 контейнера, каждый заполнен своими гаджетами. Один контейнер изначально Hide.
При выборе в меню этот контейнер показываем, а второй скрываем.
Примерно по такому принципу можно построить различные Визарды, где всё содержимое окон меняется, кроме кнопок Впрерёд и Назад

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Сб ноя 05, 2016 7:16 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 78
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Наверно да
Тогда поясните, разве созданные гаджеты (даже скрытые) не "мешают" работе программы (жрут ресурсы и т.п.).
Вы всё предлагаете способы с разблокировкой гаджетов уже созданных. Это понятно.
Но я пока что ищу способ, как их убирать и создавать полностью.

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Сб ноя 05, 2016 8:26 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11299
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Gregory писал(а):
разве созданные гаджеты (даже скрытые) не "мешают" работе программы (жрут ресурсы и т.п.)
Работе не мешают, а ресурсов почти не требуют.
Но если это не желательно, то можно закрыть не нужные на данный момент гаджеты функцией FreeGadget() и создать новые.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Вс ноя 06, 2016 2:25 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 78
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Работе не мешают, а ресурсов почти не требуют
Это если парочка, а если пара сотен? :wink:

Пётр писал(а):
закрыть не нужные на данный момент гаджеты функцией FreeGadget() и создать новые
Спасибо, попробую.

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Вс ноя 06, 2016 3:18 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Gregory писал(а):
Пётр писал(а):
Работе не мешают, а ресурсов почти не требуют
Это если парочка, а если пара сотен? :wink:

Все домыслы легко проверить на практике.
А практика показывает, что нет существенной разницы. Если на форме 1000 кнопок, то эта форма занимает в памяти на примерно 100К больше. Ресурсов потребляет практически столько же, как и форма с 1-й кнопкой. Кнопки скрытые вместе с контейнером вообще ни как себя не проявляют в плане ресурсов.
Пара сотен кнопок - вообще не о чем...

;
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 1000 кнопок
 
Procedure OpenWindow_Window_0()
  If OpenWindow(0, 451, 123, 1100, 256, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ContainerGadget(0, 0, 0, 1100, 256, #PB_Container_Raised)
   
    For i = 1 To 1000
      ButtonGadget(i, i, 50, 100, 100, "But"+i)
    Next
     CloseGadgetList()
   EndIf
   HideGadget(0,1)
EndProcedure
 
OpenWindow_Window_0()
 
;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
     ; MessageRequester("Button","№:" + Str(EventGadget) )
     
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = 0
        CloseWindow(0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
 


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Пн ноя 07, 2016 9:54 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 684
Благодарил (а): 75 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Gregory писал(а):
Это если парочка, а если пара сотен?

у тебя что, кино экран метровых размеров?
и я не могу представить прогу с таким количеством элементов управления, ты сам то такой прогой пользоваться сможешь?

кто нить будет такую прогу юзать?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Чт ноя 17, 2016 3:31 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 78
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Пара сотен кнопок - вообще не о чем...
Ну, для начала, не кнопок, а гаджетов.
А во-вторых, не пара, а десяток, а то и сотен.
Возможно, возможно..
Но я всё-таки стараюсь придерживаться порядка.
Если это был бы какой-нибудь просмоторщик, то, наверное, так и надо было делать.
Но когда надо один раз выбрать конфигурацию интерфейса, то зачем эти "мёртвые" гаджеты в памяти? :D


newJS писал(а):
я не могу представить прогу с таким количеством элементов управления
Кто-то сказал про элементы управления?
Читай внимательней.
Ну, а пол сотни гаджетов в интерфейсе, "как два пальца". :lol:

newJS писал(а):
ты сам то такой прогой пользоваться сможешь?
А для кого я её делаю по твоему? :mrgreen:


Пётр писал(а):
можно закрыть не нужные на данный момент гаджеты функцией FreeGadget()
Спасибо Пётр!
То, что надо.
Гаджеты создаю в контейнере, а при необходимости удаляю весь контейнер одним махом.

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: окна... и еще раз окна
СообщениеДобавлено: Ср дек 14, 2016 9:38 pm 
Не в сети
док

Зарегистрирован: Чт окт 27, 2011 7:43 pm
Сообщений: 78
Откуда: Санкт-Ленинград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Gregory писал(а):
То, что надо
Рановато обрадовался...
Алгоритм такой:
При выборе в меню необходимой конфигурации, выставляется флаг-переменная.
По этой переменной, в начале основного цикла, старый контейнер закрывается, а новый создаётся (пробовал и наоборот).
Всё работает, пока не открываешь "вспомогательное" окно (например, окно About из меню Help).
После этого, при попытке создания нового контейнера пишет: "There is no current GadgetList".
Где ошибку искать?

_________________
ICQ нет, и, в ближайшее время, не будет


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB