Help creating a Dialog for Tablet Windows

User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Help creating a Dialog for Tablet Windows

Post by Silvio.Falconi »

Friends,

I 'm creating a dialog for Tablet application with 12 BTNBMP buttons

Image

I not have the tablet also and I not Know the resolution screen of Tablet

I think it can have 1280 x 800 Pixel But I am not sure

I wish create a dialog and it must run good on all resolutions.

How I can make it ?

How I can test a resolution ?
To try any resolution I pass on exe two parameters
sample : Myapp.exe 800 600 and on my Function Main I have

Code: Select all

Function Main(cPar1,cpar2)
Or

I read on a file INI the parameter I need sample :

Code: Select all

nres1=1024
nres2=700

the problem i create the dialog with btnbmp buttons

I make a test but when I change the resolution the buttons not resize .... any solution ?
My small test

Code: Select all

 
#include "FiveWin.ch"

// test creating dialog with btnbmp for tablet menu

Function Test()
Local oDlgTablet
Local aBtnMenu:= array(12)
Local aBtnMenuImage:=array(12)
Local aBtnMenuTitle:=array(12)
Local n
Local oFont

Local nMINWidth  := 800//::cResTablet1
Local nMINHeight := 600//::cResTablet2
Local nMAXWidth := GETSYSMETRICS( 0 ) //risoluzione orizzontale
Local nMAXHeight := GETSYSMETRICS( 1 ) //risoluzione verticale
Local nSizeWBtn :=90
Local nSizeHBtn :=90
Local nSizeWSpace :=20
Local nSizeHSpace :=10
Local cTitle:= "Test menu button Tablet"


DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14

DEFINE DIALOG oDlgTablet  SIZE nMINWidth,nMINHeight ;
        FONT oFont;
        TITLE cTitle

oDlgTablet:nStyle    := nOr( WS_OVERLAPPED,WS_THICKFRAME,WS_MAXIMIZEBOX,   0  )//WS_SYSMENU


For n= 1 to 12

 @ 5,50 BTNBMP aBtnMenu[n] FILE aBtnMenuImage[n] ;
              PROMPT aBtnMenuTitle[n] FLAT SIZE nSizeWBtn,nSizeHBtn ;
                    PIXEL OF oDlgTablet COLOR CLR_WHITE, RGB( 120,136,85 ) ACTION NIL
Next n


 oDlgTablet:aMinMaxInfo = { GETSYSMETRICS( 0 ), GETSYSMETRICS( 1 ),;  // xMaxSize,      yMaxSize
                                                              0,  0,;  // xMaxPosition,  yMaxPosition
                                             nMINWidth,  nMINHeight,;  // xMinTrackSize, yMinTrackSize
                                             nMAXWidth, nMAXHeight }

     oDlgTablet:bResized := { || ;
      oRect          := oDlgTablet:GetCliRect(), ;
      aBtnMenu[1]:nLeft    := oRect:nLeft +10 ,;
      aBtnMenu[2]:nLeft    := oRect:nLeft +nSizeWBtn+nSizeWBtn+15,;
      aBtnMenu[3]:nLeft    := oRect:nLeft +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+20  ,;
      aBtnMenu[4]:nLeft    := oRect:nLeft +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+25,;
      aBtnMenu[5]:nTop     := oRect:nTop  +nSizeWBtn+nSizeWBtn+20,;
      aBtnMenu[5]:nLeft    := oRect:nLeft +10,;
      aBtnMenu[6]:nTop     := oRect:nTop  +nSizeWBtn+nSizeWBtn+20,;
      aBtnMenu[6]:nLeft    := oRect:nLeft +nSizeWBtn+nSizeWBtn+15,;
      aBtnMenu[7]:nTop     := oRect:nTop  +nSizeWBtn+nSizeWBtn+20,;
      aBtnMenu[7]:nLeft    := oRect:nLeft +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+20  ,;
      aBtnMenu[8]:nTop     := oRect:nTop  +nSizeWBtn+nSizeWBtn+20,;
      aBtnMenu[8]:nLeft    := oRect:nLeft +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+25,;
      aBtnMenu[9]:nTop     := oRect:nTop  +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+30,;
      aBtnMenu[9]:nLeft    := oRect:nLeft +10 ,;
      aBtnMenu[10]:nTop    := oRect:nTop  +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+30,;
      aBtnMenu[10]:nLeft   := oRect:nLeft +nSizeWBtn+nSizeWBtn+15,;
      aBtnMenu[11]:nTop    := oRect:nTop  +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+30,;
      aBtnMenu[11]:nLeft   := oRect:nLeft +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+20  ,;
      aBtnMenu[12]:nTop    := oRect:nTop  +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+30,;
      aBtnMenu[12]:nLeft   := oRect:nLeft +nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+nSizeWBtn+25 }

    ACTIVATE DIALOG oDlgTablet //CENTERED
    RETURN NIL


 
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Help creating a Dialog for Tablet Windows

