Seite 1 von 1
Gadgets etc. an Windowsgröße anpassen
Verfasst: 13.01.2006 20:33
von Zomtec
Hallo zusammen,
ich bin noch absoluter Newbie in Sache PB, habe aber bereits etwas Programmiererfahrungen mit anderen Basic-Dialekten. Zur Eingewöhnung habe ich ein kleines Anwendungsprojekt begonnen. Nun bin ich schon auf die ersten Fragen/Probleme gestoßen:
- Wenn ich in OpenWindow das #PB_Window_SizeGadget Flag setze, werden bei Größenänderung des Fensters die Gadgets nicht an die neue Größe angepasst. Gibt es eine Funktion die das automatisch macht, oder muss ich das Event der Size-Änderung abfangen und alles neu berechnen und aufbauen?
- Beim Versuch mit dem VisualDesigner im ScrollAreaGadget ein CreateGadgetList anzulegen stürzt die ganze Sch**** ab. Ist das ein Bug von VD oder ist diese Kombination in PB generell nicht möglich?
- Ich habe einen von VD generierten Quelltext, den ich zum Aufbau meines Programms benutzen möchte. Dafür wurde eine Main und eine Include-Datei erzeugt. Jetzt habe ich in der Include folgende Zeile eingefügt:
Code: Alles auswählen
Else MessageRequester("Fehler!", "Menus konnten nicht angelegt werden") : Goto Ende
Beim kompilieren erhalte ich folgende Fehlermeldung: Zeile xx: Garbage to the end of line
Die gleiche Zeile im Main funktioniert einwandfrei. Nach der Hilfe wird die Include doch beim Kompilieren eingefügt und sollte auch die Sprunmarken in der Main kennen?!
Danke schon mal für eure Hilfe.
Re: Gadgets etc. an Windowsgröße anpassen
Verfasst: 13.01.2006 20:46
von ts-soft
Zomtec hat geschrieben:
- Wenn ich in OpenWindow das #PB_Window_SizeGadget Flag setze, werden bei Größenänderung des Fensters die Gadgets nicht an die neue Größe angepasst. Gibt es eine Funktion die das automatisch macht, oder muss ich das Event der Size-Änderung abfangen und alles neu berechnen und aufbauen?
Wirste wohl müssen, alternativ kannste aber als Designer gDesign, PureVision XP verwenden, oder eine Userlib von Gnozal, die Dir die Arbeit etwas erleichtern.
Zomtec hat geschrieben:
[*]Ich habe einen von VD generierten Quelltext, den ich zum Aufbau meines Programms benutzen möchte. Dafür wurde eine Main und eine Include-Datei erzeugt. Jetzt habe ich in der Include folgende Zeile eingefügt:
Code: Alles auswählen
Else MessageRequester("Fehler!", "Menus konnten nicht angelegt werden") : Goto Ende
Beim kompilieren erhalte ich folgende Fehlermeldung: Zeile xx: Garbage to the end of line
Die gleiche Zeile im Main funktioniert einwandfrei. Nach der Hilfe wird die Include doch beim Kompilieren eingefügt und sollte auch die Sprunmarken in der Main kennen?![/list]Danke schon mal für eure Hilfe.
Die Sprungmarke wird er Wohl kennen, da ist ein anderer Fehler. Aber ohne Code kann ich nur raten. Evtl. fehlt die If Zeile oder EndIf?
Re: Gadgets etc. an Windowsgröße anpassen
Verfasst: 13.01.2006 20:58
von Zomtec
ts-soft hat geschrieben:Wirste wohl müssen, alternativ kannste aber als Designer gDesign, PureVision XP verwenden, oder eine Userlib von Gnozal, die Dir die Arbeit etwas erleichtern.
Die beiden Programme habe ich mir bereits angesehen. Von der Benutzerführung etwas gewöhnungsbedürftig. Dann werde ich halt versuchen das selbst umzusetzen - ideal zum lernen...
Die Sprungmarke wird er Wohl kennen, da ist ein anderer Fehler. Aber ohne Code kann ich nur raten. Evtl. fehlt die If Zeile oder EndIf?
Das ist der betreffende Code, der von VD erzeugt wurde. Die Else-Zeile wurde von mir hinzugefügt:
Code: Alles auswählen
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "SharesManager")
If CreateMenu(#MenuBar_0, WindowID())
MenuTitle(Language$(0)) ;Datei
MenuItem(#MENU_11, Language$(1)) ;Öffnen
MenuItem(#MENU_10, Language$(2)) ;Speichern
MenuItem(#MENU_9, Language$(3)) ;Beenden
MenuItem(#MENU_3, Language$(4)) ;Test
MenuTitle(Language$(5)) ;Bearbeiten
MenuItem(#MENU_13, Language$(6)) ;Noch leer
Else MessageRequester("Fehler!", "Menus konnten nicht angelegt werden") : Goto Ende
EndIf
If CreateGadgetList(WindowID())
ButtonGadget(#Button_Neu, 10, 10, 50, 30, Language$(7)) ;Neu
ButtonGadget(#Button_Del, 70, 10, 50, 30, Language$(8)) ;Löschen
ButtonGadget(#Button_Change, 130, 10, 50, 30, Language$(9)) ;Ändern
;-
ScrollAreaGadget(#ScrollArea_0, 0, 50, 590, 240, 1180, 480, 10)
CloseGadgetList()
EndIf
EndIf
EndProcedure
Verfasst: 13.01.2006 21:20
von ts-soft
Sollte so gehen:
Code: Alles auswählen
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "SharesManager")
If CreateMenu(#MenuBar_0, WindowID())
MenuTitle(Language$(0)) ;Datei
MenuItem(#MENU_11, Language$(1)) ;Öffnen
MenuItem(#MENU_10, Language$(2)) ;Speichern
MenuItem(#MENU_9, Language$(3)) ;Beenden
MenuItem(#MENU_3, Language$(4)) ;Test
MenuTitle(Language$(5)) ;Bearbeiten
MenuItem(#MENU_13, Language$(6)) ;Noch leer
Else
MessageRequester("Fehler!", "Menus konnten nicht angelegt werden") : Goto Ende
EndIf
If CreateGadgetList(WindowID())
ButtonGadget(#Button_Neu, 10, 10, 50, 30, Language$(7)) ;Neu
ButtonGadget(#Button_Del, 70, 10, 50, 30, Language$(8)) ;Löschen
ButtonGadget(#Button_Change, 130, 10, 50, 30, Language$(9)) ;Ändern
;-
ScrollAreaGadget(#ScrollArea_0, 0, 50, 590, 240, 1180, 480, 10)
CloseGadgetList()
EndIf
EndIf
EndProcedure
Oder hinter Else einen Doppelpunkt
Verfasst: 13.01.2006 21:25
von Zomtec
Ähmm, das war ja einfach.

Danke für die Hilfe, so funktioniert's einwandfrei...
Verfasst: 13.01.2006 21:49
von ts-soft
Aber einen Fehler hat es noch. Du solltest niemals mit Goto aus einer Procedure rausspringen. Statt Goto Ende mach lieber einfach End
Verfasst: 13.01.2006 21:50
von Zomtec
Werde ich machen - danke für den Tipp.
EDIT: Noch eine Frage. Wenn im Falle eines Falles die o. g. Zeile zum Zug kommt, bleibt der MessageRequester dann offen oder wird er mit der darauf folgenden End-Anweisung mit beendet?
Verfasst: 13.01.2006 22:02
von ts-soft
Der MessageRequester hält das Programm an, bis Du Ok gedrückt hast, die
Meldung siehste also in jedem Fall. Aber eine Debug-Meldung wäre hier
wahrscheinlich sinnvoller, da es ja nur eine Fehlerprüfung für Dich sein soll.
Verfasst: 13.01.2006 22:03
von Macros
Der bleibt offen, da das Programm
nicht weiterläuft, bis du ihn bestätigt hast.