Seite 1 von 1

Resizefehler (dpi aware)

Verfasst: 17.01.2019 22:53
von matbal
Hallo Leute, könnt ihr das verifizieren?

Folgende Situation: Die Bildschirmskalierung steht auf 150 Prozent und in den Compileroptionen ist "Enalbe DPI aware executable" aktiviert. (Bei 100 Prozent ist alles in Ordnung)
Im Zusammenhang mit dem AutoResizer-Include verhielten sich Comboboxen chaotisch.
Ich konnte das Problem bei mir mit dem Code nachstellen:

Code: Alles auswählen

Procedure Resize()
   Protected ww = WindowWidth(0)
   Protected wh = WindowHeight(0)
   
   ResizeGadget(1, #PB_Ignore, #PB_Ignore, ww - 20, #PB_Ignore) ; Höhe korrekt
   
   ResizeGadget(2, #PB_Ignore, #PB_Ignore, ww - 20, #PB_Ignore) ; Höhe wird immer kleiner 
   ;ResizeGadget(2, #PB_Ignore, #PB_Ignore, ww - 20, 20)    ; Höhe 2 Pixel zu klein
   
   Debug GadgetHeight(2)
   
EndProcedure


OpenWindow(0, 100, 100, 400, 300, "Test", #PB_Window_SizeGadget | #PB_Window_SystemMenu)

StringGadget(1, 10, 10, 380, 20, "String")
ComboBoxGadget(2, 10, 40, 380, 20) 

;ResizeGadget(2, #PB_Ignore, #PB_Ignore, #PB_Ignore, #PB_Ignore) ; Höhe verringert sich
  
Debug GadgetHeight(2)


BindEvent(#PB_Event_SizeWindow, @Resize())

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Problem scheint ResizeGadget() mit #PB_Ignore als 4 Parameter und der ComboBox zu sein. Die Höhe der ComboBox wird bei jedem Aufruf von ResizeGadget um 2 Pixel kleiner. (Mein System: PB 5.70 unter Win10)

EDIT: Da niemand reagiert, habe ich noch ein Clip, der den Fehler zeit: https://www.dropbox.com/s/2cg652t8pm36w ... t.mp4?dl=0


Was ich seltsam für die finale PB-Version finde, der FormDesigner ist bei eingestellter Windows-Bildschirmskalierung absolut unbrauchbar geworden.

Re: Resizefehler (dpi aware)

Verfasst: 26.01.2019 10:17
von Kurzer
Hallo matbal,

ich kann das Problem unter Windows 7 x64 mit PB 5.70 final bestätigen.
Beim Ändern der Fenstergröße wird die CMB offenbar bei jedem Resize-Event stetig in der Höhe verkleinert bis zu einem Minimalwert, um dann wieder auf die ursprüngliche Größe gesetzt zu werden. Dann beginnt das Spiel von neuem.

Bzgl. des Formdesigners und der neuen DPI aware Funktion von PB hatte ich hier auch schon mal meine Konfusion geäußert. Ich habe das nach ein paar Wochen aber nicht mehr weiter verfolgt, da ich derzeit eher in anderen Bereichen aktiv bin.

Re: Resizefehler (dpi aware)

Verfasst: 26.01.2019 10:44
von Nino
matbal hat geschrieben:Was ich seltsam für die finale PB-Version finde, der FormDesigner ist bei eingestellter Windows-Bildschirmskalierung absolut unbrauchbar geworden.
Dazu fällt mir ehrlich gesagt nur folgendes ein:
HeX0R hat geschrieben:Geht's nur mir so, oder ist diese 5.70 irgendwie aus der Not geboren?

Re: Resizefehler (dpi aware)

Verfasst: 26.01.2019 11:13
von Mijikai
Mit dem Speicherfehler von #Null$ einer der Hauptgründe warum ich nicht auf 5.70 umsteige!

Re: Resizefehler (dpi aware)

Verfasst: 26.01.2019 11:43
von _JON_
Lasst einfach die Finger von der 5.70.

Wenn man sowas hier als Final sieht, ist doch klar dass,
das Team den High DPI Sinn gar nicht verstanden hat.

Re: Resizefehler (dpi aware)

Verfasst: 26.01.2019 12:54
von mk-soft
Läuft also mit der neuen Funktion nicht alles perfekt.

Siehe Link: https://www.purebasic.fr/english/viewto ... 4&start=30

Mit dem Modul ScaleGadget kann man aber erst mal einiges abfangen
und mit der nächsten version von PB sollte es klappen. Fred hat sich dazu auch schon kurz geäussert.

Link zu ScaleGadget: https://www.purebasic.fr/english/viewto ... 12&t=71823

Code: Alles auswählen

;-TOP

; Example compiler options 'Enable DPI-Aware'

IncludeFile "Modul_ScaleGadgets.pb"

UseModule ScaleGadgets

Enumeration Window 1
  #Main
EndEnumeration

Enumeration Gadget
  #Editor
  #Container
  #ButtonB0
  #ButtonB1
  #ButtonB2
EndEnumeration

Enumeration MenuItem
  #New
  #Load
  #Save
  #Exit
EndEnumeration

Enumeration StatusBar
  #StatusBar
EndEnumeration

; -----------------------------------------------------------------

Global ExitApplication

Global dpi.f = DesktopResolutionX()
SetScale(dpi)

; -----------------------------------------------------------------

Procedure DoSizeWindow()
  ResizeGadget(#Editor, 10, 10, WindowWidth(#Main) - 20 , WindowHeight(#Main) - 105 - MenuHeight())
  ResizeGadget(#Container, 10, WindowHeight(#Main) - 85 - MenuHeight() , WindowWidth(#Main) - 20, 50)
  ;ScaleAllGadgets(#Main, MenuHeight() + StatusBarHeight(#StatusBar))
EndProcedure

; -----------------------------------------------------------------

Procedure OpenMain(x = 10, y = 10, width = 550, height = 415)
  OpenWindow(#Main, x, y, width, height + MenuHeight(), "Module ScaleGadgets", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
  
  If CreateMenu(0, WindowID(#Main))
    ; Mac Menu´s
    CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
      MenuItem(#PB_Menu_About, "")
      MenuItem(#PB_Menu_Preferences, "")
      MenuItem(#PB_Menu_Quit, "")
    CompilerEndIf
    MenuTitle("&File")
    MenuItem(#New, "&New")
    MenuItem(#Load, "&Load")
    MenuItem(#Save, "&Save")
    MenuBar()
    MenuItem(#Exit, "&Exit")
  EndIf
  
  CreateStatusBar(#StatusBar, WindowID(#Main))
  AddStatusBarField(#PB_Ignore)
  StatusBarText(#StatusBar, 0, "ScaleGadgets")
  EditorGadget(#Editor, 10, 10, 530, 310)
  SetGadgetText(#Editor, "I like Purebasic!")
  ContainerGadget(#Container, 10, 330, 530, 50, #PB_Container_Single)
  ButtonGadget(#ButtonB0, 10, 10, 160, 30, "Button 0")
  ButtonGadget(#ButtonB1, 180, 10, 170, 30, "Button 1")
  ButtonGadget(#ButtonB2, 360, 10, 160, 30, "Button 2")
  CloseGadgetList()
EndProcedure

OpenMain()

BindEvent(#PB_Event_SizeWindow, @DoSizeWindow())

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      ExitApplication = 1
      
  EndSelect
Until ExitApplication

End
[/size]

Re: Resizefehler (dpi aware)

Verfasst: 26.01.2019 13:04
von Kurzer
mk-soft hat geschrieben:Läuft also mit der neuen Funktion nicht alles perfekt.
Siehe Link: https://www.purebasic.fr/english/viewto ... 4&start=30
[...]
Fred hat sich dazu auch schon kurz geäussert.
Wo denn genau? Oder meinst Du sein kurzes "I will take a look" in dem oben verlinkten Thread? :)

Re: Resizefehler (dpi aware)

Verfasst: 26.01.2019 13:11
von mk-soft
Kurzer hat geschrieben:
mk-soft hat geschrieben:Läuft also mit der neuen Funktion nicht alles perfekt.
Siehe Link: https://www.purebasic.fr/english/viewto ... 4&start=30
[...]
Fred hat sich dazu auch schon kurz geäussert.
Wo denn genau? Oder meinst Du sein kurzes "I will take a look" in dem oben verlinkten Thread? :)
Ja genau :mrgreen:

Zu mindestens ein Erkenntnis das es Fred gelesen hat <)