Post by hmpaquito »

Perhaps oDlg:bResized is used when dialog is resized clicking corner or lateral or maximized.
Gale FORd
Posts: 663
Joined: Mon Dec 05, 2005 11:22 pm
Location: Houston
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by Gale FORd »

Don't forget Portrait vs Landscape orientation.
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Help creating a Dialog for Tablet Windows

Post by Silvio.Falconi »

Gale FORd wrote:Don't forget Portrait vs Landscape orientation.
How make it ?

New test.prg

Code: Select all

#include "FiveWin.ch"
#include "xBrowse.ch"

function Test()

   local oDlg, oBrw, oBtn1, oBtn2, oRect
   local oBar
   Local nMINWidth  := 800//::cResTablet1
   Local nMINHeight := 600//::cResTablet2
   Local nMAXWidth := GETSYSMETRICS( 0 ) //risoluzione orizzontale
   Local nMAXHeight := GETSYSMETRICS( 1 ) //risoluzione verticale


   USE STATES  // use any DBF you have

   DEFINE FONT oFontMenuTablet NAME "TAHOMA" SIZE 0,-26

   DEFINE DIALOG oDlg SIZE nMINWidth,nMINHeight PIXEL TRUEPIXEL ;
   STYLE nOR( WS_OVERLAPPED,WS_THICKFRAME,WS_MAXIMIZEBOX,   0  ) FONT oFontMenuTablet ;
   TITLE "Selezione Turni"

   DEFINE BUTTONBAR  oBar SIZE 150,90 2013

   @ 130,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
      DATASOURCE "STATES" AUTOCOLS NOBORDER  LINES

   oBrw:CreateFromCode()

   BrwBarBtns( oBar, oBrw, oDlg )

  * @ 350,500 BUTTON oBtn2 PROMPT "&Close" SIZE 80,30 PIXEL OF oDlg ACTION oDlg:End()

/*   oDlg:bResized := { || ;
      oRect          := oDlg:GetCliRect(), ;
      oBtn2:nTop     := oRect:nBottom - 50, ;
      oBtn2:nLeft    := oRect:nRight - 100   }
        */

      oDlg:aMinMaxInfo = { GETSYSMETRICS( 0 ), GETSYSMETRICS( 1 ),;  // xMaxSize,      yMaxSize
                                                              0,  0,;  // xMaxPosition,  yMaxPosition
                                             nMINWidth,  nMINHeight,;  // xMinTrackSize, yMinTrackSize
                                             nMAXWidth, nMAXHeight }







   ACTIVATE DIALOG oDlg CENTERED

   return nil

//------------------------------------------------------------------------------------//

     function BrwBarBtns( oBar, oBrw,oDlg )

       local n := 1

      DEFINE BUTTON OF oBar FILE ".\BITMAPS\page_up.ICO" PROMPT "Vai all'inizio" TOOLTIP "Vai all'inizio" ;
      ACTION ( oBrw:GoTop(), oBrw:SetFocus() )   GROUP

      DEFINE BUTTON OF oBar FILE ".\BITMAPS\page_down.ICO" PROMPT "Vai alla fine" TOOLTIP "Vai alla fine" ;
      ACTION ( oBrw:GoBottom(), oBrw:SetFocus() )   GROUP

       DEFINE BUTTON OF oBar FILE ".\BITMAPS\page_down.ICO" PROMPT "Cerca" TOOLTIP "Cerca" ;
      ACTION ( oBrw:GoBottom(), oBrw:SetFocus() )   GROUP

      DEFINE BUTTON OF oBar FILE ".\BITMAPS\SI.ICO" PROMPT "&Conferma" TOOLTIP "Conferma" ;
      ACTION (oDlg:End())     GROUP

      DEFINE BUTTON OF oBar FILE ".\BITMAPS\NO.ICO" PROMPT "&Annulla" TOOLTIP "Annulla" ;
      ACTION (oDlg:End())  GROUP

   return nil

 
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
Gale FORd
Posts: 663
Joined: Mon Dec 05, 2005 11:22 pm
Location: Houston
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by Gale FORd »

