PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)


Вопросы новичка (продолжение…)

Сообщений 151 страница 180 из 974

151

Пётр написал(а):

Выше я выкладывал код игры, генерирующей лабиринт Вопросы новичка (продолжение…)

Точно! Спасибо.... Буду разбираться...  :writing:

0

152

max написал(а):

мне нужно вставить функцию Left(String$, 2), чтобы она сдвигала на два символа название файла?

Не  понятно, что ты хочешь сделать??? Left() возвращает указанное количество символов из строки, но ничего не сдвигает…

Отредактировано Lucagin (12.01.2011 20:08:52)

0

153

Lucagin написал(а):

Не  понятно, что ты хочешь сделать??? Left() возвращает указанное количество символов из строки, но ничего не сдвигает…

Это мне и надо сделать. Не так сформулировал. Только в данном случае строка - это название файла.

Отредактировано max (12.01.2011 20:08:50)

0

154

Lucagin написал(а):

Ты хочешь к названию исходного файла прибавить два символа?

Да. Первые два будут меняться.

0

155

max написал(а):

Да. Первые два будут меняться.

Используй команду 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)

0

156

Lucagin написал(а):

Используй команду Mid()

Спасибо! Буду разбираться.

0

157

Lucagin написал(а):

Если ты хочешь просто подменять загружаемый файл, то проще наверно целиков перезаписывать значение String.s="456.html" на имя нового  загружаемого файл. Если конечно я правильно понял что тебе надо…

Так оно и есть. :flag:

Пробывал подменять, не работает.

Код:
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)

0

158

max написал(а):

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)

0

159

Здравствуйте, у меня возникла проблема с EditorGadjet, я в него вывожу определённый результат обработки в виде строк текста, как сделать так, чтобы если строка не вмещается по длине EditorGadjet, то те слова, которые не влезли автоматически переносились на другую строку? в VB6 это делала MultiLine, думал и тут есть Flag отвечающий за это, но не в Visual Designer нету об этом ничего и в справки нету так же ничего, как это можно сделать?

0

160

Код:
"текст на первой строке"+Chr(10)+Chr(13)+ " текст на второй строке"

0

161

Lucagin написал(а):

А что за гаджет у тебя с идентификатором 20??Может быть или статус гаджета не меняется или условный оператор(If GetGadgetState(20)=0 ), проверяющий статус гаджета, проверяется не в цикле (постоянно с какой-то частотой) а единоразово… Сложно судить не видя кода…

Я пробывал так:

Код:
String.s="456.html"  
   WebGadget(1, 10, 10, 780, 480, "file://"+GetPathPart(ProgramFilename())+ String )

Не работает.

0

162

goodwen написал(а):

VB6 это делала MultiLine

Ты не путаешь? В VB6 Text это соответствует Пуриковскому StringGadget. Editor соответствует RichText, а там MultiLine всегда по умолчанию.
Тебе может надо

Код:
StringGadget(#String_1, 45, 200, 250, 115, "Gadget_1", #ES_MULTILINE)

Хотя в EditorGadget тоже можно перенос включить, просто не помню как. Но можно поискать.

0

163

max написал(а):

Я пробывал так:

URL меняется так:

SetGadgetText(#Web_8,"file://"+GetPathPart(ProgramFilename())+ String)

0

164

ВиниПур написал(а):

Но можно поискать.

Нашел:

Код:
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

0

165

ВиниПур написал(а):

URL меняется так:

Попробуем.

0

166

max написал(а):

Попробуем.

А что выдаёт это

Код:
debug "file://"+GetPathPart(ProgramFilename())+ String

0

167

ВиниПур, меня сбило то, что в справке про StringGadget написано:

Этот гаджет отображает только одну строку текста. Для многострочного ввода используйте функцию EditorGadget().

А я последовательно по одной строке ввожу, и использую chr(13) для разделения и при этом нужно, чтобы текст автоматически переносился если не вмещаются. Пробовал для решения того, что слова автоматически переносились на другую строку добавить в код:

Код:
StringGadget(#String_1, 45, 200, 250, 115, "Gadget_1", #ES_MULTILINE)

И ничего не изменилось. В EditorGadgete удобно то, что автоматически появляется полоса прокрутки.

Отредактировано goodwen (12.01.2011 22:24:40)

0

168

Пётр написал(а):

А что выдаёт это

Путь к файлу правильный, а не работает.

Отредактировано max (12.01.2011 22:35:04)

0

169

ВиниПур, нашёл, как включить для 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)

0

170

max написал(а):

Путь к файлу правильный, а не работает.

Вот пример, только названия файлов свои подставь...

Код:
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)

0

171

goodwen написал(а):

Но почему тогда у меня перенос не работает для 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

0

172

Пётр написал(а):

#ES_MULTILINE | #ESB_DISABLE_LEFT | #ESB_DISABLE_RIGHT | #ES_AUTOVSCROLL | #WS_VSCROLL

А откуда берутся эти константы, вроде в справке как 'Flags’  они не указаны??? :question:

Отредактировано Lucagin (12.01.2011 23:09:25)

0

173

goodwen написал(а):

Но почему тогда у меня перенос не работает для StringGadgeta с кодом:

A у тебя случайно не Демо версия? На #ES_MULTILINE не ругается?

max написал(а):

Путь к файлу правильный, а не работает.

Сделай путь без русских букв и лишних точек в названии. Или надо использовать преобразование для HTML- URLEncoder(URL$)
B будет тебе счастье!

0

174

Lucagin написал(а):

А откуда берутся эти константы, вроде в справке как 'Flags’  они не указаны???

Это WinAPI константы.

ВиниПур написал(а):

A у тебя случайно не Демо версия? На #ES_MULTILINE не ругается?

Не думаю.
#ES_MULTILINE - разрешает многострочный режим, а не перенос по словам!

0

175

ВиниПур, не у меня полная версия, мне Пётр написал выше, как сделать, спасибо за помощь Вам обоим.

0

176

Пётр написал(а):

Это WinAPI константы.

А что их можно применять не только с API-функциями, но и в гаджетах PB???
Где можно посмотреть, какие гаджеты и функии PB, из стандартных, будут реагировать на API-константы...?

Отредактировано Lucagin (12.01.2011 23:21:07)

0

177

Lucagin написал(а):

А что их можно применять не только с API-функциями, но и в гаджетах PB???

Ну да.
Гаджеты основаны на API контролах конкретной платформы (Windows, Linux, MoacOS X).

0

178

Пётр написал(а):

Ну да.Гаджеты основаны на API контролах конкретной платформы (Windows, Linux, MoacOS X).

Мда, век живи век учись... Надо учить Api... :writing:

0

179

Вот создание окна и гаджетов на 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

0

180

Пётр написал(а):

Вот создание окна и гаджетов на WinAPI

Спасибо,Пётр, за пример!!! Буда изучать...

Похоже надо писать свою справку по Api, чтобы как-то систематизировать, те знания, что встречаются в примерах на форуме…
Другого выхода пока не вижу, как-то ни к одной из доступных стправок по API пока не приспособлюсь, чтобы было также удобно работать , как с русской по PB… :dontknow:

Вобщем надо больше тренироваться…  :disappointed:

Отредактировано Lucagin (13.01.2011 00:04:00)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)