Спасибо, буду пробовать.
Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике
Сообщений 391 страница 420 из 446
Поделиться39225.01.2012 21:10:56
Есть еще какие-нибудь идеи?
Если я правильно понял суть задачи, нужно просто в текущей директории проанализировать все файлы с расширением *.lng, по их именам и заполнить комбобокс. Так паттерны заполняются - "*.patt".
Поделиться39325.01.2012 21:30:13
Вся фишка в том, что это было релизовано, но я это все заремил и благопалучно забыл. 
Поделиться39426.01.2012 09:38:16
Всем привет.
Тоеой вопрос: язык теперь будет загружатся так
If GetGadgetState(20)=0
LoadText("rus.lng")
Else
LoadText(GetGadgetState(20))
EndIfи
Case 20 LoadText(GetGadgetState(20))
Поделиться39526.01.2012 14:23:37
вопрос
А где вопрос?
Поделиться39626.01.2012 16:21:54
А где вопрос?
А это и был как бы вопрос.
Сейчас текст загружается так:
перед главным циклом такие строки
If GetGadgetState(20)=0
LoadText("rus.lng")
Else
LoadText("eng.lng")
EndIfа в событиях компонентов такие
Case 20
If EventType()=1
Select GetGadgetState(20)
Case 0
LoadText("rus.lng")
Case 1
LoadText("eng.lng")
EndSelect
EndIfПосле добавления автоматического поиска языка код надо будет заменить натакой?
If GetGadgetState(20)=0
LoadText("rus.lng")
Else
LoadText(GetGadgetState(20))
EndIfа в событиях компонентов такие
Case 20
If EventType()=1
LoadText(GetGadgetState(20))
EndIfОтредактировано max (26.01.2012 17:07:10)
Поделиться39726.01.2012 16:55:59
В каком виде хранится текст в выпадающем списке? В виде имен файлов?
Поделиться39826.01.2012 17:09:08
Да, в виде названия языка.
Поделиться39926.01.2012 17:30:15
Тогда так:
LoadText(GetGadgetText(20))
Поделиться40026.01.2012 17:34:08
Так не работает.
Поделиться40126.01.2012 19:22:48
Так не работает.
А что тогда в списке?
Покажи код заполнения выпадающего списка.
Поделиться40226.01.2012 19:29:18
Покажи код заполнения выпадающего списка.
ComboBoxGadget(20, 260, 238, 75, 20) ; Language select
GadgetToolTip(20, "")
;AddGadgetItem(20,-1,"Русский")
;AddGadgetItem(20,-1,"English")
;SetGadgetState(20,0)
;Получает полный путь запущенного приложения
Result$ = ProgramFilename()
;Извлекает путь из полного пути. Например, если полный путь "C:\PureBasic\PB.exe", результат будет "C:\PureBasic\".
Path$ = GetPathPart(Result$)
;Debug Path$
; Просмотр всех элементов директории запущенного приложения (без поддиректорий)
Directory$ = Path$
If ExamineDirectory(0, Directory$, "*.lng")
m=0
While NextDirectoryEntry(0)
AddGadgetItem(20, -1, Left(DirectoryEntryName(0), Len(DirectoryEntryName(0))-4))
lang.s=Language + ".lng"
If DirectoryEntryName(0) = lang
SetGadgetState(20, m)
EndIf
m=m+1
Wend
FinishDirectory(0)
EndIfПоделиться40326.01.2012 19:34:10
Тогда так:
LoadText(GetGadgetText(20)+".lng")
Поделиться40426.01.2012 19:43:25
Спасибо. Так работает. Есть еще вопрос: не могу добится перевода "Случайный". Что можно сделать?
Global rand.s="Случайный"
Procedure Read_sdulist()
; ------- Чтение списка эффектов ------------------------
#FILE_SDU=1
If ReadFile(#FILE_SDU, sdufile)
While Eof(#FILE_SDU)=#False
filesdustr.s=ReadString(#FILE_SDU)
If filesdustr=Language
AddGadgetItem(25, -1, ReadString(#FILE_SDU))
EndIf
Wend
AddGadgetItem(25, -1, rand)
CloseFile(#FILE_SDU)
EndIf
EndProcedureПоделиться40526.01.2012 19:53:33
Нужно перемешать строки в случайном порядке?
Поделиться40626.01.2012 19:58:44
Нет. Надо чтобы в ComboBoxGadget при смене языка менялось название эффекта "Случайный/Random"
Поделиться40726.01.2012 20:15:54
Надо чтобы в ComboBoxGadget при смене языка менялось название эффекта "Случайный/Random"
В той версии что я скачал 23 числа, в выпадающем списке меняется Случайный на Random и обратно.

Поделиться40826.01.2012 20:21:35
А в новой - нет.
Поделиться40926.01.2012 20:30:47
Вспоминай что делал такого, что повлекло за собой этот баг.
Нужно изменять код осторожно чтобы не добавлять ошибок, которых не было.
Поделиться41026.01.2012 21:00:17
В том то и дело, что я ни чего не менял. Это началось с v_2_14_2. В v.2.13 загрузка эффекта организована так:
ComboBoxGadget(25, 90, 208, 80, 20)
GadgetToolTip(25, el22)
; ------- Чтение списка эффектов ------------------------
#FILE_SDU=1
If ReadFile(#FILE_SDU,"effect.sdu")
While Eof(#FILE_SDU)=#False
filesdustr.s=ReadString(#FILE_SDU)
If filesdustr=Language
AddGadgetItem(25, -1, ReadString(#FILE_SDU))
EndIf
Wend
AddGadgetItem(25, -1, el16)
CloseFile(#FILE_SDU)
EndIfа в v_2_14_2 этот код вынесен в
Procedure Read_sdulist()
; ------- Чтение списка эффектов ------------------------
#FILE_SDU=1
If ReadFile(#FILE_SDU, sdufile)
While Eof(#FILE_SDU)=#False
filesdustr.s=ReadString(#FILE_SDU)
If filesdustr=Language
AddGadgetItem(25, -1, ReadString(#FILE_SDU))
EndIf
Wend
AddGadgetItem(25, -1, rand)
CloseFile(#FILE_SDU)
EndIf
EndProcedureВот вроде и все.
Поделиться41126.01.2012 21:22:54
Найди в процедуре LoadText() строку ClosePreferences() и сразу после ее добавь эти строки.
Language=GetGadgetText(20) ClearGadgetItems(25) Read_sdulist()
Поделиться41226.01.2012 21:28:22
Спасибо. То, что доктор прописал. 
Поделиться41328.03.2012 09:31:23
Всем привет!
Стоит задача: при нажатии кнопеи переменной присвоить значение 170, при повторном нажатии - 0. Делаю так:
Global charge.a
Case 92
If EventType()=1
Select GetGadgetState(92)
Case 0
charge = 0
Case 1
charge = 170
EndSelect
EndIfСмотрю дебагером, переменная всегда равна нулю.
Если делаю так:
Case 92
If EventType()=1
Select GetGadgetState(92)
Case 0
charge = 0
Case 1
charge = 170
EndSelect
Debug GetGadgetState(92)
EndIfто дебагер показывает ноль, при нажатии - 1 и так далее, значит нажатие кнопки отрабатывается.
Что не так делаю?
Поделиться41428.03.2012 18:58:15
Все, разобрался:
Case 92
If GetGadgetState(92)=1
charge = 170
Else
charge = 0
EndIfПоделиться41529.03.2012 18:51:12
Привет!
Появилось несколько вопросов:
1. Каким образом можно сделать так, чтобы при нажатии кнопки переменной присваивалось одно значение, при отпускании - другое(кнопка не нажата, bat=0; нажали, bat=170; отпустили, bat=0 и так далее)?
2. Можно ли делать активные/неактивные кнопки? Если да, то где можно почитать?
3. Возможно ли посмотреть данные, которые отправляются в COM-порт? Желательно побайтно.
Поделиться41629.03.2012 20:25:32
1. Каким образом можно сделать так, чтобы при нажатии кнопки переменной присваивалось одно значение, при отпускании - другое(кнопка не нажата, bat=0; нажали, bat=170; отпустили, bat=0 и так далее)?
Обычные кнопки не имеют такой функции. Зачем понадобилось? Возможно можно решить по другому.
2. Можно ли делать активные/неактивные кнопки? Если да, то где можно почитать?
http://purebasic.ru/manual.php?id=478&lng=rus
3. Возможно ли посмотреть данные, которые отправляются в COM-порт? Желательно побайтно.
Принимай побайтно функцией ReadSerialPortData() и смотри что приходит.
Поделиться41729.03.2012 20:38:43
Спасибо.
Зачем понадобилось? Возможно можно решить по другому.
Очередной апгрейд "Pussy Cat" без поводка. Нужно при нажатой кнопке отправить в COM-порт число 170 деватнадцатым байтом
;Вывод данных на RS232
If flgRS232 =1
Dim d.a(21)
*Datas=AllocateMemory(21)
If *Datas
For x = 1 To 18
If usb(x) = 0
d(x) = 0
Else
d (x)= 254
EndIf
Next x
d(19)=bat
;Debug d(19)
;d(19)=Int(GetGadgetState (66))
;d(20)=Int(GetGadgetState (67))
; Заполнение массива.
PokeS(*Datas, Chr(255))
For i=1 To 18
PokeS(*Datas+i, Chr(d(i)))
Next i
WriteSerialPortData(1, *Datas, 21)
FreeMemory(*Datas)
EndIf
EndIfCase 92
bat = 170а при отпускании - 0.
Отредактировано max (29.03.2012 20:41:20)
Поделиться41829.03.2012 21:16:52
Можно немного переделать этот пример. http://purebasic.info/phpBB2/viewtopic. … 2725#32725
Procedure GetGadget(WindowID.l)
Protected cursorpos.POINT
GetCursorPos_(@cursorpos)
MapWindowPoints_(0, WindowID(WindowID), cursorpos, 1)
ProcedureReturn ChildWindowFromPoint_(WindowID(WindowID), cursorpos\x | cursorpos\y<<32)
EndProcedure
OpenWindow(0, 235, 169, 400, 113, "Window_0", #PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
TextGadget(0, 15, 10, 180, 25, "Label")
StringGadget(1, 225, 10, 150, 25, "Text")
ButtonGadget(2, 15, 65, 130, 25, "Button")
Repeat
Event = WaitWindowEvent()
Select Event
Case #WM_LBUTTONDOWN
If GetGadget(0)= GadgetID(0): Debug "Левый клик на TextGadget":EndIf
If GetGadget(0)= GadgetID(1): Debug "Левый клик на StringGadget":EndIf
If GetGadget(0)= GadgetID(2): Debug "Левый клик на ButtonGadget":EndIf
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = 1
Debug "Прочие события String "
ElseIf EventGadget = 2
Debug "Прочие события Button"
EndIf
EndSelect
Until Event= #PB_Event_CloseWindowПоделиться41929.03.2012 21:34:31
Спасибо. Буду пробовать.
А что можете подсказать на счет отправки в порт? Если отправлять 18 байтом, то данные уходят в порт, если 19 - то нет. Нужно именно 19.
Поделиться42029.03.2012 22:56:47
Если отправлять 18 байтом, то данные уходят в порт, если 19 - то нет. Нужно именно 19.
Что вообще не отправляются или последний байт не передается?