Parameter cSysTem,nOption
cSysTem=Iif(Type('cSysTem')<>'C' .or. Empty(cSysTem),'HO',cSysTem)
nOption=Iif(Type('nOption')<>'N' .or. Empty(nOption),1,nOption)
** cSysTem 'HO'=โรงแรม  ,'PS'=Pos  ,'PE'=เพ็ทแคร์  'MA'=สปา 
** nOption 1=หน้าร้าน ,2=หลังร้าน ,3=จาก Fox_Environ2.scx
If !File('Dbfrun\RepoWay.Dbf')
	Return 
Endif 
If !Used('Repoway')
	Use Dbfrun\RepoWay In 0 Share Alias RepoWay
	Go Top In RepoWay
Endif 
If Type('RepoWay.ProgHeight')<>'N'
	Return 
Endif 
If Between(nOption,1,2)
	*** Windows
	m.AutoScrWin=RepoWay.AutoScrWin
	m.WinWidth=RepoWay.WinWidth
	m.WinHeight=RepoWay.WinHeight
	*** Programn
	m.AutoScrPrg=RepoWay.AutoScrPrg
	m.ProgWidth=RepoWay.ProgWidth
	m.ProgHeight=RepoWay.ProgHeight
Endif 
**** สำหรับปรับแต่งหน้าจออัตโนมัติตอนเข้าโปรแกรม 
** ตรวจสอบและปรับเปลี่ยนหน้าจอ ของ วินโดร์ 
** Sysmetric(1) = แนวนอนของ วินโดร์
** Sysmetric(2) = แนวตั้งของ วินโดร์ 
** _SCREEN.WIDTH  = แนวนอนของ โปรแกรม
** _SCREEN.HEIGHT = แนวตั้งของ   โปรแกรม
** ควรตั้งที่ 1280,720 ,  1280,768 	ลูกค้า
** ควรตั้งที่ 1440,900 			ทำงาน
** cpHoToPrg  'HD',HFR','FRO','HO'
If m.AutoScrWin=1 .and. (m.WinWidth+m.WinHeight>1500 .or. m.WinWidth=0)   && ปรับสำหรับวินโดร์ 
	** Do ChgWinResol With 1280,768
	Do Case 
	Case m.WinWidth=0 && ค่าปรกติ 
		Do ChgWinResol With 1280,768	
	Case m.WinWidth=1 && ค่าปรกติ 
		Do ChgWinResol With 1600,900
	Otherwise 
		Do ChgWinResol With m.WinWidth,m.WinHeight   && กว้าง*สูง สำหรับปรับสกรีนของวินโดร์
	EndCase
Endif 	
If m.AutoScrPrg=1 .and. (m.ProgWidth+m.ProgHeight>1500 .or. Between(m.ProgWidth,0,2))   && ปรับสำหรับโปรแกรม
	** กว้าง*สูง สำหรับปรับสกรีนของโปรแกรม && ปรกติ 97,85 หรือส่งเป็นตัวเลขก็ได้  1249,630  หรือ 1280,670  หรือ 2,2
	** n4Width=1280
	** n4Height=670
	Do Case 
	Case m.ProgWidth=0 && ปรกติ 
		Do CheckFOXRes With 1280,671
		If cSysTem='HO' .and. nOption=2 && ระบบ Manager 
			Do CheckFOXRes With 1280,720
		ENdif 
	Case m.AutoScrWin=1 .and. Between(m.ProgWidth,1,2)
		* 1 = ยุบหน้าจอ  2=เต็มหน้าจอ
		Do CheckFOXRes With m.ProgWidth,m.ProgHeight
	Otherwise 
		Do CheckFOXRes With m.ProgWidth,m.ProgHeight
	EndCase
Endif 
** 0,0= ไม่ต้องปรับ 1,1= ยุบหน้าจอ 2,2= เต็มหน้าจอ 
Do Case 
Case m.AutoScrWin=1 .and. m.AutoScrPrg=1 
	_Screen.WindowState=2 
Case Between(m.WinHeight,720,900)
	_Screen.WindowState=2 
EndCase
Return 



