Fenstergröße Webgadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Fenstergröße Webgadget

Beitrag von ProgOldie »

Hallo,
eigentlich eine einfache Frage, an deren Lösung ich aber nun schon einige Stunden hänge.

Ich habe in einem Fenster ein Webgadget. Wenn ich nun das Fenster maximiere etc., soll die WebGadgetgröße angepasst werden. Das Ereignis dazu klappt.

Nur: Wie änder man die Abmessungen eines vorhandenen WebGadgets. Bei setGadgetAttribut findet man dazu leider nichts.
in der Hilfe.

Dank vorab!
ProgOldie
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Fenstergröße Webgadget

Beitrag von HeX0R »

So wie bei jedem anderen Gadget auch, durch ResizeGadget()
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: Fenstergröße Webgadget

Beitrag von NicknameFJ »

Hi,

Code: Alles auswählen

If OpenWindow(1,10,10,1000,600,"TEST")


  WebGadget(10,10,10,800,400,"www.purebasic.fr/german")
  ResizeGadget(10,10,10,500,300)
  
  
  Repeat
    
    
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  
  
  
EndIf
Grüße

NicknameFJ

EDIT: Mist, HeXor war schneller
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
computerfreak
Beiträge: 112
Registriert: 23.07.2012 19:19

Re: Fenstergröße Webgadget

Beitrag von computerfreak »

Jetzt passts sich an die Fenstergröße an

Wenn du die Demo hast :

Code: Alles auswählen

#WM_SIZE=5
#WM_CLOSE=16
der Code

Code: Alles auswählen

If OpenWindow(1,10,10,1000,600,"TEST",#PB_Window_SizeGadget|#PB_Window_MaximizeGadget)


  WebGadget(10,10,10,800,400,"www.purebasic.fr/german")
  ResizeGadget(10,10,10,500,300)
 
 
  Repeat
    
    Select WindowEvent()
      Case #WM_SIZE
         ResizeGadget(10,0,0,WindowWidth(1),WindowHeight(1))
       Case #WM_CLOSE
         End
     EndSelect
     
   
   
    ForEver
 
 
 
EndIf 
Grüße , Computerfreak
PureBasic: Immer das neueste
Windows 8.1 / AMD FX 6100 / R9280X / 8GB RAM
Macbook Pro 2015 Retina
Dell Inspiron 1720 mit Linux Mint
...Und diverse Kleinstcomputer
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Fenstergröße Webgadget

Beitrag von RSBasic »

@computerfreak
Warum API-Konstanten?
Dafür gibt es PB-Konstanten:
#WM_SIZE -> #PB_Event_SizeWindow
#WM_CLOSE -> #PB_Event_CloseWindow
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fenstergröße Webgadget

Beitrag von Kiffi »

@computerfreak:

für WM_SIZE und WM_CLOSE gibt es native PureBasic-Äquivalente: #PB_Event_SizeWindow
und #PB_Event_CloseWindow (funktioniert auch in der Demo). Und WindowEvent() kann man
in diesem Fall durch WaitWindowEvent() ersetzen.

Code: Alles auswählen

#Window = 0
#Webgadget = 0

If OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 800, 600, "TEST", #PB_Window_SizeGadget | #PB_Window_MaximizeGadget)
  
  WebGadget(#Webgadget, 0, 0, 0, 0, "http://www.purebasic.fr/german")
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_SizeWindow
        ResizeGadget(#Webgadget, #PB_Ignore, #PB_Ignore, WindowWidth(#Window), WindowHeight(#Window))
      Case #PB_Event_CloseWindow
        Break  
    EndSelect
  ForEver
  
EndIf
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ProgOldie
Beiträge: 236
Registriert: 19.05.2012 17:09
Computerausstattung: Windows11, Arduinos, Pi3, PureBasic 6.02

Re: Fenstergröße Webgadget

Beitrag von ProgOldie »

Hallo,
da habe ich den Wald vor lauter Bäumen nicht gesehen. Danke für die Hilfen.

Wen's interessiert: Ich wollte einen kleinen Browser, der bei Betätigung eines Buttos (saveButton) die aktuelle URL weiter verarbeitet. Hier meine Lösung:

Code: Alles auswählen

;Zum Weiterbearbeiten einer URL (ProgOldie)

Global URLGad

Procedure saveURL(WebAdr.s)
  ; Hier wird später noch die Webadresse verarbeitet
  Debug WebAdr
  ProcedureReturn #True
EndProcedure

Procedure NavigationCallback(Gadget, Url$)
  ; wird vom WebGad aufgerufen
  SetGadgetText(URLGad,Url$)
  ;schreibt die aktuelle URL in die URLZeile
  ProcedureReturn #True
EndProcedure

Procedure fitGadgets(win.i,Gad1,Gad2,Gad3)
  ;passt Größe und ggf. Position der Gadgets an die aktuelle Fenstergröße an.
  ;win: aktuelles Browserfenster; Gad1=WebGad, Gad2=URLGad, Gad3=saveButton
  ResizeGadget(Gad1,#PB_Ignore,#PB_Ignore,WindowWidth(win)-10,WindowHeight(win)-40)
  ResizeGadget(Gad2,#PB_Ignore,#PB_Ignore,WindowWidth(win)-180,20)
  ResizeGadget(Gad3,WindowWidth(win)-140,#PB_Ignore,60,20)
EndProcedure

browseWin=OpenWindow(#PB_Any, 0, 0, 600, 400, "WebGadget", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)
URLGad=StringGadget(#PB_Any,10,10,400,20,"",#PB_Text_Border)
AddKeyboardShortcut(browseWin, #PB_Shortcut_Return, 15)  ;Zum Abfangen von RETURN im URLGadget
saveButton=ButtonGadget(#PB_Any,WindowWidth(browsewin)-140,10,60,20,"save URL")
WebGad=WebGadget(#PB_Any, 10, 40, 580, 350, "http://www.purebasic.com")
SetGadgetAttribute(WebGad, #PB_Web_NavigationCallback, @NavigationCallback())

Repeat
  
  Event=WaitWindowEvent()
  EvGad=EventGadget()
  EvType=EventType()
  Select Event
    Case #PB_Event_Menu   ; wurde in dem Fenster die RETURN-Taste gedrückt?
       Select EventMenu()
          Case 15         ; war es das Shortcut mit der Nr 15?
           If GetActiveGadget() = URLGad
             SetGadgetText(WebGad,GetGadgetText(URLGad))
           EndIf
       EndSelect       
     Case #PB_Event_MaximizeWindow
       fitGadgets(browsewin,WebGad,URLGad,saveButton)
     Case #PB_Event_SizeWindow
       fitGadgets(browsewin,Webgad,URLGad,saveButton)
     Case #PB_Event_CloseWindow
     CloseWindow(browseWin)
     Case #PB_Event_Gadget
      Select EvGad
        Case saveButton    ;wurde der saveURL-Button betätigt?
          saveURL(GetGadgetText(URLGad))
      EndSelect
      
  EndSelect
Until Event=#PB_Event_CloseWindow
Windows10 / PB5.70 / Arduino (-Due) / Raspberry Pi3 /Linux Mint 18
Antworten