Gadgets etc. an Windowsgröße anpassen

Anfängerfragen zum Programmieren mit PureBasic.
Zomtec
Beiträge: 33
Registriert: 07.06.2005 14:46
Wohnort: Bayern
Kontaktdaten:

Gadgets etc. an Windowsgröße anpassen

Beitrag 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.
mfg
Zomtec
------------
noch PB 3.94
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Gadgets etc. an Windowsgröße anpassen

Beitrag 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?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Zomtec
Beiträge: 33
Registriert: 07.06.2005 14:46
Wohnort: Bayern
Kontaktdaten:

Re: Gadgets etc. an Windowsgröße anpassen

Beitrag 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
mfg
Zomtec
------------
noch PB 3.94
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Zomtec
Beiträge: 33
Registriert: 07.06.2005 14:46
Wohnort: Bayern
Kontaktdaten:

Beitrag von Zomtec »

Ähmm, das war ja einfach. ;)
Danke für die Hilfe, so funktioniert's einwandfrei...
mfg
Zomtec
------------
noch PB 3.94
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Zomtec
Beiträge: 33
Registriert: 07.06.2005 14:46
Wohnort: Bayern
Kontaktdaten:

Beitrag 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?
mfg
Zomtec
------------
noch PB 3.94
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.

Code: Alles auswählen

Debug "Menus konnten nicht angelegt werden"
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Der bleibt offen, da das Programm
nicht weiterläuft, bis du ihn bestätigt hast.
Antworten