Procedure ChgWinResol && สำหรับปรับสกรีนของวินโดร์
Parameter nWide,nHigh
If Sysmetric(1)<>nWide .or. Sysmetric(2)<>nHigh
	m.nfShowBOX=1
	*Do Fox_Show With 1,'หน้าจอ Windows','กว้าง = '+ Alltrim(Str(sysmetric(1)))+' '+'สูง = '+ Alltrim(Str(sysmetric(2))),'แก้ไขในไฟล์ Screen4You.Prg';
	*,'ต้องการปรับเป็น '+Alltrim(Str(nWide))+'X'+Alltrim(Str(nHigh))
	If m.nfShowBOX=1
	      	Do Changeres With nWide,nHigh
	Endif 
Else
	*Do Fox_Show With 1,'หน้าจอ Windows','กว้าง = '+ Alltrim(Str(sysmetric(1)))+' '+'สูง = '+ Alltrim(Str(sysmetric(2))),'แก้ไขในไฟล์ Screen4You.Prg',''
Endif 
Return 


FUNCTION ChangeRes
LPARAMETERS tnWidth, tnHeight
LOCAL lnWidth, lnHeight, lnModeNum, lcDevMode
lnModeNum  = 0
lcDevMode  = REPLICATE(CHR(0), 156)
lnWidth    = IIF(EMPTY(tnWidth), 800, tnWidth)
lnHeight   = IIF(EMPTY(tnHeight), 600, tnHeight)
DECLARE INTEGER EnumDisplaySettings   IN Win32API ;
            STRING lpszDeviceName,;
            INTEGER iModeNum, ;
            STRING @lpDevMode
DECLARE INTEGER ChangeDisplaySettings IN Win32API STRING @lpDevMode, INTEGER dwFlags
DO WHILE EnumDisplaySettings(NULL, lnModeNum, @lcDevMode) <> 0
        lnModeNum = lnModeNum +1
ENDDO
lcDevMode = STUFF(lcDevMode,  41, 4, LongToStr(1572864))
lcDevMode = STUFF(lcDevMode, 109, 4, LongToStr(tnWidth))  && Ancho
lcDevMode = STUFF(lcDevMode, 113, 4, LongToStr(tnHeight))  && Alto
ChangeDisplaySettings(@lcDevMode, 1)
ENDFUNC



FUNCTION LongToStr
LPARAMETERS lnLongVal
LOCAL lnCnt, lcRetStr
lcRetStr = ''
FOR lnCnt = 24 TO 0 STEP -8
        lcRetStr = CHR(INT(lnLongVal/(2^lnCnt))) + lcRetStr
        lnLongVal = MOD(lnLongVal, (2^lnCnt))
	NEXT
	RETURN lcRetStr
ENDFUNC




*** สำหรับตั้งหน้าจอ Resolution ของ FOX 
Procedure CheckFOXRes && สำหรับปรับสกรีนของโปรแกรม
Parameter nWint,nHint
mnScreenW = SYSMETRIC(1) && Screen Width
mnScreenH = SYSMETRIC(2) && Screen Height
If  Between(nWint,50,100)   && ส่งมาเป็น %
	nWCal=mnScreenW *(nWint/100)
	nHCal=mnScreenH *(nHint/100)
Else && ส่งมาเป็นตัวเลข 
	nWCal=nWint
	nHCal=nHint
Endif 
Do Case 
Case Between(nWCal,0,2)
	_Screen.WindowState=nWCal  &&  0=ปรกติ,1=ยุบให้เล็ก 2=เต็มหน้าจอ 
Case !Between(_SCREEN.WIDTH,nWCal-2,nWCal+2) .or. !Between(_SCREEN.HEIGHT,nHCal-2,nHCal+2)
	m.nfShowBOX=1
	*Do Fox_Show With 1,'หน้าจอโปรแกรม','กว้าง = '+ Alltrim(Str(_SCREEN.WIDTH))+' '+'สูง = '+ Alltrim(Str(_SCREEN.HEIGHT)),'แก้ไขในไฟล์ Screen4You.Prg';
	*,'ต้องการปรับเป็น '+Alltrim(Str(nWCal))+'X'+Alltrim(Str(nHCal))
	If m.nfShowBOX=1
		_SCREEN.WIDTH=nWCal 
		_SCREEN.HEIGHT=nHCal
		_SCREEN.AUTOCENTER = .T.
	Endif 
Otherwise 
	*Do Fox_Show With 1,'หน้าจอโปรแกรม','กว้าง = '+ Alltrim(Str(_SCREEN.WIDTH))+' '+'สูง = '+ Alltrim(Str(_SCREEN.HEIGHT)),'แก้ไขในไฟล์ Screen4You.Prg',''
EndCase 
Return 







