purebasic.info

PureBasic forum
Текущее время: Вс апр 22, 2018 4:11 am

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




Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: Выходной код
СообщениеДобавлено: Чт янв 28, 2016 12:50 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Serge писал(а):
Цитата:
Какая версия PB вам досталась?
5.11

Ну теперь понятны проблемы с кодировкой.
И дизайнер форм там тоже не очень.
Найдите хотя бы V5.31, благо есть в Интернет полные версии.
Иначе мы будем с вами говорить на разных языках.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выходной код
СообщениеДобавлено: Чт янв 28, 2016 1:13 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11108
Благодарил (а): 4 раз.
Поблагодарили: 395 раз.
Serge писал(а):
Цитата:
Какая версия PB вам досталась?
5.11
Лучше обновить версию до 5.24.

kvitaliy писал(а):
Найдите хотя бы V5.31
В этой версии перевели редактор на юникод и не обошлось без ошибок, например отсутствия BOM в файле форм. Исправили в 5.40. Вот поэтому лучше взять 5.24, где этой ошибки нет.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выходной код
СообщениеДобавлено: Чт янв 28, 2016 1:15 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Этот код не обязательный шаблон, а чисто как один из множества вариантов
Вначале код формы, он автоматом генерируется редактором форм. сохраняем с расширением form.pbf
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
 
Global Window_0
 
Global Button_0, Date_0
 
 
Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  Button_0 = ButtonGadget(#PB_Any, 150, 180, 280, 60, "Hi!")
  GadgetToolTip(Button_0, "Press me!")
  Date_0 = DateGadget(#PB_Any, 150, 50, 270, 30, "")
EndProcedure
 



Потом создаем новый файл программы сохраняем как programm.pb
Проседура Window_0_Events(event) вырезана из кода формы, мы её будем дополнять событиями наших гаджетом.
Код:
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
 
;PB_cod
IncludeFile "pb_form.pbf"
 
Procedure Window_0_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False
 
    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect
 
    Case #PB_Event_Gadget
      Select EventGadget()
        Case Button_0
          MessageRequester("","Hello")
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure
 
OpenWindow_0()
 
Repeat
 event= WaitWindowEvent()
Until Window_0_Events(event)=0
 



Теперь мы можем как угодно изменять код формы, он не сотрет код программы, написанный руками.
При добавлении гаджетов надо только добавлять их события

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выходной код
СообщениеДобавлено: Чт янв 28, 2016 4:47 pm 
Не в сети
студент

Зарегистрирован: Ср янв 27, 2016 6:26 pm
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
О, спасибо! Так уже куда понятнее.
Цитата:
Найдите хотя бы V5.31, благо есть в Интернет полные версии.
Иначе мы будем с вами говорить на разных языках.
Нашел и 5.31 и 5.40 буду пробовать. Уже начинает нравится )
P.S. в 5.40 такие же грабли с кодировкой
Почему то ни в одной версии справок нет, окно появляется, вроде содержание есть но везде пусто, так и надо?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выходной код
СообщениеДобавлено: Чт янв 28, 2016 7:53 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
mestnyi писал(а):
Цитата:
Что там, будет продолжение этого чудо-редактора?
:) Пока работаю над проектом но не знаю когда будет, или будет ли вообще.

У буржуев наткнулся на интересный код, который позволяет модифицировать гаджеты во время выполнения программы, ну и как вариант для визуального редактора

Код:
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
;- Include: GadgetTransformation
 
