Seite 1 von 2
Frage zum Visual Designer in Verbinfung mit PureBasic
Verfasst: 21.07.2006 02:42
von Looki
Hallo
Mir ist gerade mal spotan aufgefallen, das im Programm PureBasic ja ein Designer bei ist
da hab ich mich richtig gefreut.
Aber irgendwie hat er Bugs und man kann Gadgets nich löschen und so aber trotzdem ist er gut
aber zum Thema:
wenn ich "Generate Source" wähle, schreibt er mir ja den Code.
Wenn ich das Programm aber nun in PureBasic starte, öffnet sich gar kein Fenster!
Kann jemand helfen?
Verfasst: 21.07.2006 02:56
von pankgraf
Hallo Looki!
Willkommen im Forum.
Damit dir jemand helfen kann, müßtest du
- a) schreiben welche PB-Version du dir geholt hast
b) deinen Code hierher kopieren.
Viel Spaß mit
Pure
Basic wünscht dir pankgraf
Danke für deine schnelle Antwort ^^
Verfasst: 21.07.2006 03:04
von Looki
also ich habe PureBasic v3.94 (Windows - x86)
und hier der Code: (ich hab nichts verändert! Nur im VD rumgetestet ;D)
Code: Alles auswählen
; PureBasic Visual Designer v3.92 build 1460
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_1
EndEnumeration
; BalloonTip Constants
#TOOLTIP_NO_ICON = 0
#TOOLTIP_INFO_ICON = 1
#TOOLTIP_WARNING_ICON = 2
#TOOLTIP_ERROR_ICON = 3
Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
Balloon\hWnd=GadgetID(Gadget)
Balloon\uId=GadgetID(Gadget)
Balloon\lpszText=@Text$
SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
If Title$ > ""
SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
EndIf
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 436, 130, 104, 53, #PB_Window_SystemMenu | #PB_Window_TitleBar , "Test")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_1, 24, 17, 61, 26, "Button")
BalloonTip(WindowID(), #Button_1, "ToopTip", "", #TOOLTIP_NO_ICON)
EndIf
EndIf
EndProcedure
Verfasst: 21.07.2006 03:47
von pankgraf
Ich verdien mir gerade durch Nachtarbeit etwas Geld dazu. Deshalb steht mir nur die PB 4.0 - Version zur Verfügung. Wundere dich bitte nicht über die veränderte Schreibweise der Befehle!
Wichtig ist nur, daß du die Repeat-Schleife einfügst.
Dann würde ich die Enumeration wie gezeigt verändern.
Die Befehle »Procedure Open_Window_0()« und das dazu gehörige »EndProcedure« würde ich löschen.
Code: Alles auswählen
; PureBasic Visual Designer v3.92 build 1460
;- Window Constants
;
Enumeration
#Window_0
#Button_1
EndEnumeration
;- Gadget Constants
; BalloonTip Constants
#TOOLTIP_NO_ICON = 0
#TOOLTIP_INFO_ICON = 1
#TOOLTIP_WARNING_ICON = 2
#TOOLTIP_ERROR_ICON = 3
Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
Balloon\hwnd=GadgetID(Gadget)
Balloon\uId=GadgetID(Gadget)
Balloon\lpszText=@Text$
SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
If Title$ > ""
SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
EndIf
EndProcedure
If OpenWindow(#Window_0, 436, 130, 104, 53, "Test", #PB_Window_SystemMenu | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_1, 24, 17, 61, 26, "Button")
BalloonTip(#Window_0, #Button_1, "ToopTip", "", #TOOLTIP_NO_ICON)
EndIf
EndIf
; Wichtig! Diese Repeat-Schleife muß eingefügt werden, sonst wird
; dein Programm blitzartig beendet.
Repeat
event.l = WaitWindowEvent() : EventType.l = EventType()
Tastendr.l = EventGadget()
If EventType = #PB_EventType_LeftClick
Select Tastendr
Case #Button_1
MessageRequester("Viel Spaß mit PB", "Das war es schon")
EndSelect
EndIf : Delay(15)
Until event = #PB_Event_CloseWindow
End
Verfasst: 21.07.2006 05:45
von ts-soft
Im VisualDesigner unter Objekt-Optionen bei Ereignisschleife mitliefern einen Haken setzen. Mehr brauchste nicht tun.
Die Enumeration vom Designer ist auch in Ordnung so. So fängt die Gadgetnummerierung auch bei 0 an (spart minimal Speicher).
Die Fenstererstellung in einer Prozedur würde ich auch unverändert lassen!
Verfasst: 21.07.2006 11:42
von a14xerus
ich würde die fenstererstellugn auch in der prozeduer lassen, dann musste das fenster nur mit
open_window_0() öffnen (jenachdem wie die procedure bei dir heißt)
zu den bug, das er nicht löschen kann: bei mri funktionierts. das gadget einmal anklicken und entf drücken
udn wenn du auch die ereignissschleife mitliefern lässt, dann würde ich persönlcih beide pb dateien in einem ordner speichern.. sonst speichert der VD die include immer in einem speziellen ordner
(ich füge die dateien auch noch zu einer zusammen)
Verfasst: 21.07.2006 11:56
von Looki
Danke, euch allen. Aber ich werde ts-softs eg nehmen. Hab das schon gesehen, wusste aber nicht was dann passiert
*peinlich*
Naja, danke!
edit: es geht trotzdem noch nicht auf

Verfasst: 21.07.2006 12:24
von Kiffi
> edit: es geht trotzdem noch nicht auf
Code: Alles auswählen
Open_Window_0()
Repeat
Until event = #PB_Event_CloseWindow
Grüße ... Kiffi
Verfasst: 21.07.2006 16:06
von Looki
Danke, aber da ich dere absolute noob in PB bin ,weiss ich nicht, wo ich den Code einbinden muss!
kannst du mir den vollen code hier für erstellen?
Code: Alles auswählen
; PureBasic Visual Designer v3.92 build 1460
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_0, 84, 91, 232, 137, "test")
EndIf
EndIf
EndProcedure
so hab ichs versucht, und da öffnet und schließt er das fenster immer ;_;
Code: Alles auswählen
; PureBasic Visual Designer v3.92 build 1460
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
EndEnumeration
Repeat
If OpenWindow(#Window_0, 216, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_0, 84, 91, 232, 137, "^^")
EndIf
EndIf
Until event = #PB_Event_CloseWindow
Looki
Verfasst: 21.07.2006 16:15
von ts-soft
Code: Alles auswählen
; PureBasic Visual Designer v3.92 build 1460
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
;If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar)
If CreateGadgetList(WindowID())
;If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 84, 91, 232, 137, "test")
EndIf
EndIf
EndProcedure
Open_Window_0()
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
für PB3.94, ansonsten die Kommentare verschieben
