Выше я выкладывал код игры, генерирующей лабиринт Вопросы новичка (продолжение…)
Точно! Спасибо.... Буду разбираться...
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)
Выше я выкладывал код игры, генерирующей лабиринт Вопросы новичка (продолжение…)
Точно! Спасибо.... Буду разбираться...
мне нужно вставить функцию Left(String$, 2), чтобы она сдвигала на два символа название файла?
Не понятно, что ты хочешь сделать??? Left() возвращает указанное количество символов из строки, но ничего не сдвигает…
Отредактировано Lucagin (12.01.2011 20:08:52)
Не понятно, что ты хочешь сделать??? Left() возвращает указанное количество символов из строки, но ничего не сдвигает…
Это мне и надо сделать. Не так сформулировал. Только в данном случае строка - это название файла.
Отредактировано max (12.01.2011 20:08:50)
Ты хочешь к названию исходного файла прибавить два символа?
Да. Первые два будут меняться.
Да. Первые два будут меняться.
Используй команду Mid() она возвращает подстроку из указанной строки с нужного места и нужной длины…
; Открываем окно If OpenWindow(0, 0, 0, 800, 500, "WebGadget", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible) String.s="456.html" WebGadget(1, 10, 10, 780, 480, "file://"+GetPathPart(ProgramFilename())+ String ) ; Браузер, отображающий выбираемые странички Debug Mid(String, -6, 2) HideWindow(0,0) ; Отображение окна Repeat ; Это главный цикл прогаммы - обработчик событий. Мы отслеживаем только закрытие окна Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf End ; Типа всё, программа завершает работу WebGadget(1, 10, 10, 780, 480, "file://"+GetPathPart(ProgramFilename())+"456.htm")
Если ты хочешь просто подменять загружаемый файл, то проще наверно целиков перезаписывать значение String.s="456.html" на имя нового загружаемого файл. Если конечно я правильно понял что тебе надо…
Отредактировано Lucagin (12.01.2011 20:24:39)
Используй команду Mid()
Спасибо! Буду разбираться.
Если ты хочешь просто подменять загружаемый файл, то проще наверно целиков перезаписывать значение String.s="456.html" на имя нового загружаемого файл. Если конечно я правильно понял что тебе надо…
Так оно и есть.
Пробывал подменять, не работает.
String.s="456.html" If GetGadgetState(20)=0 String.s="457.html" EndIf WebGadget(1, 10, 10, 780, 480, "file://"+GetPathPart(ProgramFilename())+ String ) ; Браузер, отображающий выбираемые странички
Отредактировано max (12.01.2011 20:47:40)
String.s="456.html"
If GetGadgetState(20)=0
String.s="457.html"
EndIf
WebGadget(1, 10, 10, 780, 480, "file://"+GetPathPart(ProgramFilename())+ String ) ; Браузер, отображающий выбираемые странички
А что за гаджет у тебя с идентификатором 20??
Может быть или статус гаджета не меняется или условный оператор(If GetGadgetState(20)=0 ), проверяющий статус гаджета, проверяется не в цикле (постоянно с какой-то частотой) а единоразово…
Сложно судить не видя кода…
Отредактировано Lucagin (12.01.2011 21:08:36)
Здравствуйте, у меня возникла проблема с EditorGadjet, я в него вывожу определённый результат обработки в виде строк текста, как сделать так, чтобы если строка не вмещается по длине EditorGadjet, то те слова, которые не влезли автоматически переносились на другую строку? в VB6 это делала MultiLine, думал и тут есть Flag отвечающий за это, но не в Visual Designer нету об этом ничего и в справки нету так же ничего, как это можно сделать?
"текст на первой строке"+Chr(10)+Chr(13)+ " текст на второй строке"
А что за гаджет у тебя с идентификатором 20??Может быть или статус гаджета не меняется или условный оператор(If GetGadgetState(20)=0 ), проверяющий статус гаджета, проверяется не в цикле (постоянно с какой-то частотой) а единоразово… Сложно судить не видя кода…
Я пробывал так:
String.s="456.html" WebGadget(1, 10, 10, 780, 480, "file://"+GetPathPart(ProgramFilename())+ String )
Не работает.
VB6 это делала MultiLine
Ты не путаешь? В VB6 Text это соответствует Пуриковскому StringGadget. Editor соответствует RichText, а там MultiLine всегда по умолчанию.
Тебе может надо
StringGadget(#String_1, 45, 200, 250, 115, "Gadget_1", #ES_MULTILINE)
Хотя в EditorGadget тоже можно перенос включить, просто не помню как. Но можно поискать.
Я пробывал так:
URL меняется так:
SetGadgetText(#Web_8,"file://"+GetPathPart(ProgramFilename())+ String)
Но можно поискать.
Нашел:
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) EditorGadget(1,10,10,480,230,0) SendMessage_(GadgetID(1),#EM_SETTARGETDEVICE,#Null,0) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf
URL меняется так:
Попробуем.
Попробуем.
А что выдаёт это
debug "file://"+GetPathPart(ProgramFilename())+ String
ВиниПур, меня сбило то, что в справке про StringGadget написано:
Этот гаджет отображает только одну строку текста. Для многострочного ввода используйте функцию EditorGadget().
А я последовательно по одной строке ввожу, и использую chr(13) для разделения и при этом нужно, чтобы текст автоматически переносился если не вмещаются. Пробовал для решения того, что слова автоматически переносились на другую строку добавить в код:
StringGadget(#String_1, 45, 200, 250, 115, "Gadget_1", #ES_MULTILINE)
И ничего не изменилось. В EditorGadgete удобно то, что автоматически появляется полоса прокрутки.
Отредактировано goodwen (12.01.2011 22:24:40)
А что выдаёт это
Путь к файлу правильный, а не работает.
Отредактировано max (12.01.2011 22:35:04)
ВиниПур, нашёл, как включить для Editor:
EditorGadget(#Editor_0, 10, 310, 620, 230) SendMessage_(GadgetID(#Editor_0),#EM_SETTARGETDEVICE, #Null, 0)
Но почему тогда у меня перенос не работает для StringGadgeta с кодом:
StringGadget(#String_1, 45, 200, 250, 115, "Gadget_1", #ES_MULTILINE)
Путь к файлу правильный, а не работает.
Вот пример, только названия файлов свои подставь...
Global FontID2 FontID2 = LoadFont(6, "Arial", 12) Enumeration #Button_0 EndEnumeration ; Открываем окно If OpenWindow(0, 0, 0, 800, 500, "WebGadget", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible) String.s="345.html" WebGadget(1, 10, 10, 780, 440, "file://"+GetPathPart(ProgramFilename())+ String ) ; Браузер, отображающий выбираемые странички ButtonGadget(#Button_0, 10, 460, 100, 30, "Изенить", #PB_Button_Toggle) SetGadgetFont(#Button_0, FontID2) HideWindow(0,0) ; Отображение окна Repeat ; Это главный цикл прогаммы - обработчик событий. Мы отслеживаем только закрытие окна event=WaitWindowEvent(100) Gadget=EventGadget() If event=#PB_Event_Gadget If Gadget=#Button_0 If GetGadgetState(#Button_0)=1 String="456.html" Else String="345.html" EndIf SetGadgetText(1,"file://"+GetPathPart(ProgramFilename())+ String) ;Debug "file://"+GetPathPart(ProgramFilename())+ String EndIf EndIf Until event = #PB_Event_CloseWindow EndIf End
код-архив: http://ifolder.ru/21287707
Отредактировано Lucagin (12.01.2011 22:54:46)
Но почему тогда у меня перенос не работает для StringGadgeta с кодом:
Так надо:
If OpenWindow(0,0,0,640,480,"",#PB_Window_SystemMenu) StringGadget(0,8,8,626,466,"",#ES_MULTILINE | #ESB_DISABLE_LEFT | #ESB_DISABLE_RIGHT | #ES_AUTOVSCROLL | #WS_VSCROLL) Repeat Until WaitWindowEvent()=#PB_Event_CloseWindow EndIf
#ES_MULTILINE | #ESB_DISABLE_LEFT | #ESB_DISABLE_RIGHT | #ES_AUTOVSCROLL | #WS_VSCROLL
А откуда берутся эти константы, вроде в справке как 'Flags’ они не указаны???
Отредактировано Lucagin (12.01.2011 23:09:25)
Но почему тогда у меня перенос не работает для StringGadgeta с кодом:
A у тебя случайно не Демо версия? На #ES_MULTILINE не ругается?
Путь к файлу правильный, а не работает.
Сделай путь без русских букв и лишних точек в названии. Или надо использовать преобразование для HTML- URLEncoder(URL$)
B будет тебе счастье!
А откуда берутся эти константы, вроде в справке как 'Flags’ они не указаны???
Это WinAPI константы.
A у тебя случайно не Демо версия? На #ES_MULTILINE не ругается?
Не думаю.
#ES_MULTILINE - разрешает многострочный режим, а не перенос по словам!
ВиниПур, не у меня полная версия, мне Пётр написал выше, как сделать, спасибо за помощь Вам обоим.
Это WinAPI константы.
А что их можно применять не только с API-функциями, но и в гаджетах PB???
Где можно посмотреть, какие гаджеты и функии PB, из стандартных, будут реагировать на API-константы...?
Отредактировано Lucagin (12.01.2011 23:21:07)
А что их можно применять не только с API-функциями, но и в гаджетах PB???
Ну да.
Гаджеты основаны на API контролах конкретной платформы (Windows, Linux, MoacOS X).
Ну да.Гаджеты основаны на API контролах конкретной платформы (Windows, Linux, MoacOS X).
Мда, век живи век учись... Надо учить Api...
Вот создание окна и гаджетов на WinAPI
Procedure WindowCallback(Window, Message, wParam, lParam) Select Message Case #WM_CLOSE If MessageBox_(Window, "Закрыть программу?", "EXIT", #MB_YESNO) = #IDYES DestroyWindow_(Window) Else Result = 0 EndIf Case #WM_DESTROY PostQuitMessage_(0) Result = 0 Default Result = DefWindowProc_(Window, Message, wParam, lParam) EndSelect ProcedureReturn Result EndProcedure InitCommonControls_() #Style = #WS_VISIBLE | #WS_BORDER | #WS_SYSMENU #StyleEx = #WS_EX_TOOLWINDOW WindowClass.s = "MeinFenster" wc.WNDCLASSEX wc\cbsize = SizeOf(WNDCLASSEX) wc\lpfnWndProc = @WindowCallback() wc\hCursor = LoadCursor_(0, #IDC_CROSS) wc\hbrBackground = #COLOR_WINDOW wc\lpszClassName = @WindowClass RegisterClassEx_(@wc) hWndMain = CreateWindowEx_(#StyleEx, WindowClass, "Test-Window", #Style, 100, 100, 200, 200, 0, 0, 0, 0) CreateWindowEx_(0, "Static", "TextGadget", #WS_CHILD | #WS_VISIBLE , 9, 90, 102, 22, hWndMain, 0, 0, 0) CreateWindowEx_(0, "Button", "ButtonGadget", #WS_CHILD | #WS_VISIBLE, 10, 10, 100, 20, hWndMain, 0, 0, 0) ShowWindow_(hWndMain, #SW_SHOWDEFAULT) UpdateWindow_(hWndMain); While GetMessage_(msg.MSG, #Null, 0, 0 ) TranslateMessage_(msg) DispatchMessage_(msg) Wend
Вот создание окна и гаджетов на WinAPI
Спасибо,Пётр, за пример!!! Буда изучать...
Похоже надо писать свою справку по Api, чтобы как-то систематизировать, те знания, что встречаются в примерах на форуме…
Другого выхода пока не вижу, как-то ни к одной из доступных стправок по API пока не приспособлюсь, чтобы было также удобно работать , как с русской по PB…
Вобщем надо больше тренироваться…
Отредактировано Lucagin (13.01.2011 00:04:00)
Какая версия? | OffTop | 03.10.2021 |
Мне постоянно пищет вот это | Вопросы по PureBasic | 14.10.2011 |
Размер экрана в пикселях | Вопросы по PureBasic | 13.02.2011 |
консоль | Вопросы по PureBasic | 19.03.2015 |
Полноэкранные приложения на purebasic | Вопросы по PureBasic | 08.03.2011 |
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)