DeclareModule GadgetTransformation
   
   Enumeration;Binary 1
      #GadgetTransformation_Position
      #GadgetTransformation_Horizontally
      #GadgetTransformation_Vertically
   EndEnumeration
   
   #GadgetTransformation_Size = #GadgetTransformation_Horizontally|#GadgetTransformation_Vertically
   #GadgetTransformation_All  = #GadgetTransformation_Position|#GadgetTransformation_Horizontally|#GadgetTransformation_Vertically
   
   Declare DisableGadgetTransformation(Gadget.i)
   Declare EnableGadgetTransformation(Gadget.i, Flags.i=#GadgetTransformation_All, Grid.i=1)
   
EndDeclareModule
 
Module GadgetTransformation
   
   EnableExplicit
   
   #HandelSize = 5
   
   Structure GadgetTransformation
      Gadget.i
      Handle.i[10]
      Grid.i
   EndStructure
   
   Structure DataBuffer
      Handle.i[10]
   EndStructure
   
   Global NewList GadgetTransformation.GadgetTransformation()
   
   Procedure.i GridMatch(Value.i, Grid.i, Max.i=$7FFFFFFF)
      Value = Round(Value/Grid, #PB_Round_Nearest)*Grid
      If Value > Max
         ProcedureReturn Max
      Else
         ProcedureReturn Value
      EndIf
   EndProcedure
   
   Procedure GadgetTransformation_Callback()
      Static Selected.i, X.i, Y.i, OffsetX.i, OffsetY.i, GadgetX0.i, GadgetX1.i, GadgetY0.i, GadgetY1.i
      Protected *GadgetTransformation.GadgetTransformation = GetGadgetData(EventGadget())
      With *GadgetTransformation
         Select EventType()
            Case #PB_EventType_LeftButtonDown
               Selected = #True
               OffsetX = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseX)
               OffsetY = GetGadgetAttribute(EventGadget(), #PB_Canvas_MouseY)
               GadgetX0 = GadgetX(\Gadget)
               GadgetX1 = GadgetX0 + GadgetWidth(\Gadget)
               GadgetY0 = GadgetY(\Gadget)
               GadgetY1 = GadgetY0 + GadgetHeight(\Gadget)
            Case #PB_EventType_LeftButtonUp
               Selected = #False
            Case #PB_EventType_MouseMove
               If Selected
                  X = WindowMouseX(GetActiveWindow())-OffsetX
                  Y = WindowMouseY(GetActiveWindow())-OffsetY
                  Select EventGadget()
                     Case \Handle[1]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore, GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[2]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, #PB_Ignore, GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[3]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, GridMatch(X, \Grid)-GadgetX0, GridMatch(Y, \Grid)-GadgetY0)
                     Case \Handle[4]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore, GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), #PB_Ignore)
                     Case \Handle[5]
                        ResizeGadget(\Gadget, GridMatch(X-#HandelSize, \Grid), GridMatch(Y+#HandelSize, \Grid), #PB_Ignore, #PB_Ignore)
                     Case \Handle[6]
                        ResizeGadget(\Gadget, #PB_Ignore, #PB_Ignore, GridMatch(X, \Grid)-GadgetX0, #PB_Ignore)
                     Case \Handle[7]
                        ResizeGadget(\Gadget, GridMatch(X+#HandelSize, \Grid, GadgetX1), GridMatch(Y+#HandelSize, \Grid, GadgetY1), GadgetX1-GridMatch(X+#HandelSize, \Grid, GadgetX1), GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                     Case \Handle[8]
                        ResizeGadget(\Gadget, #PB_Ignore, GridMatch(Y+#HandelSize, \Grid, GadgetY1), #PB_Ignore, GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                     Case \Handle[9]
                        ResizeGadget(\Gadget, #PB_Ignore, GridMatch(Y+#HandelSize, \Grid, GadgetY1), GridMatch(X, \Grid)-GadgetX0, GadgetY1-GridMatch(Y+#HandelSize, \Grid, GadgetY1))
                  EndSelect
                  If \Handle[1]
                     ResizeGadget(\Handle[1], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[2]
                     ResizeGadget(\Handle[2], GadgetX(\Gadget)+(GadgetWidth(\Gadget)-#HandelSize)/2, GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[3]
                     ResizeGadget(\Handle[3], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)+GadgetHeight(\Gadget), #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[4]
                     ResizeGadget(\Handle[4], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)+(GadgetHeight(\Gadget)-#HandelSize)/2, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[5]
                     ResizeGadget(\Handle[5], GadgetX(\Gadget)+#HandelSize, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[6]
                     ResizeGadget(\Handle[6], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)+(GadgetHeight(\Gadget)-#HandelSize)/2, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[7]
                     ResizeGadget(\Handle[7], GadgetX(\Gadget)-#HandelSize, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[8]
                     ResizeGadget(\Handle[8], GadgetX(\Gadget)+(GadgetWidth(\Gadget)-#HandelSize)/2, GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
                  If \Handle[9]
                     ResizeGadget(\Handle[9], GadgetX(\Gadget)+GadgetWidth(\Gadget), GadgetY(\Gadget)-#HandelSize, #PB_Ignore, #PB_Ignore)
                  EndIf
               EndIf
         EndSelect
      EndWith
   EndProcedure
   
   Procedure DisableGadgetTransformation(Gadget.i)
      Protected I.i, *GadgetTransformation.GadgetTransformation
      ForEach GadgetTransformation()
         If GadgetTransformation()\Gadget = Gadget
            For I = 1 To 9
               If GadgetTransformation()\Handle[I]
                  FreeGadget(GadgetTransformation()\Handle[I])
               EndIf
            Next
            DeleteElement(GadgetTransformation())
         EndIf
      Next
   EndProcedure
   
   Procedure EnableGadgetTransformation(Gadget.i, Flags.i=#GadgetTransformation_All, Grid.i=1)
      Protected Handle.i, I.i
      Protected *GadgetTransformation.GadgetTransformation
      Protected *Cursors.DataBuffer = ?Cursors
      Protected *Flags.DataBuffer = ?Flags
      ForEach GadgetTransformation()
         If GadgetTransformation()\Gadget = Gadget
            For I = 1 To 9
               If GadgetTransformation()\Handle[I]
                  FreeGadget(GadgetTransformation()\Handle[I])
               EndIf
            Next
            DeleteElement(GadgetTransformation())
         EndIf
      Next
      *GadgetTransformation = AddElement(GadgetTransformation())
      *GadgetTransformation\Gadget = Gadget
      *GadgetTransformation\Grid = Grid
      For I = 1 To 9
         If Flags & *Flags\Handle[I] = *Flags\Handle[I]
            Select I
               Case 1
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 2
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+(GadgetWidth(Gadget)-#HandelSize)/2, GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 3
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)+GadgetHeight(Gadget), #HandelSize, #HandelSize)
               Case 4
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)+(GadgetHeight(Gadget)-#HandelSize)/2, #HandelSize, #HandelSize)
               Case 5
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+#HandelSize, GadgetY(Gadget)-#HandelSize, 2*| style="color: #924B72;">#HandelSize, #HandelSize)
               Case 6
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)+(GadgetHeight(Gadget)-#HandelSize)/2, #HandelSize, #HandelSize)
               Case 7
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)-#HandelSize, GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
               Case 8
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+(GadgetWidth(Gadget)-#HandelSize)/2, GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
               Case 9
                  Handle = CanvasGadget(#PB_Any, GadgetX(Gadget)+GadgetWidth(Gadget), GadgetY(Gadget)-#HandelSize, #HandelSize, #HandelSize)
            EndSelect
            *GadgetTransformation\Handle[I] = Handle
            SetGadgetData(Handle, *GadgetTransformation)
            SetGadgetAttribute(Handle, #PB_Canvas_Cursor, *Cursors\Handle[I])
            If StartDrawing(CanvasOutput(Handle))
               Box(0, 0, OutputWidth(), OutputHeight(), $000000)
               Box(1, 1, OutputWidth()-2, OutputHeight()-2, $FFFFFF)
               StopDrawing()
            EndIf
            BindGadgetEvent(Handle, @GadgetTransformation_Callback())
         EndIf
      Next
      DataSection
         Cursors:
        Data.i 0, #PB_Cursor_LeftDownRightUp, #PB_Cursor_UpDown, #PB_Cursor_LeftUpRightDown, #PB_Cursor_LeftRight
         Data.i #PB_Cursor_Arrows, #PB_Cursor_LeftRight, #PB_Cursor_LeftUpRightDown, #PB_Cursor_UpDown, #PB_Cursor_LeftDownRightUp
         Flags:
        Data.i 0, #GadgetTransformation_Size, #GadgetTransformation_Vertically, #GadgetTransformation_Size, #GadgetTransformation_Horizontally
         Data.i #GadgetTransformation_Position, #GadgetTransformation_Horizontally, #GadgetTransformation_Size, #GadgetTransformation_Vertically, #GadgetTransformation_Size
      EndDataSection
   EndProcedure
   
EndModule
 
 
 
;- Example code
 
UseModule GadgetTransformation
 
Enumeration
   #Window
   #GadgetTransformation
   #EditorGadget
   #ButtonGadget
   #TrackBarGadget
   #SpinGadget
EndEnumeration
 
OpenWindow(#Window, 0, 0, 600, 400, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
EditorGadget(#EditorGadget, 50, 100, 200, 50, #PB_Editor_WordWrap) : SetGadgetText(#EditorGadget, "Grumpy wizards make toxic brew for the evil Queen and Jack.")
ButtonGadget(#ButtonGadget, 50, 250, 200, 25, "Hallo Welt!", #PB_Button_MultiLine)
TrackBarGadget(#TrackBarGadget, 350, 100, 200, 25, 0, 100) : SetGadgetState(#TrackBarGadget, 70)
SpinGadget(#SpinGadget, 350, 250, 200, 25, 0, 100, #PB_Spin_Numeric) : SetGadgetState(#SpinGadget, 70)
 
ButtonGadget(#GadgetTransformation, 20, 20, 150, 25, "Enable Transformation", #PB_Button_Toggle)
 
Repeat
   
   Select WaitWindowEvent()
         
      Case #PB_Event_CloseWindow
         End
         
      Case #PB_Event_Gadget
         Select EventGadget()
            Case #GadgetTransformation
               Select GetGadgetState(#GadgetTransformation)
                  Case #False
                     SetGadgetText(#GadgetTransformation, "Enable Transformation")
                     DisableGadgetTransformation(#EditorGadget)
                     DisableGadgetTransformation(#ButtonGadget)
                     DisableGadgetTransformation(#TrackBarGadget)
                     DisableGadgetTransformation(#SpinGadget)
                  Case #True
                     SetGadgetText(#GadgetTransformation, "Disable Transformation")
                     EnableGadgetTransformation(#EditorGadget, #GadgetTransformation_All, 10)
                     EnableGadgetTransformation(#ButtonGadget, #GadgetTransformation_All)
                     EnableGadgetTransformation(#TrackBarGadget, #GadgetTransformation_Position|#GadgetTransformation_Horizontally)
                     EnableGadgetTransformation(#SpinGadget, #GadgetTransformation_Position)
               EndSelect
         EndSelect
         
         
   EndSelect
   
ForEver


_________________
read-only


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

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