Спасибо, буду пробовать.
Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике
Сообщений 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 EndIf
Case 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.
Что вообще не отправляются или последний байт не передается?