WQVGA Screen Detection?

dlfallen

Active Member
Licensed User
Longtime User
Is there any way to detect whether a program is running on a device with WQVGA (400 x 240) resolution?

I would like to be able to take advantage of the additional screen space when it is available. Although I apparently cannot change the form size at runtime, I noticed that if a control extends well below the default 320, that extra part of the control is visible and useful. For example, I specify a form of 320 x 240 and place a label at Top = 240 and Height = 105. I give the label a long text that results in several lines of word wrapping. If I run this program on the IDE, only two lines of text are visible but if I run the compiled app on my WQVGA device then several lines of text are visible.
 

klaus

Expert
Licensed User
Longtime User
I do by calculating the screen ratio.
B4X:
[FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]Form1.Show[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2] Form1.Width>Form1.Height [/SIZE][/FONT][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]Then[/COLOR][/SIZE][/FONT]
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]  ScreenRatio=Form1.Width/Form1.Height[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]Else[/COLOR][/SIZE][/FONT]
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]  ScreenRatio=Form1.Height/Form1.Width[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]End[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff][FONT=Courier New][SIZE=2][COLOR=#0000ff]If[/COLOR][/SIZE][/FONT]
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000][FONT=Courier New][SIZE=2][COLOR=#008000]' If ScreenRatio<1.35 Then 240/320 or 480/640 [/COLOR][/SIZE][/FONT]
[SIZE=2][FONT=Courier New][COLOR=#008000]' If ScreenRatio>1.35 Then 240/400 or 480/800 [/COLOR][/FONT][/SIZE][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]

Best regards.
 

dlfallen

Active Member
Licensed User
Longtime User
I'm not sure I follow. The Form1.width and Form1.height are set by the designer, no? If the designer set Form1.width = 240 and Form1.height = 320 is this not what your screenratio is based on? In other words, wouldn't your screenratio return 1.333 in this instance, regardless of the device resolution?

I want to detect the native resolution of the device, not the form dimensions set by the designer. In Basic4PPC version 6.8 you can calculate whether the device is qvga or vga, but I don't see a way to calculate if the device is wqva -- or am I missing something here?
 

klaus

Expert
Licensed User
Longtime User
The size of a form on the device is allways the size of the screen.
You can change the size of a form only on the desktop.
On a device with a screen size of 240*320 the form size is this one even if you set a screen size of 240*400 on the desktop.

Best regards.
 

dlfallen

Active Member
Licensed User
Longtime User
Klaus - you are correct, as usual. I don't know why this critical concept escaped me, but I have it now.

For the curious, I tested the reported form height and width in the various WM emulator scenarios. Here are the results (see attached jpg).

Interesting, thanks Klaus!
 

Attachments

  • FormSize.jpg
    FormSize.jpg
    37.5 KB · Views: 205

klaus

Expert
Licensed User
Longtime User
I noticed that even with FullScreen without the title bar and also without both titlebar and menubar the width and height of the form are not updated in B4PPC.
If you want the real user size of the form you can use the Door library and read the Width and Height properties of the form.
In this case, when you remove the titlebar and or the menubar the values are updated.
But it gives you the real values in pixels, that means when optimized compiled with AutoScale:
on a QVGA / WQVGA screen you get
Form1.Width = 240
Form1.Height = 268 QVGA
Form1.Height = 348 WQVGA
obj.GetProperty("Width") = 240
obj.GetProperty("Height") = 268 / 294 / 320 QVGA
obj.GetProperty("Height") = 348 / 376 / 400 WQVGA

and on a VGA / WVGA screen you get
Form1.Width = 240
Form1.Height = 268 VGA
Form1.Height = 348 WVGA
obj.GetProperty("Width") = 480
obj.GetProperty("Height") = 536 / 588 / 640 VGA
obj.GetProperty("Height") = 696 / 748 / 800 WVGA

The difference of the height value is due the heights, 26 / 52 pixels, of the titlebar and menubar.

Attached a small test program.

Best regards.
 

Attachments

  • FormSize1.sbp
    1.8 KB · Views: 216
Top