Fenster proportional verkeinern/vergrößern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: Fenster proportional verkeinern/vergrößern

Beitrag von kunstlust »

@Kiffi
Das ich den Button durch einen Editfeld ersetzen kann ist klar :mrgreen: Hab mich nicht richtig ausgedrückt.
Wie aber bleiben die Proportionen erhalten? Also das beide Editorfelder immer gleich wachsen?

Code: Alles auswählen

Global Window_0

Global Editor_0, Editor_1, Button_0, Button_1

Declare ResizeGadgetsWindow_0()


Procedure OpenWindow_0()
  Window_0 = OpenWindow(#PB_Any, 0, 0, 600, 400, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
  Editor_0 = EditorGadget(#PB_Any, 10, 10, 270, 310)
  SetGadgetColor(Editor_0, #PB_Gadget_BackColor,RGB(192,192,192))
  Editor_1 = EditorGadget(#PB_Any, 290, 10, 290, 310)
  SetGadgetColor(Editor_1, #PB_Gadget_BackColor,RGB(64,128,128))
  Button_0 = ButtonGadget(#PB_Any, 310, 350, 110, 30, "OK")
  Button_1 = ButtonGadget(#PB_Any, 460, 350, 120, 30, "Ende")
EndProcedure

Procedure ResizeGadgetsWindow_0()
  Protected WindowWidth, WindowHeight
  WindowWidth = WindowWidth(Window_0)
  WindowHeight = WindowHeight(Window_0)
  ResizeGadget(Editor_0, 10, 10, WindowWidth - 330, WindowHeight - 90)
  ResizeGadget(Editor_1, 290, 10, WindowWidth - 310, WindowHeight - 90)
  ResizeGadget(Button_0, WindowWidth - 290, WindowHeight - 50, 110, 30)
  ResizeGadget(Button_1, WindowWidth - 140, WindowHeight - 50, 120, 30)
EndProcedure

Procedure Window_0_Events(event)
  Select event
    Case #PB_Event_SizeWindow
      ResizeGadgetsWindow_0()
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure


Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: Fenster proportional verkeinern/vergrößern

Beitrag von kunstlust »

Ich habe es nun mal mit dem WebGadget versucht, obwochl es im VD nicht wählbar ist geht es trotzdem. Ich habe hier die inurl von googel reingepackt, ist ja auch nur ein einfaches Beispiel:

Code: Alles auswählen

Global Window_0

Global Button_0, String_0, Combo_0, Button_zurueck, Button_vor, WebView_0

Declare ResizeGadgetsWindow_0()

Procedure OpenWindow_0()
  Window_0 = OpenWindow(#PB_Any, 0, 0, 830, 580, "google inurl suche", #PB_Window_SizeGadget|#PB_Window_ScreenCentered |#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
  Button_0 = ButtonGadget(#PB_Any, 467, 20, 100, 20, "Suche -inurl")
  String_0 = StringGadget(#PB_Any, 10, 20, 300, 20, "Suchtext")
  Combo_0 = ComboBoxGadget(#PB_Any, 340, 20, 110, 20, #PB_ComboBox_Editable)
  Button_zurueck = ButtonGadget(#PB_Any, 590, 20, 100, 20, "<<")
  Button_vor = ButtonGadget(#PB_Any, 710, 20, 100, 20, ">>")
  WebView_0 = WebGadget(#PB_Any, 10, 50, 800, 520, "")
  AddGadgetItem(Combo_0,0,"Dateiendungen")
  AddGadgetItem(Combo_0,1,"ebup|pdf")
  AddGadgetItem(Combo_0,2,"mov|mpg")
  AddGadgetItem(Combo_0,3,"doc|xls")
  AddGadgetItem(Combo_0,4,"jpg|bmp")
  AddGadgetItem(Combo_0,5,"exe|zip")
  AddGadgetItem(Combo_0,6,"txt|csv")
  AddGadgetItem(Combo_0,7,"wma|mp3")
  SetGadgetState(Combo_0, 0)
EndProcedure

Procedure ResizeGadgetsWindow_0()
  Protected WindowWidth, WindowHeight
  WindowWidth = WindowWidth(Window_0)
  WindowHeight = WindowHeight(Window_0)
  ResizeGadget(WebView_0, 10, 50, WindowWidth - 30, WindowHeight - 60)
EndProcedure

Procedure Window_0_Events(event)
  Select event
    Case #PB_Event_SizeWindow
      ResizeGadgetsWindow_0()
    Case #PB_Event_CloseWindow
      ProcedureReturn #False
    Case #PB_Event_Gadget
      Select EventGadget()
        Case Button_zurueck
          SetGadgetState(WebView_0,#PB_Web_Back)
        Case Button_vor
          SetGadgetState(WebView_0,#PB_Web_Forward)
        Case Button_0
          SetGadgetText(WebView_0,"http://www.google.de/search?q=-inurl:(htm|html|php) intitle:"+Chr(34)+"index of" +Chr(34)+" "+Chr(34)+"last modified"+Chr(34)+" "+Chr(34)+"parent directory"+Chr(34)+" "+Chr(34)+ "description +"+"("+GetGadgetText(Combo_0)+") "+GetGadgetText(String_0))
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure


OpenWindow_0()
Repeat
Until Window_0_Events(WaitWindowEvent()) = #False
Lord
Beiträge: 325
Registriert: 21.01.2008 19:11

Re: Fenster proportional verkeinern/vergrößern

Beitrag von Lord »

kunstlust hat geschrieben:@Kiffi
Das ich den Button durch einen Editfeld ersetzen kann ist klar :mrgreen: Hab mich nicht richtig ausgedrückt.
Wie aber bleiben die Proportionen erhalten? Also das beide Editorfelder immer gleich wachsen?
Meinst Du so etwas:

Code: Alles auswählen

Global Window_0

Global Editor_0, Editor_1, Button_0, Button_1

Declare ResizeGadgetsWindow_0()


Procedure OpenWindow_0()
  Window_0 = OpenWindow(#PB_Any, 0, 0, 600, 400, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
  Editor_0 = EditorGadget(#PB_Any, 10, 10, 270, 310)
  SetGadgetColor(Editor_0, #PB_Gadget_BackColor,RGB(192,192,192))
  Editor_1 = EditorGadget(#PB_Any, 290, 10, 290, 310)
  SetGadgetColor(Editor_1, #PB_Gadget_BackColor,RGB(64,128,128))
  Button_0 = ButtonGadget(#PB_Any, 310, 350, 110, 30, "OK")
  Button_1 = ButtonGadget(#PB_Any, 460, 350, 120, 30, "Ende")
EndProcedure

Procedure ResizeGadgetsWindow_0()
  Protected WindowWidth, WindowHeight
  WindowWidth = WindowWidth(Window_0)
  WindowHeight = WindowHeight(Window_0)
; angepaßter Teil
  ResizeGadget(Editor_0, 10, 10, (WindowWidth-20)/2-5, WindowHeight - 90)
  ResizeGadget(Editor_1, 10+(WindowWidth-20)/2+5, 10, (WindowWidth-20)/2-5, WindowHeight - 90)
; Die -5 und +5 sorgen nur für einen kleinen Abstand zwischen den Gadgets und
; können auch entfallen
  ResizeGadget(Button_0, WindowWidth - 290, WindowHeight - 50, 110, 30)
  ResizeGadget(Button_1, WindowWidth - 140, WindowHeight - 50, 120, 30)
EndProcedure

Procedure Window_0_Events(event)
  Select event
    Case #PB_Event_SizeWindow
      ResizeGadgetsWindow_0()
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure

OpenWindow_0()

Repeat
Until Window_0_Events(WaitWindowEvent()) = #False


Bild
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: Fenster proportional verkeinern/vergrößern

Beitrag von kunstlust »

@Lord
So was meinte ich, viele Dank, aber das ist nicht direkt im VD anzulegen, oder habe ich was übersehen?
Auf jeden Fall ist so per ResizeGadget auch möglich, eine Abhängig von einem andere Gadget zu setzen, das ist sicher noch zu gebrauchen. :mrgreen:

Gibt es nun noch was die Schriften angeht, in Sachen Desktopvergrößerung bei 125%, da bei 150% für mich kein Unterschiede zu sehen ist, bis auf die Größe?
Die Frage ist ja wie ich ermittel, in welchen dpi Modus, sich der Dekstop gerade befindet?
Lord
Beiträge: 325
Registriert: 21.01.2008 19:11

Re: Fenster proportional verkeinern/vergrößern

Beitrag von Lord »

kunstlust hat geschrieben:...
So was meinte ich, viele Dank, aber das ist nicht direkt im VD anzulegen, oder habe ich was übersehen?
...
Den VD benutze ich nicht. Das mache ich selber.
kunstlust hat geschrieben:...
Gibt es nun noch was die Schriften angeht, in Sachen Desktopvergrößerung bei 125%, da bei 150% für mich kein Unterschiede zu sehen ist, bis auf die Größe?
Die Frage ist ja wie ich ermittel, in welchen dpi Modus, sich der Dekstop gerade befindet?
...
Eine Möglichkeit dafür ist hier zu finden: http://www.purebasic.fr/english/viewtop ... 12&t=40507

oder mit

Code: Alles auswählen

spinfo.NONCLIENTMETRICS
spinfo\cbSize = SizeOf(spinfo)
SystemParametersInfo_(#SPI_GETNONCLIENTMETRICS,0,@spinfo,0)
FontSize=(- PeekL(@spinfo\lfMessageFont\lfHeight)) - 3
Im engl. Board gibt es Beispiele dazu. Dieses war, glaube ich, von RASHAD.
Bild
Antworten