purebasic.info

PureBasic forum
Текущее время: Вт июн 19, 2018 9:48 am

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




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 20, 2010 9:38 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
kvitaliy писал(а):
 Debug msg

Вообще то я это пробовал, но меня смутило большое количество всевозможных цифирей мелькающих в окне отладчика. Впредь буду более внимательным.
P.S. Виталий, хорошь прикалываться над моей подписью, а то поменяю на что-нибудь более либеральное :D

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 31, 2011 5:19 pm 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
а как быть если у меня StringGadget ручной для графического режима? можно что-нибудь сделать?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 31, 2011 6:39 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11179
Благодарил (а): 4 раз.
Поблагодарили: 414 раз.
aristov-96 писал(а):
а как быть если у меня StringGadget ручной для графического режима?
В этом случае все намного проще - программа ведь сама посимвольно добавляет текст и что мешает "фильтровать" ввод символов?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 01, 2011 1:38 pm 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
В этом случае все намного проще - программа ведь сама посимвольно добавляет текст и что мешает "фильтровать" ввод символов?

ну да кстати спасибо всё получилось! :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 20, 2012 12:14 am 
Не в сети
студент

Зарегистрирован: Вс фев 19, 2012 11:38 pm
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Существует более простой и эффективный способ решить проблему ввода с точкой или любому другому шаблону, и дальнейшей обработке вводимых символов, а точнее нажатых клавиш.
Вышеописанные изыскания Петра и др. авторов навела на мысль, что задача не имеет "готового" решения и позволили с экономить значительное время на изучения документации т.к. опыт написания программ на pb у меня ограничен неделей. За что им отдельное спасибо!
Теперь по сути вопроса: StringGadget имеет флаг (параметр) #PB_String_ReadOnly, который не дает вводить символы, но позволяет их выводить! Кроме того, при этом гаджет является активным, и об этом мы можем легко узнать при помощи GetActiveGadget(). Далее обрабатываем коды нажатых клавиш и проверяем при этом активный ли именно тот StringGadget, который нам нужен, а дальше может обрабатывать коды кнопочек как сами хотим: складываем, преобразовываем, ограничиваем длину и т.п. причем, нажатая клавиша и выводимый символ могут, по желанию авторов, не совпадать.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 17, 2012 10:56 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
P.S. Во все вышеприведённые коды можно написать запрещённые символы. Для этого их надо скопировать и вставить в StringGadget()

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 27, 2013 4:26 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Цитата:
kvitaliy писал(а):
Debug msg
это как работает у меня показывает 0.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 27, 2013 4:31 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
mestnyi, это надо в процедуре запускать!

Structure EditProc
Gadget . l
GadgetID . l
*EditWndProc
EndStructure


Global EditProc_1 . EditProc

Procedure EditWndProc ( hwnd , msg , wParam , lParam )
Shared EditProc_1 , EditProc_2
Protected *PointOldEditFunc

If EditProc_1 \ GadgetID = hwnd
Gadget = EditProc_1 \ Gadget
*PointOldEditFunc = EditProc_1 \ EditWndProc
Else
ProcedureReturn 0
EndIf

Debug msg ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
If msg = 258
If wParam = 8 Or ( wParam > = '0' And wParam < = '9' )