Here was a discussion of these issues.
http://forums.fivetechsupport.com/viewt ... ce#p183824

Another problem was the behavior differenance between Windows 10 on-screen keyboard and Windows 7 on-screen keyboard. Sometimes they cover part of the screen even when docked.
User avatar
TimStone
Posts: 2536
Joined: Fri Oct 07, 2005 1:45 pm
Location: Trabuco Canyon, CA USA
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by TimStone »

First, find out the resolution of the tablet. There are many possibilities but use the one for your client's tablet.

You can try setting the resolution on your monitor to the same size. At least set the Main Window to that size.

Here is a major problem. You can get everything to fit, but when showing it on the tablet, even if you know the resolution, fields may be too small to read. Tablets allow for very little data to be displayed.
Tim Stone
http://www.MasterLinkSoftware.com
timstone@masterlinksoftware.com
Using: FWH 19.06 with Harbour 3.2.0 / Microsoft Visual Studio Community 2019
Gale FORd
Posts: 663
Joined: Mon Dec 05, 2005 11:22 pm
Location: Houston
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by Gale FORd »

I found a way to adjust Windows 10 on-screen keyboard size.
Keyboard is set to % of screen size. So if you set scaling to a bigger screen size in registry then in actuality it will make the keyboard smaller on tablet.
Here is nice setting I use for Panasonic 10" Toughpad tablets.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Scaling]
"MonitorSize"="16.0"
Gale FORd
Posts: 663
Joined: Mon Dec 05, 2005 11:22 pm
Location: Houston
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by Gale FORd »

I also like to use the standard keyboard so I have registry mod to turn on and select standard keyboard.

Code: Select all

function AddStandardKeyboard()
   local oReg, nError
   oReg := TReg32():New( HKEY_LOCAL_MACHINE, ;
      "Software\Microsoft\TabletTip\1.7", .f. )
   if oReg:nError == 0
      oReg:Set( "EnableCompatibilityKeyboard", 1 )
      oReg:Set( "KeyboardLayoutPreference", 2 )
   endif
   nError := oReg:nError
   if nError != 0
      msginfo( 'Could not set keyboard type in registry')
   endif
   oReg:close()

return nError
 
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by Biel EA6DD »

As we saw in Sillian, using Daniel's class tLayOut, we should not worry about screen resolution and controls size.

Code: Select all

#include "FiveWin.ch"
FUNCTION Main()
   LOCAL oWnd,cTitle,i,j,n
   LOCAL hLay:={=>},hFont:={=>}
   Local aBtnMenu     :=array(12)
   Local aBtnMenuImage:=array(12)
   Local aBtnMenuTitle:=array(12)
   cTitle:= "Test menu button Tablet"

   DEFINE FONT hFont["title"] NAME "TAHOMA" SIZE 0,-28
   DEFINE WINDOW oWnd FROM 0,0 TO 20,80 COLOR CLR_WHITE, CLR_BLUE //STYLE nOr( WS_POPUP, WS_VISIBLE ) //Uncommend if you don't want Window frame
   hLay["MAIN"]   := TLayout():new( oWnd )
   hLay["TOP"]    := hLay["MAIN"]:addVLayout(100) //Reserved on Top
   hLay["BDY"]    := hLay["MAIN"]:addVLayout()    //Body (Autoadjust)
   hLay["BTM"]    := hLay["MAIN"]:addVLayout(20)  //Reserved pixels on Bottom
   @  05, 69 SAY cTitle FONT hFont["title"] COLOR CLR_WHITE, CLR_BLUE OF hLay["TOP"] TRANSPARENT PIXEL

   //Creating Body LayOuts
   n:=0
   FOR i:=1 TO 3
      n++
      hLay[hb_ntos(i)]:=hLay["BDY"]:addVLayout()
      FOR j:=1 TO 4
         hLay[hb_ntos(i)+'.'+hb_ntos(j)]:=hLay[hb_ntos(i)]:addHLayout()
         @ 0,0 BTNBMP aBtnMenu[n] FILE aBtnMenuImage[n] ;
                   PROMPT aBtnMenuTitle[n] FLAT ;
                   PIXEL OF hLay[hb_ntos(i)+'.'+hb_ntos(j)] COLOR CLR_WHITE, RGB( 120,136,85 ) ACTION NIL
         hLay[hb_ntos(i)+'.'+hb_ntos(j)]:oClient:=aBtnMenu[n]
      NEXT
   NEXT
   ACTIVATE WINDOW oWnd MAXIMIZED
