Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике
Сообщений 1 страница 30 из 446
Поделиться202.06.2011 21:58:20
Текст помещается в редактор функцией SetGadgetText.
А как поместить туда текстовый файл?
Поделиться302.06.2011 22:05:05
А как поместить туда текстовый файл?
файл туда поместить нелюзя, нужно считать из файла текст и отправить в EditorGadget!
Procedure.s ReadText(File$) If ReadFile(0, File$) Size = Lof(0); размер файла в байтах *String = AllocateMemory(Size); выделяем область памяти If *String ReadData(0, *String , Size); записываем строку в область памяти EndIf CloseFile(0) ProcedureReturn PeekS(*String) FreeMemory(*String) EndIf EndProcedure
Отредактировано Дмитрий (02.06.2011 22:06:06)
Поделиться402.06.2011 22:05:07
Дмитрий выложил код Вопросы новичка (продолжение…)#p3642
Поделиться502.06.2011 22:08:56
нужно считать из файла текст
Лучше вот так, чтобы можно было бы освободить память.
Procedure.s ReadText(File$) Text.s = "" If ReadFile(0, File$) Size = Lof(0); размер файла в байтах If Size>0 *String = AllocateMemory(Size); выделяем область памяти If *String ReadData(0, *String , Size); записываем строку в область памяти Text.s=PeekS(*String) FreeMemory(*String) EndIf EndIf CloseFile(0) EndIf ProcedureReturn Text EndProcedure
Поделиться602.06.2011 22:10:55
ProcedureReturn PeekS(*String)
FreeMemory(*String)
Так тоже работает!
Поделиться702.06.2011 22:14:37
Попробуй так. Если работает, то должно появится окошко с сообщением. Появится ли оно?
ProcedureReturn PeekS(*String) FreeMemory(*String) MessageRequester("", "После ProcedureReturn код не выполняется", #MB_OK)
Поделиться802.06.2011 22:15:38
Спасибо! Завтра попробую. Второй час ночи.
Поделиться1004.06.2011 15:26:03
Привет!
Как перевести на пурик такой код:
Dim col, row For col = 0 To 7 For row = 0 To 7 st_led = (8 * row + col) x(st_led) = xc + (col * 15) y(st_led) = yc + (row * 15) Next Next
Заранее спасибо!
Поделиться1104.06.2011 15:32:07
Первую строку Dim col, row исключаем, т. к. не нужна, а остальное будет без изменений.
Хотя по моему, скобки в математических выражениях, лишние, но можно оставить как есть.
Поделиться1204.06.2011 15:34:05
На строке x(st_led) вылетает ошибка: Не Функция...
Поделиться1304.06.2011 15:37:50
Это или массив или процедура, хз, надо исходник посмотреть.
Поделиться1404.06.2011 15:42:14
Это массивы.
Dim x(63) As Integer 'массив координат светодиодов по X Dim y(63) As Integer 'массив координат светодиодов по Y
На пурике будет
Dim x(63) ;массив координат светодиодов по X Dim y(63) ;массив координат светодиодов по Y
Поделиться1504.06.2011 15:44:48
#xc = 15 ; начало по X #yc = 15 ; начало по Y Dim x(63) ; массив координат светодиодов по X Dim y(63) ; массив координат светодиодов по Y For col = 0 To 7 For row = 0 To 7 st_led = (8 * row + col) x(st_led) = #xc + (col * 15) y(st_led) = #yc + (row * 15) Next Next
Поделиться1604.06.2011 15:52:08
У меня окно вылетает.
#xc = 15 ; начало по X #yc = 15 ; начало по Y Dim x(63) ; массив координат светодиодов по X Dim y(63) ; массив координат светодиодов по Y If OpenWindow(0, 0, 0, 277, 260, "О", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) For col = 0 To 7 For row = 0 To 7 st_led = (8 * row + col) x(st_led) = #xc + (col * 15) y(st_led) = #yc + (row * 15) Next Next EndIf
Поделиться1704.06.2011 15:58:07
А так?
#xc = 15 ; начало по X #yc = 15 ; начало по Y Dim x(63) ; массив координат светодиодов по X Dim y(63) ; массив координат светодиодов по Y If OpenWindow(0, 0, 0, 277, 260, "О", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) For col = 0 To 7 For row = 0 To 7 st_led = (8 * row + col) x(st_led) = #xc + (col * 15) y(st_led) = #yc + (row * 15) Next Next Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
Поделиться1804.06.2011 15:59:53
Точно.
Поделиться1904.06.2011 16:05:18
Что-то у меня ничего не отображается.
#xc = 15 ; начало по X #yc = 15 ; начало по Y Dim x(63) ; массив координат светодиодов по X Dim y(63) ; массив координат светодиодов по Y If OpenWindow(0, 0, 0, 160, 160, "О", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) LoadImage(80, "Фон.bmp") ; change 2nd parameter to the path/filename of your image ImageGadget(80, 6, 6, 148, 148, ImageID(80)) For col = 0 To 7 For row = 0 To 7 st_led = (8 * row + col) x(st_led) = #xc + (col * 15) y(st_led) = #yc + (row * 15) Next Next Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
Должно быть так:
Поделиться2004.06.2011 16:10:25
В коде нет рисования, а только заполнение массива.
Сейчас набросаю пример.
Поделиться2104.06.2011 16:36:46
Создаю меню с помощью CreateMenu, все гаджеты в окне смещаются на 20 пикселей вниз. Такой вопрос: можно ли в строку меню вставить TextGadget как на картинке?
Отредактировано max (04.06.2011 16:38:01)
Поделиться2204.06.2011 16:54:15
В панель инстументов можно, а в меню не пробовал.
В VB.NET рисует меню .NET, а в пурике WinAPI.
Вот пример:
Structure DrawInfo row.c[8] EndStructure CreateImage(0,148,148); Procedure Draw_Image(*Infa.DrawInfo) If StartDrawing(ImageOutput(0)) Box(0,0,148,148,0) ; Очистка рисунка For col = 0 To 7 For row = 0 To 7 x = 20 + col * 15 y = 20 + row * 15 If *Infa\row[row] << col & %10000000 Color = RGB(210, 27, 45) Else Color = RGB(131, 137, 141) EndIf Circle(x, y, 5, Color) Next Next StopDrawing() EndIf EndProcedure Image.DrawInfo If OpenWindow(0, 0, 0, 277, 260, "О", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) Image\row[0]=%11001100 Image\row[1]=%00111100 Image\row[6]=%01010101 Image\row[7]=%10101010 Draw_Image(@Image) ImageGadget(0,20,20,148,148,ImageID(0)) Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
Поделиться2304.06.2011 17:00:34
Спасибо!
Поделиться2404.06.2011 17:18:05
Вот эффект RANDOM.
Structure DrawInfo row.b[8] EndStructure CreateImage(0,148,148); Procedure Draw_Image(*Infa.DrawInfo) If StartDrawing(ImageOutput(0)) Box(0,0,148,148,0) ; Очистка рисунка For col = 0 To 7 For row = 0 To 7 x = 20 + col * 15 y = 20 + row * 15 If *Infa\row[row] << col & %10000000 Color = RGB(210, 27, 45) Else Color = RGB(131, 137, 141) EndIf Circle(x, y, 5, Color) Next Next StopDrawing() EndIf SetGadgetState(0, ImageID(0)) EndProcedure Procedure Timer1() ImageDraw.DrawInfo For i=0 To 7 ImageDraw\row[i] = Random(255) Next i Draw_Image(@ImageDraw) EndProcedure Image.DrawInfo If OpenWindow(0, 0, 0, 277, 260, "О", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ImageGadget(0,20,20,148,148, 0) Draw_Image(@Image) SetTimer_(WindowID(0),2,100, @Timer1() ) Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
Поделиться2604.06.2011 18:35:55
А как опрашивать OptionGadget? В справке не нашел.
Поделиться2704.06.2011 18:44:16
А как опрашивать OptionGadget? В справке не нашел.
Result = GetGadgetState(#OptionGadget)
по идее так...
Поделиться2804.06.2011 19:55:07
Что-то не как не могу разобраться как с помощью EditorGadget и ComboBoxGadget загружать текстовай файл.
Поделиться2904.06.2011 20:03:39
В ComboBoxGadget имена файлов или что?
Поделиться3004.06.2011 20:18:34
Как из ComboBoxGadget загруить текст в EditorGadget.