ElseIf wParam = '.'
Text . s = GetGadgetText ( Gadget )
If Text < > ""
If FindString ( Text , "." , 1 ) > 0
msg = 0
MessageBeep_ ( #MB_ICONERROR )
EndIf
Else
msg = 0
MessageBeep_ ( #MB_ICONERROR )
EndIf
Else
msg = 0
MessageBeep_ ( #MB_ICONERROR )
EndIf
EndIf

ProcedureReturn CallWindowProc_ ( *PointOldEditFunc , hwnd , msg , wParam , lParam )
EndProcedure

OpenWindow ( 1 , 0 , 0 , 100 , 40 , "" , #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered )
CreateGadgetList ( WindowID ( 1 ) )
StringGadget ( 1 , 10 , 10 , 90 , 20 , "" )

EditProc_1 \ Gadget = 1
EditProc_1 \ GadgetID = GadgetID ( 1 )
EditProc_1 \ EditWndProc = GetWindowLong_ ( EditProc_1 \ GadgetID , #GWL_WNDPROC )
SetWindowLong_ ( EditProc_1 \ GadgetID , #GWL_WNDPROC , @EditWndProc ( ) )

Repeat
Event = WaitWindowEvent ( )
Until Event = #PB_Event_CloseWindow
End

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 29, 2013 8:35 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Кто на моем посте кисточку испытывал? В принципе, прикольно, но жалко нельзя менять шрифт. Ещё размер поменьше сделать. У вас прога какая или сидели вручную раскрашивали?

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 29, 2013 10:09 am 
Не в сети
лентяй ужасный
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 4:23 pm
Сообщений: 646
Благодарил (а): 4 раз.
Поблагодарили: 5 раз.
Никита Однороб писал(а):
Кто на моем посте кисточку испытывал? В принципе, прикольно, но жалко нельзя менять шрифт. Ещё размер поменьше сделать. У вас прога какая или сидели вручную раскрашивали?


Сайт mirashic's напомнило :P


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 29, 2013 11:24 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6306
Благодарил (а): 19 раз.
Поблагодарили: 188 раз.
Пункты репутации: 48
Что есть кисточка?
Код Пети, есть на форуме, чет вчера попался на глаза, ну и я его протестировал на пером коде, который попался.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 29, 2013 11:33 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
kvitaliy писал(а):
ну и я его протестировал на пером коде, который попался.
:D :D . Только так отступы нельзя сделать. Правда, можно залезть в CSS.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ввод дробных чисел в StringGadget
СообщениеДобавлено: Вт сен 17, 2013 10:33 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Цитата:
Кстати, откуда вы берете нужные значенения сообщений, msg = 258; msg = 256?

Вот кому нужно
Код:
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
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
Procedure Die(message.s)
  MessageRequester("Fatal Error", message)
  End
EndProcedure
 
Procedure.s DecodeWindowMessage(message)
  Define Result.s
  Select message
     
    Case 0 : Result = "WM_NULL"
    Case 1 : Result = "WM_CREATE"
    Case 2 : Result = "WM_DESTROY"
    Case 3 : Result = "WM_MOVE"
     
    Case 5 : Result = "WM_SIZE"
    Case 6 : Result = "WM_ACTIVATE"
    Case 7 : Result = "WM_SETFOCUS"
    Case 8 : Result = "WM_KILLFOCUS"
     
    Case 10 : Result = "WM_ENABLE"
    Case 11 : Result = "WM_SETREDRAW"
    Case 12 : Result = "WM_SETTEXT"
    Case 13 : Result = "WM_GETTEXT"
    Case 14 : Result = "WM_GETTEXTLENGTH"
    Case 15 : Result = "WM_PAINT"
    Case 16 : Result = "WM_CLOSE"
    Case 17 : Result = "WM_QUERYENDSESSION"
    Case 18 : Result = "WM_QUIT"
    Case 19 : Result = "WM_QUERYOPEN"
    Case 20 : Result = "WM_ERASEBKGND"
    Case 21 : Result = "WM_SYSCOLORCHANGE"
    Case 22 : Result = "WM_ENDSESSION"
     
    Case 24 : Result = "WM_SHOWWINDOW"
     
    Case 26 : Result = "WM_WININICHANGE"
    Case 26 : Result = "WM_SETTINGCHANGE"
     
    Case 27 : Result = "WM_DEVMODECHANGE"
    Case 28 : Result = "WM_ACTIVATEAPP"
    Case 29 : Result = "WM_FONTCHANGE"
    Case 30 : Result = "WM_TIMECHANGE"
    Case 31 : Result = "WM_CANCELMODE"
    Case 32 : Result = "WM_SETCURSOR"
    Case 33 : Result = "WM_MOUSEACTIVATE"
    Case 34 : Result = "WM_CHILDACTIVATE"
    Case 35 : Result = "WM_QUEUESYNC"
    Case 36 : Result = "WM_GETMINMAXINFO"
     
    Case 38 : Result = "WM_PAINTICON"
    Case 39 : Result = "WM_ICONERASEBKGND"
    Case 40 : Result = "WM_NEXTDLGCTL"
    Case 42 : Result = "WM_SPOOLERSTATUS"
    Case 43 : Result = "WM_DRAWITEM"
    Case 44 : Result = "WM_MEASUREITEM"
    Case 45 : Result = "WM_DELETEITEM"
    Case 46 : Result = "WM_VKEYTOITEM"
    Case 47 : Result = "WM_CHARTOITEM"
    Case 48 : Result = "WM_SETFONT"
    Case 49 : Result = "WM_GETFONT"
    Case 50 : Result = "WM_SETHOTKEY"
    Case 51 : Result = "WM_GETHOTKEY"
     
    Case 55 : Result = "WM_QUERYDRAGICON"
    Case 57 : Result = "WM_COMPAREITEM"
    Case 65 : Result = "WM_COMPACTING"
    Case 68 : Result = "WM_COMMNOTIFY"
    Case 70 : Result = "WM_WINDOWPOSCHANGING"
    Case 71 : Result = "WM_WINDOWPOSCHANGED"
    Case 72 : Result = "WM_POWER"
    Case 74 : Result = "WM_COPYDATA"
    Case 75 : Result = "WM_CANCELJOURNAL"
    Case 78 : Result = "WM_NOTIFY"
     
    Case 80 : Result = "WM_INPUTLANGCHANGEREQUEST"
    Case 81 : Result = "WM_INPUTLANGCHANGE"
    Case 82 : Result = "WM_TCARD"
    Case 83 : Result = "WM_HELP"
    Case 84 : Result = "WM_USERCHANGED"
    Case 85 : Result = "WM_NOTIFYFORMAT"
     
     
    Case 123 : Result = "WM_CONTEXTMENU"
    Case 124 : Result = "WM_STYLECHANGING"
    Case 125 : Result = "WM_STYLECHANGED"
    Case 126 : Result = "WM_DISPLAYCHANGE"
    Case 127 : Result = "WM_GETICON"
    Case 128 : Result = "WM_SETICON"
    Case 129 : Result = "WM_NCCREATE"
    Case 130 : Result = "WM_NCDESTROY"
    Case 131 : Result = "WM_NCCALCSIZE"
    Case 132 : Result = "WM_NCHITTEST"
    Case 133 : Result = "WM_NCPAINT"
    Case 134 : Result = "WM_NCACTIVATE"
    Case 135 : Result = "WM_GETDLGCODE"
    Case 136 : Result = "WM_SYNCPAINT"
     
    Case 160 : Result = "WM_NCMOUSEMOVE"
    Case 161 : Result = "WM_NCLBUTTONDOWN"
    Case 162 : Result = "WM_NCLBUTTONUP"
    Case 163 : Result = "WM_NCLBUTTONDBLCLK"
    Case 164 : Result = "WM_NCRBUTTONDOWN"
    Case 165 : Result = "WM_NCRBUTTONUP"
    Case 166 : Result = "WM_NCRBUTTONDBLCLK"
    Case 167 : Result = "WM_NCMBUTTONDOWN"
    Case 168 : Result = "WM_NCMBUTTONUP"
    Case 169 : Result = "WM_NCMBUTTONDBLCLK"
     
     
     
     
    Case 256 : Result = "WM_KEYFIRST"
     
    Case 256 : Result = "WM_KEYDOWN"
    Case 257 : Result = "WM_KEYUP"
    Case 258 : Result = "WM_CHAR"
    Case 259 : Result = "WM_DEADCHAR"
    Case 260 : Result = "WM_SYSKEYDOWN"
    Case 261 : Result = "WM_SYSKEYUP"
    Case 262 : Result = "WM_SYSCHAR"
    Case 263 : Result = "WM_SYSDEADCHAR"
    Case 264 : Result = "WM_KEYLAST"
     
    Case 272 : Result = "WM_INITDIALOG"
    Case 273 : Result = "WM_COMMAND"
    Case 274 : Result = "WM_SYSCOMMAND"
    Case 275 : Result = "WM_TIMER"
    Case 276 : Result = "WM_HSCROLL"
    Case 277 : Result = "WM_VSCROLL"
    Case 278 : Result = "WM_INITMENU"
    Case 279 : Result = "WM_INITMENUPOPUP"
     
    Case 287 : Result = "WM_MENUSELECT"
    Case 288 : Result = "WM_MENUCHAR"
    Case 289 : Result = "WM_ENTERIDLE"
     
    Case 296 : Result = "WM_UPDATEUISTATE"
    Case 297 : Result = "WM_QVERYUISTATE"
     
    Case 306 : Result = "WM_CTLCOLORMSGBOX"
    Case 307 : Result = "WM_CTLCOLOREDIT"
    Case 308 : Result = "WM_CTLCOLORLISTBOX"
    Case 309 : Result = "WM_CTLCOLORBTN"
    Case 310 : Result = "WM_CTLCOLORDLG"
    Case 311 : Result = "WM_CTLCOLORSCROLLBAR"
    Case 312 : Result = "WM_CTLCOLORSTATIC"
     
     
     
    Case 512 : Result = "WM_MOUSEFIRST"
     
    Case 512 : Result = "WM_MOUSEMOVE"
    Case 513 : Result = "WM_LBUTTONDOWN"
    Case 514 : Result = "WM_LBUTTONUP"
    Case 515 : Result = "WM_LBUTTONDBLCLK"
    Case 516 : Result = "WM_RBUTTONDOWN"
    Case 517 : Result = "WM_RBUTTONUP"
    Case 518 : Result = "WM_RBUTTONDBLCLK"
    Case 519 : Result = "WM_MBUTTONDOWN"
    Case 520 : Result = "WM_MBUTTONUP"
     
    Case 521 : Result = "WM_MBUTTONDBLCLK"
    Case 521 : Result = "WM_MOUSELAST"
     
    Case 522 : Result = "WM_MOUSEWHEEL"
     
    Case 528 : Result = "WM_PARENTNOTIFY"
    Case 529 : Result = "WM_ENTERMENULOOP"
    Case 530 : Result = "WM_EXITMENULOOP"
    Case 531 : Result = "WM_NEXTMENU"
    Case 532 : Result = "WM_SIZING"
    Case 533 : Result = "WM_CAPTURECHANGED"
     
    Case 534 : Result = "WM_MOVING"
    Case 536 : Result = "WM_POWERBROADCAST"
    Case 537 : Result = "WM_DEVICECHANGE"
     
    Case 544 : Result = "WM_MDICREATE"
    Case 545 : Result = "WM_MDIDESTROY"
    Case 546 : Result = "WM_MDIACTIVATE"
    Case 547 : Result = "WM_MDIRESTORE"
    Case 548 : Result = "WM_MDINEXT"
    Case 549 : Result = "WM_MDIMAXIMIZE"
    Case 550 : Result = "WM_MDITILE"
    Case 551 : Result = "WM_MDICASCADE"
    Case 552 : Result = "WM_MDIICONARRANGE"
    Case 553 : Result = "WM_MDIGETACTIVE"
     
    Case 560 : Result = "WM_MDISETMENU"
    Case 561 : Result = "WM_ENTERSIZEMOVE"
    Case 563 : Result = "WM_DROPFILES"
    Case 562 : Result = "WM_EXITSIZEMOVE"
    Case 564 : Result = "WM_MDIREFRESHMENU"
     
    Case 673 : Result = "WM_MOUSEHOVER"
    Case 675 : Result = "WM_MOUSELEAVE"
    Case 674 : Result = "WM_NCMOUSELEAVE"
    Case 641 : Result = "WM_IME_SETCONTEXT"
    Case 642 : Result = "WM_IME_NOTIFY"
     
     
    Case 768 : Result = "WM_CUT"
    Case 769 : Result = "WM_COPY"
    Case 770 : Result = "WM_PASTE"
    Case 771 : Result = "WM_CLEAR"
    Case 772 : Result = "WM_UNDO"
     
    Case 775 : Result = "WM_DESTROYCLIPBOARD"
    Case 776 : Result = "WM_DRAWCLIPBOARD"
    Case 777 : Result = "WM_PAINTCLIPBOARD"
    Case 778 : Result = "WM_VSCROLLCLIPBOARD"
    Case 774 : Result = "WM_RENDERALLFORMATS"
    Case 773 : Result = "WM_RENDERFORMAT"
    Case 779 : Result = "WM_SIZECLIPBOARD"
    Case 780 : Result = "WM_ASKCBFORMATNAME"
    Case 781 : Result = "WM_CHANGECBCHAIN"
    Case 782 : Result = "WM_HSCROLLCLIPBOARD"
    Case 783 : Result = "WM_QUERYNEWPALETTE"
    Case 784 : Result = "WM_PALETTEISCHANGING"
    Case 785 : Result = "WM_PALETTECHANGED"
    Case 786 : Result = "WM_HOTKEY"
    Case 791 : Result = "WM_PRINT"
    Case 792 : Result = "WM_PRINTCLIENT"
     
    Case 856 : Result = "WM_HANDHELDFIRST"
     
    Case 863 : Result = "WM_HANDHELDLAST"
    Case 864 : Result = "WM_AFXFIRST"
     
    Case 895 : Result = "WM_AFXLAST"
    Case 896 : Result = "WM_PENWINFIRST"
     
    Case 911 : Result = "WM_PENWINLAST"
    Case 1024 : Result = "WM_USER"
    Case 32768 : Result = "WM_APP"
     
     
    Default : Result = "НЕ ИЗВЕСТНЫЙ " + Str(message)
  EndSelect
  ProcedureReturn Result
EndProcedure
 
Procedure Callback(WindowID, message, wParam, lParam)
  Result = #PB_ProcessPureBasicEvents
  Debug DecodeWindowMessage(message)
  ProcedureReturn Result
EndProcedure
 
If OpenWindow(0, 0, 0, 500, 100, "Split Picture", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget) Or Die("Failed to Open Window")
  ButtonGadget(0, 5, 5, 130, 25, "Button №2")
  StringGadget(53, 325, 10, 150, 25, "Text №53")
  ComboBoxGadget(8, 170, 10, 120, 25)
  ScrollAreaGadget(1, 0, 50, 780,500, 776, 450, 30)
  ButtonGadget(4, 15, 10, 130, 25, "Button №4")
  StringGadget(3, 225, 10, 150, 25, "Text №3")
  SetWindowCallback(@Callback())
EndIf
 
Repeat
  evt = WaitWindowEvent()
Until evt = #PB_Event_CloseWindow



правда с некоторыми еще не разобрался.


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

Зарегистрирован: Пн апр 06, 2015 3:43 pm
Сообщений: 30
Благодарил (а): 22 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Использую вот этот код:
Код:
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
Structure EditProc 
 Gadget.l   ; Идентификатор гаджета
 GadgetID.l ; Системный идентификатор гаджета (хендл)
 *EditWndProc ; Процедура-обработчик событий
EndStructure
 
 
;Global EditProc_1.EditProc ;Зачем оно тут надо?
 
 
 
Procedure EditWndProc(hwnd, msg, wParam, lParam)
  Protected *PointOldEditFunc  
 
  *GadgetInfa.EditProc = GetWindowLong_(hWnd,#GWL_USERDATA)
  Gadget=*GadgetInfa\Gadget
  *PointOldEditFunc=*GadgetInfa\EditWndProc
 
  If  msg=258
    If wParam>='0' And wParam<='9'
     
      Text.s=GetGadgetText(Gadget)
     
      If Text<>""
        If  Len(StringField(Text,1,".")) >=3
          If FindString(Text, ".", 1)=0
            msg=0
            MessageBeep_(#MB_ICONERROR)
          EndIf
        EndIf
        SendMessage_(hWnd,#EM_GETSEL,@Min,@Max)
       
        If Len(StringField(Text, 2, ".")) >= 2 And Min >= FindString(Text, ".", 1)
          msg=0
          MessageBeep_(#MB_ICONERROR)
        EndIf
      EndIf
     
    ElseIf wParam='.'
     
      SendMessage_(hWnd,#EM_GETSEL,@Min,@Max)
      If Min=0
        MessageBeep_(#MB_ICONERROR)
        ProcedureReturn 0
      EndIf
     
      Text.s=GetGadgetText(Gadget)
      If Text<>""
        If FindString(Text, ".",1)>0
          msg=0
          MessageBeep_(#MB_ICONERROR)
        EndIf
      Else
        msg=0
        MessageBeep_(#MB_ICONERROR)
      EndIf
     
    ElseIf wParam=8
     
    Else
      msg=0
      MessageBeep_(#MB_ICONERROR)
    EndIf
  EndIf
 
  ProcedureReturn CallWindowProc_(*PointOldEditFunc,hwnd, msg, wParam, lParam)
EndProcedure
 
; Создаём StringGadget
Procedure StringGadget_Ex(Gadget, x, y, Width, Height, Content$, Flags=0)
 x=StringGadget(Gadget, x, y, Width, Height, Content$, Flags)
 If x
     *EditProc.EditProc = AllocateMemory(SizeOf(EditProc))
     *EditProc\Gadget=Gadget
     *EditProc\GadgetID=GadgetID(Gadget)
     *EditProc\EditWndProc=GetWindowLong_(*EditProc\GadgetID, #GWL_WNDPROC)
     SetWindowLong_(*EditProc\GadgetID,#GWL_USERDATA, *EditProc)
     SetWindowLong_(*EditProc\GadgetID, #GWL_WNDPROC, @EditWndProc())
 EndIf
ProcedureReturn x
EndProcedure
 
; Удаляем StringGadget
Procedure Free_StringGadget_Ex(Gadget)
 If IsGadget(Gadget)
  If GadgetType(Gadget)=#PB_GadgetType_String
    *mem=GetWindowLong_(GadgetID(Gadget),#GWL_USERDATA)
    If *mem
      FreeMemory(*mem)
    EndIf
    ProcedureReturn FreeGadget(Gadget)
  EndIf
 EndIf
ProcedureReturn 0
EndProcedure
 


Все, гаджеты созданы.
Ограничение на ввод до точки 3 цифры, после точки 2 цыфры... И тут мне нужно добавить StringGadget в котором должно быть до точки 5 знаков, а после точки 3 знака... И как это можно реализовать?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ввод дробных чисел в StringGadget
СообщениеДобавлено: Пт июл 29, 2016 12:04 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 771
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Цитата:
Ограничение на ввод до точки 3 цифры

Код:
1
If  Len(StringField(Text,1,".")) >=3

это замени на это
Код:
1
If  Len(StringField(Text,1,".")) >=5


Цитата:
в котором должно быть до точки 5 знаков

Цитата:
после точки 2 цыфры
Код:
1
If Len(StringField(Text, 2, ".")) >= 2

это замени на это
Код:
1
If Len(StringField(Text, 2, ".")) >= 3


Цитата:
а после точки 3 знака
:D


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

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


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

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


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

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