PureBasic - форум

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

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


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


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

Сообщений 361 страница 390 из 974

361

Моя программа создаёт 2 окна. Я так понимаю что знчек этих окон указывается не кодом, а в самой оболочке Pure Basic в настройках. Значит все 2 созданные моей программой окна будут под одним и тем же значком. А нелзя зделать так чтобы 2 окна были под разными значками?

0

362

Код:
Enumeration
 #Window_0
 #Window_1
 #But
EndEnumeration


OpenWindow(#Window_0,0,0,380,200,"Окно",#PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 ButtonGadget(#But,10,50,80,20,"")
 
 IconHandle=ExtractIcon_(#Window_0,"c:\windows\system32\shell32.dll",130) 
 SetWindowIcon(WindowID(#Window_0),IconHandle) 

Repeat
Event =  WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget()
  Select Event
   Case #PB_Event_Gadget
    Select EventGadget()
     Case #But
        OpenWindow(#Window_1,200,100,380,200,"Окно",#PB_Window_SystemMenu)
         IconHandle=ExtractIcon_(#Window_1,"c:\windows\system32\shell32.dll",70) 
         SetWindowIcon(WindowID(#Window_1),IconHandle) 
   EndSelect             
  EndSelect  
If Event = #PB_Event_CloseWindow
 Break         
EndIf
ForEver

в место IconHandle загружаешь свои иконки.

Отредактировано mirashic (27.02.2011 21:40:07)

0

363

У меня почему-то ошибка вылетает, хотя я и менял на свою иконку.

0

364

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

У меня почему-то ошибка вылетает

Это друпия не установлена.
Так должно компилироваться:

Код:
Enumeration
 #Window_0
 #Window_1
 #But
EndEnumeration


OpenWindow(#Window_0,0,0,380,200,"Окно",#PB_Window_MinimizeGadget|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 ButtonGadget(#But,10,50,80,20,"")
 
 IconHandle=ExtractIcon_(#Window_0,"c:\windows\system32\shell32.dll",130) 
 SendMessage_(WindowID(#Window_0),#WM_SETICON,0,IconHandle) 

Repeat
Event =  WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget()
  Select Event
   Case #PB_Event_Gadget
    Select EventGadget()
     Case #But
        OpenWindow(#Window_1,200,100,380,200,"Окно",#PB_Window_SystemMenu)
         IconHandle=ExtractIcon_(#Window_1,"c:\windows\system32\shell32.dll",70) 
         SendMessage_(WindowID(#Window_1),#WM_SETICON,0,IconHandle) 
   EndSelect             
  EndSelect  
If Event = #PB_Event_CloseWindow
 Break         
EndIf
ForEver

0

365

Ага спасибо, теперь работает

0

366

Если в окне есть избражение (ImageGadget) то все остальные гаджеты которые появляются после изображения использовать невозможно. Есть конечно выход разместить гаджет до изображения, но в моей программе это очень неудобно. Может есть ещё способ разместить гаджет после изображения, и чтоб он был работоспособен?

Вот например:

Код:
OpenWindow(0,10,10,500,200,"окно")
UseJPEGImageDecoder()
LoadImage(1, "b.jpg")  
      ImageGadget(888,  0, 0, 0, 0, ImageID(1))
      ButtonGadget(2,10,10,100,100,"button1")
Repeat
q=WaitWindowEvent()
If EventGadget()=2
Debug "Гаджет был нажат!!!"
EndIf
Until q=#PB_Event_CloseWindow

Отредактировано Илья (28.02.2011 00:01:56)

0

367

А если попробовать так?

Код:
ImageGadget(888,  0, 0, 0, 0, ImageID(1)) : DisableGadget(888,1)

0

368

Получилось, спс

0

369

Потребовалось написать маленькую программку. Лет 20 этим не занимался, поэтому посмотрел, какие сейчас есть языки и остановился на РВ. Написал следующее

Код:
Enumeration
  #Window_0
EndEnumeration
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 600, 300, "Stud") And CreateGadgetList(WindowID(#Window_0))
 Repeat
      ButtonGadget(#Button_1, 40, 30, 30, 30, "clear")
      ButtonGadget(#Button_0, 80, 30, 30, 30, "1")
      ButtonGadget(#Button_2, 120, 30, 30, 30, "2")
      ButtonGadget(#Button_3, 40, 100, 30, 30, "3",#PB_Button_Toggle)
      ButtonGadget(#Button_4, 80, 100, 30, 30, "4",#PB_Button_Toggle)
      ButtonGadget(#Button_5, 120, 100, 30, 30, "5",#PB_Button_Toggle)
      ButtonGadget(#Button_6, 40, 140, 30, 30, "6",#PB_Button_Toggle)
      ButtonGadget(#Button_7, 80, 140, 30, 30, "7",#PB_Button_Toggle)
      ButtonGadget(#Button_8, 120, 140, 30, 30, "8",#PB_Button_Toggle)
      ButtonGadget(#Button_9, 40, 180, 30, 30, "9",#PB_Button_Toggle)
      ButtonGadget(#Button_10, 80, 180, 30, 30, "10",#PB_Button_Toggle)
      ButtonGadget(#Button_11, 120, 180, 30, 30, "11",#PB_Button_Toggle)
      ButtonGadget(#Button_12, 40, 220, 30, 30, "12",#PB_Button_Toggle)
      ButtonGadget(#Button_13, 80, 220, 30, 30, "13",#PB_Button_Toggle)
      ButtonGadget(#Button_14, 120, 220, 30, 30, "14",#PB_Button_Toggle)
  Repeat
 
 If A=#PB_Event_Gadget
  B= EventGadget()
  MessageRequester("Сообщение", "Нажата кнопка "+Str(B)+Str(C), 0) ; это для контроля, потом уберу
  If B<3
    C=B
  EndIf
 EndIf
 A= WaitWindowEvent()
 If A=#PB_Event_CloseWindow
  Q=1
 EndIf
Until EventGadget()=1
Until B=1 And Q=1

EndIf
End

Надо сделать кнопки в верхнем ряду цветными, но никак не получается. Честно прочитал учебники и "Вопросы новичка" но ничего не нашел.  Правда у меня ХР, а в примечании к "цветным" операторам написано, что в ХР там что-то не отражается.

Отредактировано a1951 (01.03.2011 13:49:43)

0

370

Так подходит ?

Код:
Enumeration
  #Window_0
EndEnumeration

 Procedure.l MyImage(ImageNumber.l,text.s, Color.l) 
  ImageID.l = CreateImage(ImageNumber, 30, 30) 
  StartDrawing(ImageOutput(ImageNumber)) 
  Box(0, 0,30,30, Color)
   DrawText( 11,6,text,RGB(255, 241, 238),Color.l )
  StopDrawing() 
  ProcedureReturn ImageID 
 EndProcedure 

Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 600, 300, "Stud") And CreateGadgetList(WindowID(#Window_0))
 Repeat
      ButtonGadget(#Button_1, 40, 30, 30, 30, "clear")
      ButtonImageGadget(#Button_0, 80, 30, 30, 30,MyImage(#Button_0,"1",RGB(249, 53, 6)))
      ButtonImageGadget(#Button_2, 120, 30, 30, 30,MyImage(#Button_2,"2",RGB(120, 192, 241)))
      ButtonGadget(#Button_3, 40, 100, 30, 30, "3",#PB_Button_Toggle)
      ButtonGadget(#Button_4, 80, 100, 30, 30, "4",#PB_Button_Toggle)
      ButtonGadget(#Button_5, 120, 100, 30, 30, "5",#PB_Button_Toggle)
      ButtonGadget(#Button_6, 40, 140, 30, 30, "6",#PB_Button_Toggle)
      ButtonGadget(#Button_7, 80, 140, 30, 30, "7",#PB_Button_Toggle)
      ButtonGadget(#Button_8, 120, 140, 30, 30, "8",#PB_Button_Toggle)
      ButtonGadget(#Button_9, 40, 180, 30, 30, "9",#PB_Button_Toggle)
      ButtonGadget(#Button_10, 80, 180, 30, 30, "10",#PB_Button_Toggle)
      ButtonGadget(#Button_11, 120, 180, 30, 30, "11",#PB_Button_Toggle)
      ButtonGadget(#Button_12, 40, 220, 30, 30, "12",#PB_Button_Toggle)
      ButtonGadget(#Button_13, 80, 220, 30, 30, "13",#PB_Button_Toggle)
      ButtonGadget(#Button_14, 120, 220, 30, 30, "14",#PB_Button_Toggle)
  Repeat
 
 If A=#PB_Event_Gadget
  B= EventGadget()
  MessageRequester("Сообщение", "Нажата кнопка "+Str(B)+Str(C), 0) ; это для контроля, потом уберу
  If B<3
    C=B
  EndIf
 EndIf
 A= WaitWindowEvent()
 If A=#PB_Event_CloseWindow
  Q=1
 EndIf
Until EventGadget()=1
Until B=1 And Q=1

EndIf
End

0

371

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

Правда у меня ХР, а в примечании к "цветным" операторам написано, что в ХР там что-то не отражается.

Да это так, но можно отключить стиль WinXP.
А для изменения цвета кнопки нужно скачать и установить библиотеку PureCOLOR http://gnozal.ucoz.com/#UserLibs

Код:
Enumeration
  #Window_0
EndEnumeration
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
EndEnumeration

ThemeLibID = OpenLibrary(#PB_Any,"UxTheme.dll") 


If OpenWindow(#Window_0, 216, 0, 600, 300, "Stud")
  ButtonGadget(#Button_1, 40, 30, 30, 30, "clear")
  CallFunction(ThemeLibID, "SetWindowTheme",GadgetID(#Button_1) , @"", @"") ; Выключаем стиль WinXP для кнопки
  PureCOLOR_SetButtonColor(#Button_1, 0, $6E77FA) ; Устанавливаем цвет кнопки
  ButtonGadget(#Button_0, 80, 30, 30, 30, "1")
  ButtonGadget(#Button_2, 120, 30, 30, 30, "2")
  ButtonGadget(#Button_3, 40, 100, 30, 30, "3",#PB_Button_Toggle)
  ButtonGadget(#Button_4, 80, 100, 30, 30, "4",#PB_Button_Toggle)
  ButtonGadget(#Button_5, 120, 100, 30, 30, "5",#PB_Button_Toggle)
  ButtonGadget(#Button_6, 40, 140, 30, 30, "6",#PB_Button_Toggle)
  ButtonGadget(#Button_7, 80, 140, 30, 30, "7",#PB_Button_Toggle)
  ButtonGadget(#Button_8, 120, 140, 30, 30, "8",#PB_Button_Toggle)
  ButtonGadget(#Button_9, 40, 180, 30, 30, "9",#PB_Button_Toggle)
  ButtonGadget(#Button_10, 80, 180, 30, 30, "10",#PB_Button_Toggle)
  ButtonGadget(#Button_11, 120, 180, 30, 30, "11",#PB_Button_Toggle)
  ButtonGadget(#Button_12, 40, 220, 30, 30, "12",#PB_Button_Toggle)
  ButtonGadget(#Button_13, 80, 220, 30, 30, "13",#PB_Button_Toggle)
  ButtonGadget(#Button_14, 120, 220, 30, 30, "14",#PB_Button_Toggle)
  Repeat
    Event = WaitWindowEvent()
    If Event=#PB_Event_Gadget
      Gadget = EventGadget()
      MessageRequester("Сообщение", "Нажата кнопка "+Str(B)+Str(C), 0) ; это для контроля, потом уберу
      If Gadget<3
        C=Gadget
      EndIf
    EndIf
  Until Event=#PB_Event_CloseWindow
  
EndIf
CloseLibrary(ThemeLibID) 
End

0

372

Спасибо, попробую.
Я предполагал что здесь есть какой-то оператор, чтобы дать цвет гаджету (кнопке), а тут просто рисуется квадрат на этих координатах.
Это я только на пробу немного кнопок нарисовал, а так их штук 60 будет.
Кроме того после нажатия кнопки из верхнего ряда будет нажата кнопка из нижних рядов и она должна получить цвет той кнопки, а при нажатии Clear все должно вернутся в исходное состояние (без цвета).

0

373

Пока писал ответ увидел в другом ответе PureColor. Похоже это то, на что я рассчитывал.
Буду пробовать.
Спасибо

0

374

Скажите, а какой оператор закрывает все гаджеты?

0

375

Илья написал(а):

Скажите, а какой оператор закрывает все гаджеты?

Гаждет можно уничтожить с помощью функции FreeGadget.
Если нужно просто скрыть (сделать не видимым не уничтожая), то можно использовать функцию HideGadget.

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

Это я только на пробу немного кнопок нарисовал, а так их штук 60 будет.Кроме того после нажатия кнопки из верхнего ряда будет нажата кнопка из нижних рядов и она должна получить цвет той кнопки,

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

Правда у меня ХР, а в примечании к "цветным" операторам написано, что в ХР там что-то не отражается.

Можно отключить в свойствах проекта стиль WinXP.

0

376

Из этих обозначений

Код:
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
EndEnumeration

можно сделать массив, чтобы потом его использовать в цикле с оператором  PureCOLOR_SetButtonColor(#Button_3, 0, $6E77FA) ???
Аналогично, из обозначений цвета можно сделать массив ?? это будет массив символьных(текстовых) переменных?
Я еще в здешней терминологии не силен.(((

Отредактировано a1951 (01.03.2011 17:46:58)

0

377

используй нумерацию от 0 до ....

Код:
Enumeration  
  #Window_0=150 
  #image 
  #Ima 
 EndEnumeration 
 
 Procedure.l MyImage(ImageNumber.l, Color.l) 
  ImageID.l = CreateImage(ImageNumber, 40, 40) 
  StartDrawing(ImageOutput(ImageNumber)) 
  Box(0, 0,40,40, Color) 
  StopDrawing() 
  ProcedureReturn ImageID 
 EndProcedure
  


OpenWindow (#Window_0, 0, 0, 490, 490, "Заглавие", #PB_Window_MinimizeGadget |#PB_Window_ScreenCentered|#PB_Window_SizeGadget)  
 For a=0 To 224 
  RGB=Random(15176728)
  If 5+(40*a)<446 
  ButtonImageGadget(a,5+(40*a), 5, 40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<926 
  ButtonImageGadget(a,5+(40*(a-12)),45, 40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<1406  
  ButtonImageGadget(a,5+(40*(a-24)),85, 40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<1886  
  ButtonImageGadget(a,5+(40*(a-36)),125,40,40,MyImage(a,RGB))  
  ElseIf 5+(40*a)<2366  
  ButtonImageGadget(a,5+(40*(a-48)),165,40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<2846  
  ButtonImageGadget(a,5+(40*(a-60)),205,40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<3326  
  ButtonImageGadget(a,5+(40*(a-72)),245,40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<3806  
  ButtonImageGadget(a,5+(40*(a-84)),285,40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<4286  
  ButtonImageGadget(a,5+(40*(a-96)),325,40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<4766  
  ButtonImageGadget(a,5+(40*(a-108)),365,40,40,MyImage(a,RGB))  
  ElseIf 5+(40*a)<5246  
  ButtonImageGadget(a,5+(40*(a-120)),405,40,40,MyImage(a,RGB)) 
  ElseIf 5+(40*a)<5726  
  ButtonImageGadget(a,5+(40*(a-132)),445,40,40,MyImage(a,RGB))  
  EndIf 
 Next 

 
Repeat 
Event = WaitWindowEvent()   
Until Event = #PB_Event_CloseWindow

или

Код:
Enumeration  
  #Window_0=150 
EndEnumeration 
 
OpenWindow (#Window_0, 0, 0, 490, 490, "Заглавие", #PB_Window_MinimizeGadget |#PB_Window_ScreenCentered|#PB_Window_SizeGadget)  
 For a=0 To 224 
  If 5+(40*a)<446 
  ButtonGadget(a,5+(40*a), 5, 40,40,"") 
  ElseIf 5+(40*a)<926 
  ButtonGadget(a,5+(40*(a-12)),45, 40,40,"") 
  ElseIf 5+(40*a)<1406  
  ButtonGadget(a,5+(40*(a-24)),85, 40,40,"") 
  ElseIf 5+(40*a)<1886  
  ButtonGadget(a,5+(40*(a-36)),125,40,40,"")  
  ElseIf 5+(40*a)<2366  
  ButtonGadget(a,5+(40*(a-48)),165,40,40,"") 
  ElseIf 5+(40*a)<2846  
  ButtonGadget(a,5+(40*(a-60)),205,40,40,"") 
  ElseIf 5+(40*a)<3326  
  ButtonGadget(a,5+(40*(a-72)),245,40,40,"") 
  ElseIf 5+(40*a)<3806  
  ButtonGadget(a,5+(40*(a-84)),285,40,40,"") 
  ElseIf 5+(40*a)<4286  
  ButtonGadget(a,5+(40*(a-96)),325,40,40,"") 
  ElseIf 5+(40*a)<4766  
  ButtonGadget(a,5+(40*(a-108)),365,40,40,"")  
  ElseIf 5+(40*a)<5246  
  ButtonGadget(a,5+(40*(a-120)),405,40,40,"") 
  ElseIf 5+(40*a)<5726  
  ButtonGadget(a,5+(40*(a-132)),445,40,40,"")  
  EndIf
  PureCOLOR_SetButtonColor(a, 0,Random(15176728)) ; Устанавливаем цвет кнопки 
 Next 

 
Repeat 
Event = WaitWindowEvent()   
Until Event = #PB_Event_CloseWindow

Отредактировано mirashic (01.03.2011 18:07:46)

0

378

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

можно сделать массив, чтобы потом его использовать в цикле

Для этого не нужен массив.

В цивле можно так обработать:

Код:
  For i=#Button_0 To #Button_14
    PureCOLOR_SetButtonColor(i, 0, $6E77FA) ; Устанавливаем цвет кнопки
  Next i
Код:
Enumeration
  #Window_0
EndEnumeration
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
EndEnumeration

If OpenWindow(#Window_0, 216, 0, 600, 300, "Stud")
  ButtonGadget(#Button_1, 40, 30, 30, 30, "clear")
  
  ButtonGadget(#Button_0, 80, 30, 30, 30, "1")
  ButtonGadget(#Button_2, 120, 30, 30, 30, "2")
  ButtonGadget(#Button_3, 40, 100, 30, 30, "3",#PB_Button_Toggle)
  ButtonGadget(#Button_4, 80, 100, 30, 30, "4",#PB_Button_Toggle)
  ButtonGadget(#Button_5, 120, 100, 30, 30, "5",#PB_Button_Toggle)
  ButtonGadget(#Button_6, 40, 140, 30, 30, "6",#PB_Button_Toggle)
  ButtonGadget(#Button_7, 80, 140, 30, 30, "7",#PB_Button_Toggle)
  ButtonGadget(#Button_8, 120, 140, 30, 30, "8",#PB_Button_Toggle)
  ButtonGadget(#Button_9, 40, 180, 30, 30, "9",#PB_Button_Toggle)
  ButtonGadget(#Button_10, 80, 180, 30, 30, "10",#PB_Button_Toggle)
  ButtonGadget(#Button_11, 120, 180, 30, 30, "11",#PB_Button_Toggle)
  ButtonGadget(#Button_12, 40, 220, 30, 30, "12",#PB_Button_Toggle)
  ButtonGadget(#Button_13, 80, 220, 30, 30, "13",#PB_Button_Toggle)
  ButtonGadget(#Button_14, 120, 220, 30, 30, "14",#PB_Button_Toggle)
  
  For i=#Button_0 To #Button_14
    PureCOLOR_SetButtonColor(i, 0, $6E77FA) ; Устанавливаем цвет кнопки
  Next i
  
  Repeat
    Event = WaitWindowEvent()
    If Event=#PB_Event_Gadget
      Gadget = EventGadget()
      MessageRequester("Сообщение", "Нажата кнопка "+Str(B)+Str(C), 0) ; это для контроля, потом уберу
      If Gadget<3
        C=Gadget
      EndIf
    EndIf
  Until Event=#PB_Event_CloseWindow
  
EndIf

End

0

379

Бьюсь с инструментом с буржуйского форума   [IDE Tool] Add date to source code!

Он дописывает при сохранении PB файла всякую ерунду, вроде времени в начало файла.

Создаю инструмент как написано, но не работает...

http://purebasic.ucoz.com/18_43_32.png

С принципом вроде разобрался, если  в место source.s = ProgramParameter(0) указываю реальный путь к файлу, то работает...

То есть,  как через компилятор PB узнать путь к открытому в данный момент файлу ? чтоб потом автоматом в него дописать...

Отредактировано mirashic (01.03.2011 19:46:41)

0

380

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

То есть,  как через компилятор PB узнать путь к открытому в данный момент файлу ? чтоб потом автоматом в него дописать...

Вот список параметров, может поможет.

Код:
%PATH : will be replaced with the path of the current source code. Remains empty if the source was not saved. 
%FILE : filename of the current source code. Remains empty if it has not yet been saved. If you configure the tool to replace the file viewer, this token represents the file that is to be opened. 
%TEMPFILE : When this option is given, the current source code is saved in a temporary file, and the filename is inserted here. You may modify or delete the file at will. 
%COMPILEFILE : This token is only valid for the compilation triggers (see below). This is replaced with the temporary file that is sent to the compiler for compilation. By modifying this file, you can actually change what will be compiled. 
%EXECUTABLE : This will be replaced by the name of the executable that was created in with the last "Create Executable". For the "After Compile/Run" trigger, this will be replaces with the name of the temporary executable file created by the compiler. 
%CURSOR : this will be replaced by the current cursor position. In the form of LINExCOLUMN. 
%SELECTION : this will be replaced by the current selection in the form of LINESTARTxCOLUMNSTARTxLINEENDxCOLUMNEND. This can be used together with %TEMPFILE, if you want your tool to do some action based on the selected area of text. 
%WORD : contains the word currently under the cursor

0

381

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

может поможет

Не помогло...
Создаю к примеру инструмент

Код:
OpenWindow(0,0,0,450,40,ProgramParameter(),#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

Repeat
Event =  WaitWindowEvent() 
Until Event = #PB_Event_CloseWindow

Компилирую и задаю параметры инструмента:
http://purebasic.ucoz.com/20_18_13.png

По идее при загрузке любого файла pb  должно выскакивать окно с заголовком пути...
а выходит:
http://purebasic.ucoz.com/20_22_02.png

Может что то упускаю?
И Перенос строк в стандартной IDE PureBasic тоже по этой причине не смог запустить...

Отредактировано mirashic (01.03.2011 21:27:26)

0

382

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

Гаждет можно уничтожить с помощью функции FreeGadget.Если нужно просто скрыть (сделать не видимым не уничтожая), то можно использовать функцию HideGadget.

да, но я это знаю, они закрывают только 1 гаджет. А у меня в программе столько гаджетов открывается что очень пригодился бы оператор который закрывает все открытые гаджеты. Или такого нет?

0

383

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

Не помогло...

А если попробовать

Код:
"%PATH"
Илья написал(а):

А у меня в программе столько гаджетов открывается что очень пригодился бы оператор который закрывает все открытые гаджеты. Или такого нет?

Можно позакрывать окна, тогда гаджеты исчезнут.
Или как вариант, создавать гаджеты в контейнере и уничтожать контейнер, что уничтожит все гаджеты в нем.
В крайнем случае, должны быть известны идентификаторы все гаджетов и можно их уничтожить поштучно.

0

384

Да спасиб, просто я думал что в PureBasic чтоб сразу все гаджеты уничтожить специальный оператор предусмотрен.

0

385

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

Для этого не нужен массив.

В цикле можно так обработать:
Код:

  For i=#Button_0 To #Button_14
    PureCOLOR_SetButtonColor(i, 0, $6E77FA) ; Устанавливаем цвет кнопки
  Next i

В таком цикле я смогу установить цвет кнопок в верхнем ряду, но мне нужен будет видимо массив "цвет кнопки" про который я спрашивал, так как цвет кнопок в верхнем ряду у каждой кнопки свой.
Цвет кнопок в четырех нижних рядах должен устанавливаться в зависимости от того, какая кнопка в верхнем ряду нажата перед этим, то есть работа с этой программой происходит так:
нажимается кнопка 1, нажимается одна из кнопок в 4-х нижних рядах, которая остается нажатой с цветом кнопки №1
нажимается кнопка 2,  нажимается одна из кнопок в 4-х нижних рядах, которая остается нажатой с цветом кнопки №2
...
потом все это повторяется некоторое число раз
затем нажимается Clear и все кнопки нижних рядов без цвета восстанавливаются для повторения работы.
В самом первом коде, который был в самом первом моем сообщении это было реализовано, только без цвета.

0

386

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

Можно отключить в свойствах проекта стиль WinXP.

увеличить

Где и что надо нажать, чтобы выйти на это окно ? (почему-то оно при цитировании не скопировалось)

Отредактировано a1951 (02.03.2011 10:37:56)

0

387

Спасибо ! Нигде не написано про заключение в скобки "%PATH" - теперь работает

0

388

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

но мне нужен будет видимо массив "цвет кнопки" про который я спрашивал, так как цвет кнопок в верхнем ряду у каждой кнопки свой.

Цвет кнопки можно узнать с помощью функции PureCOLOR_GetButtonColor

Код:
Enumeration
  #Window_0
EndEnumeration
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
EndEnumeration

If OpenWindow(#Window_0, 216, 0, 600, 300, "Stud")
  ButtonGadget(#Button_1, 40, 30, 30, 30, "clear")
  
  ButtonGadget(#Button_0, 80, 30, 30, 30, "1")
  ButtonGadget(#Button_2, 120, 30, 30, 30, "2")
  ButtonGadget(#Button_3, 40, 100, 30, 30, "3",#PB_Button_Toggle)
  ButtonGadget(#Button_4, 80, 100, 30, 30, "4",#PB_Button_Toggle)
  ButtonGadget(#Button_5, 120, 100, 30, 30, "5",#PB_Button_Toggle)
  ButtonGadget(#Button_6, 40, 140, 30, 30, "6",#PB_Button_Toggle)
  ButtonGadget(#Button_7, 80, 140, 30, 30, "7",#PB_Button_Toggle)
  ButtonGadget(#Button_8, 120, 140, 30, 30, "8",#PB_Button_Toggle)
  ButtonGadget(#Button_9, 40, 180, 30, 30, "9",#PB_Button_Toggle)
  ButtonGadget(#Button_10, 80, 180, 30, 30, "10",#PB_Button_Toggle)
  ButtonGadget(#Button_11, 120, 180, 30, 30, "11",#PB_Button_Toggle)
  ButtonGadget(#Button_12, 40, 220, 30, 30, "12",#PB_Button_Toggle)
  ButtonGadget(#Button_13, 80, 220, 30, 30, "13",#PB_Button_Toggle)
  ButtonGadget(#Button_14, 120, 220, 30, 30, "14",#PB_Button_Toggle)
  
  For i=#Button_0 To #Button_14
    PureCOLOR_SetButtonColor(i, 0, $6E77FA) ; Устанавливаем цвет кнопки
  Next i
  
  Repeat
    Event = WaitWindowEvent()
    If Event=#PB_Event_Gadget
      Gadget = EventGadget()
      
      MessageRequester("Сообщение", "Код цвета кнопки: "+Str(PureCOLOR_GetButtonColor(Gadget, 2))) ; это для контроля, потом уберу
      If Gadget<3
        C=Gadget
      EndIf
    EndIf
  Until Event=#PB_Event_CloseWindow
  
EndIf

End
a1951 написал(а):

Где и что надо нажать, чтобы выйти на это окно ?

0

389

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

Цвет кнопки можно узнать с помощью функции PureCOLOR_GetButtonColor

То есть вы предлагаете каждый раз после нажатия на кнопку верхнего ряда определять цвет этой кнопки и присваивать его нужной кнопке нижних рядов? В верхнем ряду ведь эти цвета изначально закреплены за кнопками и они не меняются, поэтому может проще определять цвет по номеру кнопки верхнего ряда?

0

390

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

То есть вы предлагаете каждый раз после нажатия на кнопку верхнего ряда определять цвет этой кнопки и присваивать его нужной кнопке нижних рядов?

Можно сохранять в переменной, а когда кликнут по кнопке нижнего ряда, присваивать ей цвет, сохранённый в переменной.

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

ведь эти цвета изначально закреплены за кнопками и они не меняются, поэтому может проще определять цвет по номеру кнопки верхнего ряда

Можно и так.

0


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