Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 2
Регистрация: 25.05.2012
Сообщений: 55

Z - порядок гаджетов на форме

18.10.2013, 23:59. Показов 2040. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как указать порядок расположения гаджетов на форме, то есть какой будет сверху а какой внизу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2013, 23:59
Ответы с готовыми решениями:

Z-порядок pictureBox на форме
Добрый вечер, На форме несколько pictureBox с загруженными картинками и событиями (перемещения и поворота). У каждого pictureBox было...

Порядок объектов на форме
Доброй ночи. У меня проблема с позицией timage и tbutton мне надо чтоб картинка перекрывала кнопку, нажимал control=>bring front у...

Изменить порядок элементов на форме
Товарищи, подскажите пож-та, у меня кнопки изменения последовательности в object.treeview не активны, куда клацнуть, что они ожили?

9
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,279
Записей в блоге: 7
19.10.2013, 00:22
Порядок определяется последовательностью их создания.
0
2 / 2 / 2
Регистрация: 25.05.2012
Сообщений: 55
19.10.2013, 08:36  [ТС]
вот порядком не проходить например текстгаджет
PureBasic
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
      If OpenWindow(5,5,5,700,400,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
     
      ButtonGadget(0,5,160,130,25,"1");, #WS_CLIPSIBLINGS) 
      ButtonGadget(1,15,175,130,25,"2");, #WS_CLIPSIBLINGS) 
      
    ButtonGadget(230, 25, 5, 80, 25, "ButtonGadget")
    TextGadget(214, 95, 10, 60, 25, "TextGadget");,#SS_NOTIFY); остается всегда внизу
    
     StringGadget(244, 300, 35, 139, 25, "TStringGadget")
     ScrollAreaGadget(344, 0, 50, 480,100, 480, 100, 30)
     ButtonGadget(444, 15, 10, 130, 45, "ButtonGadget",6543)
     StringGadget(174, 225, 10, 150, 25, "StringGadget",19)
     CloseGadgetList()
     ComboBoxGadget(144, 300, 15, 120, 25,6752)
     
     
     SetWindowPos_(GadgetID(1),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) ; типа такого что то, что бы программно менять расположение как в других ide
    
      Repeat
        Event = WaitWindowEvent()
 
        Select Event 
         
          Case #PB_Event_CloseWindow
            End
          Case #PB_Event_SizeWindow
           
        EndSelect
      ForEver
    EndIf
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,279
Записей в блоге: 7
19.10.2013, 10:21
Гаджеты "всплывают" при их активации и чтобы это не происходило, нужно указать системе что они могут перекрываться.
PureBasic
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
38
39
40
41
42
43
44
45
46
47
48
49
Enumeration
  #window
  #GADGET_0
  #GADGET_1
  #GADGET_2
  #GADGET_3
EndEnumeration
 
Procedure CreateElements()
 If OpenWindow(#window, 0, 0,430,110, "Окно", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
   
   ButtonGadget(#GADGET_0,  100, 20, 150, 25, "сверху",#WS_CLIPSIBLINGS) ;#WS_CLIPSIBLINGS Z- порядок на форме :сверху
   ButtonGadget(#GADGET_1,   140, 20, 150, 25, "в середине",#WS_CLIPSIBLINGS) ;#WS_CLIPSIBLINGS Z- порядок на форме :в середине
   ButtonGadget(#GADGET_2,   180, 20, 150, 25, "снизу",#WS_CLIPSIBLINGS) ;#WS_CLIPSIBLINGS Z- порядок на форме :снизу
  
   
   ButtonGadget(#GADGET_3,   140, 55, 150, 40, "Сделать средную кнопку сверху",#WS_CLIPSIBLINGS |#PB_Button_MultiLine)
   
 EndIf
EndProcedure
 
Procedure MainLoop()
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow :Break
 
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #GADGET_0  :Debug "сверху" ;#button
            
          Case #GADGET_1  :Debug "в середине" ;#button
            
          Case #GADGET_2  :Debug "снизу" ;#button  
            
          Case #GADGET_3   ;#button  
            BringWindowToTop_(GadgetID(#GADGET_1)) ; Указать самому Z- порядок на форме
            
        EndSelect
     EndSelect
  ForEver
EndProcedure
 
Procedure Main()
 
  CreateElements()
  MainLoop()
 
EndProcedure :Main()
Здесь обсуждалось. http://purebasic.info/phpBB3ex... f=5&t=2947
Кстати, вы же спрашивали об этом. Уже все забыли?

На форуме баг с переходом на ссылку. Скопируйте ее в адресную строку браузера.
Code
1
http://purebasic.info/phpBB3ex/viewtopic.php?f=5&t=2947
0
2 / 2 / 2
Регистрация: 25.05.2012
Сообщений: 55
19.10.2013, 13:15  [ТС]
да действительно мой пример, а яне мог найти. С поиском у меня проблемы, да уж.
Гаджеты "всплывают" при их активации и чтобы это не происходило
да это я заметиль и начал "прибивать их к полу", вроде у меня получилось поместить на самый верх и на самый вниз, а теперь нужно поместить на один вниз и на один верх не знаю как сделать.
PureBasic
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
; -------------------------------------
;{- перечисление гаджетов формы          ; Ok
; -------------------------------------
Structure StructureWindowGadgetList
  Text.s
  Name.s
  pX.l
  pY.l
  X.l
  Y.l
  Height.l
  Width.l
  Number.l
  Handle.l
  Parent.l
  IsParent.l
EndStructure :Global NewList EnumGadget.StructureWindowGadgetList()
Procedure WindowGadgetList(hWnd,lParam)
  Protected Text$,Name$
  Text$ = Space(250)
  Name$ = Space(1024)
  GetWindowText_(hWnd,Text$,Len(Text$))
  GetClassName_(hWnd,@Name$,Len(Name$))
  
  AddElement(EnumGadget())
  
 If Name$<>"PureScrollAreaChild"
  EnumGadget()\X=GadgetX(GetProp_(hwnd, "PB_ID"))
  EnumGadget()\Y=GadgetY(GetProp_(hwnd, "PB_ID"))
  EnumGadget()\Height=GadgetHeight(GetProp_(hwnd, "PB_ID"))
  EnumGadget()\Width=GadgetWidth(GetProp_(hwnd, "PB_ID"))
 EndIf
  EnumGadget()\Text=Text$
  EnumGadget()\Name=Name$
  EnumGadget()\Number=GetProp_(hwnd, "PB_ID")
  EnumGadget()\Handle=hwnd
  EnumGadget()\Parent=GetParent_(hwnd)
  EnumGadget()\IsParent=GetParent_(GetProp_(hwnd, "PB_ID"))
    
 
  ProcedureReturn #True
EndProcedure  
Procedure EnumWindowGadget(WindowID,lParam=0)
 Protected hWnd
  If IsWindow(WindowID)
    hWnd=WindowID(WindowID)
  EndIf  
 EnumChildWindows_(hWnd,@WindowGadgetList(),lParam)
EndProcedure
;}-
; --------------------------------------
 
If OpenWindow(5,5,5,700,400,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
     CreatePopupMenu(443)
     MenuItem(1, "Поместить сверху")      ; You can use all commands for creating a menu
      MenuItem(2, "Поместить снизу")      ; just like in a normal menu...
      MenuItem(3, "На один верх")      ; You can use all commands for creating a menu
      MenuItem(4, "На один вниз")      ; just like in a normal menu...
     
     ButtonGadget(0,5,160,130,25,"1");, #WS_CLIPSIBLINGS) 
     ButtonGadget(1,15,175,130,25,"2");, #WS_CLIPSIBLINGS) 
      
     TextGadget(214, 95, 10, 60, 25, "TextGadget");,#SS_NOTIFY); остается всегда внизу
     ButtonGadget(230, 25, 5, 80, 25, "ButtonGadget")
    
     StringGadget(244, 300, 35, 139, 25, "TStringGadget")
     ScrollAreaGadget(344, 0, 50, 480,100, 480, 100, 30)
     ButtonGadget(444, 15, 10, 130, 45, "ButtonGadget",6543)
     StringGadget(174, 225, 10, 150, 25, "StringGadget",19)
     CloseGadgetList()
     ComboBoxGadget(144, 300, 20, 120, 25);, #WS_CLIPSIBLINGS)
     
     EnumWindowGadget(5)
     ForEach EnumGadget() ;прибиваем к полу всех гаджетов
      SetWindowLong_(GadgetID(EnumGadget()\Number),#GWL_STYLE,GetWindowLong_(GadgetID(EnumGadget()\Number), #GWL_STYLE)|#WS_CLIPSIBLINGS)
    Next
    
      SetWindowPos_(GadgetID(144),#HWND_TOP,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) ;указать Z-положение гаджетов
     
    Repeat
        Event = WaitWindowEvent()
 
        Select Event 
         
          Case #PB_Event_CloseWindow
            End
          Case #PB_Event_Gadget
            If Event=#PB_Event_Gadget
              DisplayPopupMenu(443, WindowID(5))  
              gadget= EventGadget()
             EndIf 
          Case #PB_Event_Menu        ; an item of the popup-menu was clicked
          Select EventMenu()     ; get the clicked menu item...
            Case 1 : SetWindowPos_(GadgetID(gadget),#HWND_TOP,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) ;указать Z-положение гаджетов
     
            Case 2 : SetWindowPos_(GadgetID(gadget),#HWND_BOTTOM,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) ;указать Z-положение гаджетов
              ;нужно реализовать но не знаю как
            Case 3 
     
            Case 4 
     
              
          EndSelect
          
        EndSelect
      ForEver
    EndIf
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,279
Записей в блоге: 7
19.10.2013, 13:42
Цитата Сообщение от mestnyi33 Посмотреть сообщение
а теперь нужно поместить на один вниз и на один верх не знаю как сделать
У гаджетов должен быть флаг #WS_CLIPSIBLINGS.
Пример выше.
0
2 / 2 / 2
Регистрация: 25.05.2012
Сообщений: 55
20.10.2013, 09:14  [ТС]
А этим что разве, я не устанавливаю этот влаг?
PureBasic
1
2
3
ForEach EnumGadget() ;прибиваем к полу всех гаджетов
      SetWindowLong_(GadgetID(EnumGadget()\Number),#GWL_STYLE,GetWindowLong_(GadgetID(EnumGadget()\Number), #GWL_STYLE)|#WS_CLIPSIBLINGS)
    Next
Добавлено через 1 час 26 минут
DeferWindowPos первый параметр что далжно быть? В справке я прочитал но понять не могу. написано что получают этим BeginDeferWindowPos.

Добавлено через 16 часов 51 минуту
вопрос еще актуален, Как на одну позицию переместить вниз? Если кто поможет буду радь. Решение вопроса можно на любом языке.
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,279
Записей в блоге: 7
20.10.2013, 11:50
Винда стандартными средствами не позволяет такое сделать.
Должен быть список гаджетов, которые перекрывают друг друга и при изменении их порядка, нужно перестраивать их позиции, последовательно отправляя им сообщение #HWND_TOP в порядке их позиции.
0
2 / 2 / 2
Регистрация: 25.05.2012
Сообщений: 55
20.10.2013, 17:26  [ТС]
Я тоже так думал но надеялся что есть, что то по легче, спасибо. А как я могу узнать что он перекривается?
0
Эксперт по электронике
6493 / 3123 / 331
Регистрация: 28.10.2011
Сообщений: 12,279
Записей в блоге: 7
20.10.2013, 18:51
По координатам и размеру.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.10.2013, 18:51
Помогаю со студенческими работами здесь

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

Порядок полей в разделенной форме
Не получается поменять порядок следования полей в разделенной форме в области таблицы. В режиме формы или макета поменять их можно как...

Поменялся порядок столбцов в форме
Есть давно работающая форма. Я решила поменять одно из ее полей с текстового на combo-box. Форма продолжает работать, но, когда я Enter'ом...

Порядок отображения элементов на форме
Я за помощью :rose: Помогите разобраться, как в Visual Studio задается порядок, в котором элементы отображаются на форме. Буду рада...

Как задать порядок элементов на форме?
Добавил несколько элементов на форму , получился &quot;бутерброд&quot;(возникли перекрытия в элементах). Какая команда в Java указывает на порядок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru