viewpoint-particle

Author Topic: Maximum size for dialogs  (Read 318 times)

wagert

  • Newbie
  • *
  • Posts: 6
Maximum size for dialogs
« on: July 10, 2017, 11:53:47 am »
i'm working on developing a dialog that will be used in portrait mode on a windows tablet.

In the dialog editor, if i set a screen height > 531 (on my display at least), i cannot work with any controls that i would like to place >531 .. ie., the dialog editor window doesn't have scrolling / scrollbars.

Am i missing some place where i can do this in the dialog editor? or is this just the limit.. ie., cannot place/edit any controls beyond the visible screen

the tablet screen in portrait mode is 800x1200

Thanks
Scott

chrislegarth

  • Newbie
  • *
  • Posts: 14
Re: Maximum size for dialogs
« Reply #1 on: July 10, 2017, 01:14:35 pm »
I think it is a limitation, someone correct me if I am wrong.
What I've done in these situation is RDP to my workstation or VM with a larger than the final resolution.
The RDP session will then be scroll-able and you can make the dialog larger.

Thanks

td

  • Tech Support
  • *****
  • Posts: 2141
    • WinBatch
Re: Maximum size for dialogs
« Reply #2 on: July 10, 2017, 01:21:34 pm »
You may be missing that dialogs are sized and positioned in dialog units and not pixels.   You can find out more about dialog units in the Consolidated WIL Help file,  Windows Interface Language Reference -> Things to Know -> Dialogs -> Dialog Units.  For example, on one of my systems displays that is 1920 pixels wide,  a dialog close to the width of the screen is around 753 dialog units wide given the current system font. 

The point of using dialog units instead of pixels is that it allows the same dialog to display on different screen resolutions and remain more or less proportional and without controls being positioned off the dialog frame.  However, since you are going from landscape to portrait, you may need to do a little tweaking to the dimensions to get the desired effect. 

The one limitation of the Dialog Editor is that it will not allow you to visually create a dialog that absolutely fills the screen.  You can get close so simply setting the dialogs origin to 0,0 and adding the difference to the x and y sizes will be sufficient to make the dialog full screen.
"Success is a lousy teacher. It seduces smart people into thinking they can't lose."
  - Bill Gates


td

  • Tech Support
  • *****
  • Posts: 2141
    • WinBatch
Re: Maximum size for dialogs
« Reply #3 on: July 10, 2017, 01:36:28 pm »
I think it is a limitation, someone correct me if I am wrong.
What I've done in these situation is RDP to my workstation or VM with a larger than the final resolution.
The RDP session will then be scroll-able and you can make the dialog larger.

Thanks

You are correct about the Dialog Editor not having a scrollable editing area.   Using ad RDP session is good idea for a workaround.  Another would be to switch a development system to portrait mode, if supported.
"Success is a lousy teacher. It seduces smart people into thinking they can't lose."
  - Bill Gates


JTaylor

  • Pundit
  • *****
  • Posts: 748
    • Data & Stuff Inc.
Re: Maximum size for dialogs
« Reply #4 on: July 10, 2017, 01:47:17 pm »
Not sure if this would be helpful in your case or not but for what it is worth, I posted some UDFs, which are in the Tech Database, which allows you to resize and/or move controls as the dialog resizes.   This would allow you to development at whatever size you can and then the controls would move and/or grow proportionately as the dialog changed size.   If you want a fixed size no matter what and have a way to develop in a better environment then this, obviously, won't be of any use to you.   If you don't have a way to work in a better environment and only want a fixed size you could do what I suggest and have it write out the sizes after expanding to full-screen on the production screen.  You could then plug these into your dialog code.  Not ideal but if you have no other way....

Jim

JTaylor

  • Pundit
  • *****
  • Posts: 748
    • Data & Stuff Inc.
Re: Maximum size for dialogs
« Reply #5 on: July 10, 2017, 04:52:16 pm »
Here is an update-to-date version...

Code: Winbatch


Home_Path = DirScript()
DirChange(Home_Path)
GoSub Load_Routines
IntControl(49,3,0,0,0)

MoveFormat=`WWWDLGED,6.2`

MoveCaption=`Move/Size Controls`
MoveX=002
MoveY=038
MoveWidth=372
MoveHeight=278
MoveMinWidth=200
MoveMinHeight=175
MoveNumControls=010
MoveProcedure=`Move_Sub`
MoveFont=`DEFAULT`
MoveTextColor=`DEFAULT`
MoveBackground=`DEFAULT,0|0|0`
MoveConfig=0

Move001=`291,003,036,012,PUSHBUTTON,"pb_go",DEFAULT,"Go",1,1,@csDefButton,DEFAULT,DEFAULT,DEFAULT`
Move002=`331,003,036,012,PUSHBUTTON,"pb_exit",DEFAULT,"E&xit",0,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
Move003=`003,005,018,012,STATICTEXT,"st_url",DEFAULT,"URL:",DEFAULT,30,DEFAULT,"Microsoft Sans Serif|6144|70|34","255|255|255",DEFAULT`
Move004=`023,003,266,012,EDITBOX,"eb_url",url,"url",DEFAULT,40,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
Move005=`003,019,364,060,COMCONTROL,"cc_browser",DEFAULT,"Shell.Explorer.1",DEFAULT,50,DEFAULT,DEFAULT,DEFAULT,"128|128|128"`
Move006=`003,081,178,060,COMCONTROL,"cc_browser2",DEFAULT,"Shell.Explorer.1",DEFAULT,50,DEFAULT,DEFAULT,DEFAULT,"128|128|128"`
Move007=`189,081,178,060,COMCONTROL,"cc_browser3",DEFAULT,"Shell.Explorer.1",DEFAULT,50,DEFAULT,DEFAULT,DEFAULT,"128|128|128"`
Move008=`003,145,178,060,COMCONTROL,"cc_browser4",DEFAULT,"Shell.Explorer.1",DEFAULT,50,DEFAULT,DEFAULT,DEFAULT,"128|128|128"`
Move009=`189,145,178,060,COMCONTROL,"cc_browser5",DEFAULT,"Shell.Explorer.1",DEFAULT,50,DEFAULT,DEFAULT,DEFAULT,"128|128|128"`
Move010=`097,209,178,060,COMCONTROL,"cc_browser6",DEFAULT,"Shell.Explorer.1",DEFAULT,50,DEFAULT,DEFAULT,DEFAULT,"128|128|128"`

ButtonPushed=Dialog("Move")



Exit

:Load_Routines


#DefineSubRoutine Move_Sub(Mov_Handle,DMsg,DCID,DEInfo,ChangeInfo)

Switch (DMsg)
    Case @deInit
    DialogProcOptions(Mov_Handle, @deTimer,0)                             ; TimerEvent (0- Off).
    DialogProcOptions(Mov_Handle, @deClose,1)                             ; Close selected (IntControl(49....) (1-On, 0-Off).
    DialogProcOptions(Mov_Handle, @dpoDisable,0)                          ; Dialog Disable (1-Disable, 2-Wait cursor, 0-Enable).
    DialogProcOptions(Mov_Handle, @dpoBkground,-1)                        ; Change Dialog Background (Bitmap File or RGB String).
    DialogProcOptions(Mov_Handle, @deResize, 1)                           ; Resize Dialog.
    DialogProcOptions(Mov_Handle, @dePbPush,1)                            ; Pushbutton/PictureButton.
    DialogProcOptions(Mov_Handle, @deEdText,1)                            ; EditBox or Multi-LineBox.
   
   
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;This allows you to resize sub-dialogs using the same code.  Change these two variables in the sub-dialog callback
    ;and define the movement in the Get_Control_Movement function.  Reset this variable upon return.
    ;You must set the size limits in the Dialog itself or this code will fail.
   
    win_track = "Move"          
    Get_Control_Movement(Mov_Handle, win_track)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       
    browser = DialogObject(Mov_Handle,"cc_browser",@doGetObject)
    url = 'http://www.jtdata.com'
    browser.navigate(url)
    ;WaitForBrowser(browser)
   
    browser2 = DialogObject(Mov_Handle,"cc_browser2",@doGetObject)
    url = 'http://www.jtdata.com'
    browser2.navigate(url)
    ;WaitForBrowser(browser2)
   
    browser3 = DialogObject(Mov_Handle,"cc_browser3",@doGetObject)
    url = 'http://www.jtdata.com'
    browser3.navigate(url)
    ;WaitForBrowser(browser3)
   
    browser4 = DialogObject(Mov_Handle,"cc_browser4",@doGetObject)
    url = 'http://www.jtdata.com'
    browser4.navigate(url)
    ;WaitForBrowser(browser4)
   
    browser5 = DialogObject(Mov_Handle,"cc_browser5",@doGetObject)
    url = 'http://www.jtdata.com'
    browser5.navigate(url)
    ;WaitForBrowser(browser5)
   
    browser6 = DialogObject(Mov_Handle,"cc_browser6",@doGetObject)
    url = 'http://www.jtdata.com'
    browser6.navigate(url)
    ;WaitForBrowser(browser6)

    Break
  Case @deResize
    curr_xsize  = ItemExtract(1,DialogProcOptions(Mov_Handle, @dpoClientSize,-1)," ")
    curr_ysize  = ItemExtract(2,DialogProcOptions(Mov_Handle, @dpoClientSize,-1)," ")
    Resize_It(Mov_Handle)
    Break
  Case @deTimer
    Break
  Case @deClose
    Return 9
    Break
  Case @deEdText
    Switch(DialogProcOptions(Mov_Handle,@dpoCtlNumber,DCID))
      Case DialogProcOptions(Mov_Handle,@dpoCtlNumber,"eb_url")
        url = DialogControlGet(Mov_Handle,"eb_url",@dcText)
        Break
    EndSwitch
    Break
  Case @dePbPush
    Switch(DialogProcOptions(Mov_Handle,@dpoCtlNumber,DCID))
      Case DialogProcOptions(Mov_Handle,@dpoCtlNumber,"pb_go")
        button_text = DialogControlGet(Mov_Handle,"pb_go",@dcTitle)
        url = DialogControlGet(Mov_Handle,"eb_url",@dcText)
        browser.navigate(url)
        Break
      Case DialogProcOptions(Mov_Handle,@dpoCtlNumber,"pb_exit")
        button_text = DialogControlGet(Mov_Handle,"pb_exit",@dcTitle)
        Return 1
        Break
    EndSwitch
    Break
EndSwitch
Return -2

#EndSubRoutine
 


;Dialog Resize/Move example.  Requires a fairly recent WB version.  It uses the 6.2 version of dialogs and the new Dialog Constant variables.
;You can set a limit of how small you want to shrink/move controls within the Dialog itself.  This must be set or this code will generate an error.
;Jim Taylor (jtaylor@jtdata.com)


#DefineSubRoutine Get_Control_Movement(Mov_Handle, win_track)
 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;The following is the initial sizes, enumeration and settings
  ;for how a control will be handled during a resize. Obviously,
  ;it would be nice if this information was contained, and handled,
  ;by the Dialog.  You can GROW and MOVE the same control. You
  ;must define what percentage of the change the control will receive,
  ;both vertically and horizontally.  

  ;If you have stacked controls then keep in mind that the
  ;percentage of the move/grow changes as you move down/across.  
  ;That is, if you have four controls, the first one might stay
  ;where it is (no move) but have .25 for the grow,
  ;the second will receive .25 for the move and .25 for the grow,
  ;the third will have .5 for the move and .25 for the grow
  ;the fourth will have .75 for the move and .25 for the grow.  

  ;If you have very many controls you may find this easier to maintain
  ;in an external file and use ArrayFileGetCSV().  The following format
  ;will work.  The header row is important as it fills the first row
  ;thereby allowing one to use a one-based array.
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 
  Decimals(-1)
 
  init_xsize%win_track%   = ItemExtract(1,DialogProcOptions(Mov_Handle, @dpoClientSize, -1)," ")
  init_ysize%win_track%   = ItemExtract(2,DialogProcOptions(Mov_Handle, @dpoClientSize, -1)," ")

 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;This is the move/grow definition for each control
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  arr_txt = ""
    arr_txt = arr_txt:"name,                           movement,                            x_m,        x_g,        y_m,        y_g":@CR
  If win_track == "Move" Then

    arr_txt = arr_txt:"pb_go,        POS_MOVE_H,                      1,    1,    1,    1":@CR
    arr_txt = arr_txt:"pb_exit,      POS_MOVE_H,                      1,    1,    1,    1":@CR
    arr_txt = arr_txt:"st_url,       POS_FIX,                         1,    1,    1,    1":@CR
    arr_txt = arr_txt:"eb_url,       POS_GROW_H,                      1,    1,    1,    1":@CR
    arr_txt = arr_txt:"cc_browser,   POS_GROW_H|POS_GROW_V,           1,    1,  .25,  .25":@CR
    arr_txt = arr_txt:"cc_browser2,  POS_GROW_H|POS_MOVEGROW_V,      .5,   .5,  .25,  .25":@CR
    arr_txt = arr_txt:"cc_browser3,  POS_MOVEGROW_H|POS_MOVEGROW_V,  .5,   .5,  .25,  .25":@CR
    arr_txt = arr_txt:"cc_browser4,  POS_GROW_H|POS_MOVEGROW_V,      .5,   .5,   .5,  .25":@CR
    arr_txt = arr_txt:"cc_browser5,  POS_MOVEGROW_H|POS_MOVEGROW_V,  .5,   .5,   .5,  .25":@CR
    arr_txt = arr_txt:"cc_browser6,  POS_MOVE_H|POS_MOVEGROW_V,      .5,    1,  .75,  .25"

  EndIf

  arr_txt = StrReplace(arr_txt," ","")
  o_array%win_track% = Arrayize(arr_txt,@CR)
  ArrayRedim(o_array%win_track%,-1,7)
  xcnt = ArrInfo(o_array%win_track%,1)-1
  For x = 0 to xcnt
     txt = o_array%win_track%[x,0]
     o_array%win_track%[x,5] = ItemExtract(6,txt,",")
     o_array%win_track%[x,4] = ItemExtract(5,txt,",")
     o_array%win_track%[x,3] = ItemExtract(4,txt,",")
     o_array%win_track%[x,2] = ItemExtract(3,txt,",")
     o_array%win_track%[x,1] = ItemExtract(2,txt,",")
     o_array%win_track%[x,0] = ItemExtract(1,txt,",")
     If x > 0 Then o_array%win_track%[x,6] = DialogControlGet(Mov_Handle,o_array%win_track%[x,0],@dcPosition)
  Next
 
 
#EndSubRoutine


#DefineFunction Set_Control_Movement(Mov_Handle,xy,xdiff,ydiff,xt,yt,xb,yb,o_array)

  POS_FIX             =  0 ; Allow Move/Resize of Control                          
  POS_GROW_H          =  1 ; Fixed Position but grow Horizontally                  
  POS_GROW_V          =  2 ; Fixed Position but grow Vertically                    
  POS_MOVE_H          =  4 ; Move Horizontally with Resize but no growth          
  POS_MOVE_V          =  8 ; Move Vertically with Resize but no growth            
  POS_MOVEGROW_H      = 16 ; Grow and Move Horizontally
  POS_MOVEGROW_V      = 32 ; Grow and Move Vertically

  Decimals(-1)
  tvar     = o_array[xy,0]
  move_var = o_array[xy,1]
  ocutx_m  = o_array[xy,2]
  ocutx_g  = o_array[xy,3]
  ocuty_m  = o_array[xy,4]
  ocuty_g  = o_array[xy,5]

  xt_m_adj = 0
  yt_m_adj = 0
  xb_g_adj = 0
  yb_g_adj = 0

  If xt+(xdiff*%ocutx_m%) < 0 Then xt_m_adj = (xt+(xdiff*%ocutx_m%))*-1
  If yt+(ydiff*%ocuty_m%) < 0 Then yt_m_adj = (yt+(ydiff*%ocuty_m%))*-1
  If xb+(xdiff*%ocutx_g%) < 0 Then xb_g_adj = (xb+(xdiff*%ocutx_g%))*-1
  If yb+(ydiff*%ocuty_g%) < 0 Then yb_g_adj = (yb+(ydiff*%ocuty_g%))*-1

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
  Decimals(0)

  If %move_var% & POS_FIX Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt:" ":xb:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_MOVE_H && %move_var% & POS_MOVEGROW_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf
  If %move_var% & POS_MOVE_H && %move_var% & POS_GROW_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf
  If %move_var% & POS_MOVE_V && %move_var% & POS_GROW_H Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_MOVE_V && %move_var% & POS_MOVEGROW_H Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_GROW_H && %move_var% & POS_MOVEGROW_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%):" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf
  If %move_var% & POS_GROW_V && %move_var% & POS_MOVEGROW_H Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf
  If %move_var% & POS_MOVE_H && %move_var% & POS_MOVE_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_MOVE_H Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_MOVE_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_GROW_H && %move_var% & POS_GROW_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf
  If %move_var% & POS_GROW_H Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_GROW_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf
  If %move_var% & POS_MOVEGROW_H && %move_var% & POS_MOVEGROW_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf
  If %move_var% & POS_MOVEGROW_H Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt+(xdiff*%ocutx_m%)+xt_m_adj:" ":yt:" ":xb+(xdiff*%ocutx_g%)+xb_g_adj:" ":yb)
    Return  
  EndIf
  If %move_var% & POS_MOVEGROW_V Then
    DialogControlSet(Mov_Handle,tvar,@dcPosition,xt:" ":yt+(ydiff*%ocuty_m%)+yt_m_adj:" ":xb:" ":yb+(ydiff*%ocuty_g%)+yb_g_adj)
    Return  
  EndIf

#EndFunction
 
#DefineSubRoutine Resize_it(Mov_Handle)

  Decimals(-1)
  xdiff   = curr_xsize - init_xsize%win_track%
  ydiff   = curr_ysize - init_ysize%win_track%

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;Moving the dialog on the screen will often result in the size changing by one unit so
  ;I account for that here and do not resize if the change is only one unit.
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 
   ;test_text = ""
    xcnt = ArrInfo(o_array%win_track%,1)-1
    For xy = 1 to xcnt
      xt = ItemExtract(1,o_array%win_track%[xy,6]," ")
      yt = ItemExtract(2,o_array%win_track%[xy,6]," ")
      xb = ItemExtract(3,o_array%win_track%[xy,6]," ")
      yb = ItemExtract(4,o_array%win_track%[xy,6]," ")
      Decimals(0)
      Set_Control_Movement(Mov_Handle,xy,xdiff,ydiff,xt,yt,xb,yb,o_array%win_track%)
      Decimals(-1)
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      ;Refresh the Control as it doesn't always redraw correctly.
      ;The "pn_", "pi_" and "ca_" are prefixes I use for control names that cannot be refreshed in this manner.
      ;You may need to adjust this part.
      tvar = o_array%win_track%[xy,0]
      If StrSub(tvar,1,3) != "pn_" && StrSub(tvar,1,3) != "pi_" && StrSub(tvar,1,3) != "ca_" Then
        DialogControlSet(Mov_Handle,tvar,@dcBackColor,DialogControlGet(Mov_Handle,tvar,@dcBackColor))
      EndIf
    Next


#EndSubRoutine
 



Return

 

td

  • Tech Support
  • *****
  • Posts: 2141
    • WinBatch
Re: Maximum size for dialogs
« Reply #6 on: July 10, 2017, 05:51:16 pm »
Certainly a viable option.
"Success is a lousy teacher. It seduces smart people into thinking they can't lose."
  - Bill Gates


td

  • Tech Support
  • *****
  • Posts: 2141
    • WinBatch
Re: Maximum size for dialogs
« Reply #7 on: July 11, 2017, 06:11:46 am »
A bit tangential to the topic but I need to correct an error I made in the previous comment about setting a dialog box origin to 0,0.  The dialog origin as represented by a dialog template does not include the height of the  title bar.  So the y origin needs to be set to the return value WinMetrics(4) after that return value has been converted from pixels to dialog units.  Of course, it is much simpler to just maximize the dialog.
"Success is a lousy teacher. It seduces smart people into thinking they can't lose."
  - Bill Gates


wagert

  • Newbie
  • *
  • Posts: 6
Re: Maximum size for dialogs
« Reply #8 on: July 11, 2017, 11:09:29 am »
Well.. thanks to everybody for their comments and suggestions.  It doesn't look like I can get there from here..

re. the rdp approach.
i've been developing the dialog(s) on my regular win/7 system .. it's running 1920x1200 resolution.  the tablet is running 1200x800 (800x1200 in portrait orientation) (i understand how dialog units work in conjunction with with the screen resolution) ..  so, the highest screensize i can set in rdp is the highest resolution on the system where you are running the rdp client.  I can't rdp TO the tablet (unfortunately) since it's running win/10 home (rdp server is only (technically) available on professional & enterprise) though there may be a way to 'enable' rdp server on the tablet.. looking into trying that.  Additionally, it would require setting up winbatch on the tablet and developing the dialog there.. the concern there is that the tablet is almost brain-dead.. only 2 gig of memory.. pretty slow device.. but, i may still try it.

jTaylor's code looks interesting.. but may not help for this specific situation..  however, it's look pretty cool for other purposes i might have.

the last approach i'm pondering is to get the dialog metrics (height and width in portrait mode) that give me a reasonable size for the controls i want/need.. and then split the development into 2 pieces .. and 'upper' frame and a 'lower' frame.. developed in the dialog editor as 2 separate pieces.. and then 'glue' the lower frame code to the upper frame (concatenating code per se) just adjusting the y position of those controls in the lower frame to offset them.  i won't be able to manipulate the lower frame controls in the 'concatenated dialog' in the dialog editor, but at least i can get thing partways developed using the dialog editor (which is helpful).

i even tried manually sizing the editor window.. but windows won't allow a size > than full screen (at least when set manually).. even when placing/sizing parts of the window off the view-able screen.

ultimately, i'll have 2 dialogs.. 1 to use in landscape mode.. 1 in portrait mode.. (which might be where jTaylor's code might be of value.. automagically adjusting vs bruteforcing with 2 dialogs).

so, it's unfortunate that the dialog editor edit area can't scroll (even tho the editor is resize-able) (i'm assuming no further enhancements are being made to Winbatch).

Again, thanks for all the input.

Scott

td

  • Tech Support
  • *****
  • Posts: 2141
    • WinBatch
Re: Maximum size for dialogs
« Reply #9 on: July 11, 2017, 01:45:12 pm »
(i understand how dialog units work in conjunction with with the screen resolution)

That's encouraging.  It is very often an issue.

Quote

  so, the highest screensize i can set in rdp is the highest resolution on the system where you are running the rdp client.  I can't rdp TO the tablet (unfortunately) since it's running win/10 home (rdp server is only (technically) available on professional & enterprise) though there may be a way to 'enable' rdp server on the tablet.. looking into trying that.  Additionally, it would require setting up winbatch on the tablet and developing the dialog there.. the concern there is that the tablet is almost brain-dead.. only 2 gig of memory.. pretty slow device.. but, i may still try it.

With VESA mounted monitors (not necessary but convenient) rotated, switching to portrait mode gives me more than enough height.  The only down side is having to remember the custom display scaling when I set the monitor(s) back to landscape.

Quote

so, it's unfortunate that the dialog editor edit area can't scroll (even tho the editor is resize-able) (i'm assuming no further enhancements are being made to Winbatch).

Not sure where that idea came from but WinBatch is definitively still being enhanced and developed at the same pace that it has been for the last 10 years.  (Expect for a brief interruption while we started a new company.)

Unfortunately, given current development priorities,  I would not count on any major changes to the Dialog Editor any time in the near future.   
"Success is a lousy teacher. It seduces smart people into thinking they can't lose."
  - Bill Gates