RETURN NIL
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Help creating a Dialog for Tablet Windows

Post by Silvio.Falconi »

Right I remember
but then we must use allways tlayot class ?
for the edit dialog ?
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by nageswaragunupudi »

Whether desktop or tablet, we need to design all our screens suitable to any resolution and orientation.

Please try this small sample:

Code: Select all

#include "fivewin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oDlg, aBtn[ 12 ], cBmpPath, aBmp
   local n

   cBmpPath    := "c:\fwh\bitmaps\32x32\"
   aBmp        := DIRECTORY( cBmpPath + "*.bmp" )

   DEFINE DIALOG oDlg SIZE Int( ScreenWidth() * 0.85 ), Int( ScreenHeight() * 0.85) PIXEL TRUEPIXEL

   for n := 1 to 12
      @ 40, 40 BTNBMP aBtn[ n ] PROMPT NTOCMONTH(  n ) ;
         FILE cBmpPath + aBmp[ n, 1 ] ;
         SIZE 100,50 PIXEL OF oDlg 2007 ;
         ACTION BtnAction( Self )
      aBtn[ n ]:Cargo := n
   next

   oDlg:bOnDisplayChange   := { || DlgResize( oDlg, aBtn ) }

   ACTIVATE DIALOG oDlg CENTERED ON INIT DlgResize( oDlg, aBtn )

return nil

//----------------------------------------------------------------------------//

function DlgResize( oDlg, aBtn )

   local i, j, n, r, c, w, h

   WITH OBJECT oDlg
      :nWidth     := Int( ScreenWidth()  * 0.85 )
      :nHeight    := Int( ScreenHeight() * 0.85 )

      w           := ( :nWidth  - 60 ) / 4
      h           := ( :nHeight - 80 ) / 3

   END

   r     := 20
   n     := 1
   for i := 1 to 3
      c     := 20
      for j := 1 to 4
         WITH OBJECT aBtn[ n ]
            :nTop    := r
            :nLeft   := c
            :nWidth  := w - 10
            :nHeight := h - 10
         END
         n++
         c     += w
      next j
      r  += h
   next i

   oDlg:Center()
   oDlg:Refresh()

return nil

//----------------------------------------------------------------------------//

function BtnAction( oBtn )

   msginfo( oBtn:Cargo )

return nil

//----------------------------------------------------------------------------//
Please note the usage of bOnDisplayChange.
Regards

G. N. Rao.
Hyderabad, India
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Help creating a Dialog for Tablet Windows

Post by Silvio.Falconi »

perhaps there is an error

Error description: Error BASE/1132 Bound error: array access
Args:
[ 1] = A { ... } length: 0
[ 2] = N 1
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Help creating a Dialog for Tablet Windows

Post by Silvio.Falconi »

no sorry my mistake
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Help creating a Dialog for Tablet Windows

Post by nageswaragunupudi »

Please check these lines and give correct path

cBmpPath := "c:\fwh\bitmaps\32x32\" // give your path
aBmp := DIRECTORY( cBmpPath + "*.bmp" )
Regards

G. N. Rao.
Hyderabad, India
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Help creating a Dialog for Tablet Windows

Post by Silvio.Falconi »

yes yes I found the error
I use c:\work\fwh...
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
Post Reply