VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

模擬 VFP Command 視窗的小程式

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
perry



註冊時間: 2014-07-20
文章: 203


第 1 樓

發表發表於: 星期五 十二月 04, 2015 2:40 am    文章主題: 模擬 VFP Command 視窗的小程式 引言回覆

不要用 Clear all ,會產生異常= ='''
沒有用到很艱難的指令或其他套件.

1.複製全部代碼
2.modi comm newfile <-自行命名
3.貼上
4.存檔

do newfile 就可以玩了.
可編譯成 exe
代碼:

*****  模擬 VFP Command 視窗
*****  可存在 User 端的簡易維護小�{式
*****  2015/12/04 By Perry
***** MyCommand.prg
Set Talk Off
Set Sysm Off
Set Stat Off
Set Stat Bar Off
sys_height=SYSM(2)-25
sys_width=SYSM(21)-2
cmd_ftname='標楷體'
Do Case
    Case sys_width<1024
        cmd_ftsize=10
    Case sys_width<=1366
        cmd_ftsize=12
    Othe
        cmd_ftsize=16
EndCase
_Screen.width=IIF(sys_width>1024,1024,sys_width)
_Screen.height=IIF(sys_height>768,768,sys_height)
_Screen.FontName=Cmd_ftname
_Screen.FontSize=Cmd_ftsize
_Screen.ClosAble=.F.
_Screen.MaxButton=.F.
_Screen.ControlBox=.T.
oCmdForm=CreateObject('Cmd_Form')
oCmdForm.Show
Read Even
Close All
*Quit
_Screen.ClosAble=.T.
_Screen.MaxButton=.T.
***********************
Define Class Cmd_Form As Form
    ScrollBars   =3
    VscrollSmallChange=1
   BorderStyle  =2
   ControlBox   =.T.
   WindowType   =0
   Caption      ='命令'
   BackColor    =RGB(255,255,255)
   ForeColor    =RGB(0,0,0)
   Name         ='Cmd_Form'
   Add Object Label1 As Label
    Proc Init
       With This
           .AddProperty('TextCnt',0)
           .FontName=Cmd_ftname
           .FontSize=Cmd_ftsize
           .Height=(Font(1,Cmd_ftname,Cmd_ftsize)+4)*7+8
           .Width=Font(6,Cmd_ftname,Cmd_ftsize)*30+8
           .Label1.Caption=''
           .Label1.Visible=.T.
       EndWith
       This.Top=_Screen.Height-This.Height-50
       This.Left=_Screen.Width-This.Width-20
       Do AddNewRow With This
       Priv j
       j=Allt(Str(This.TextCnt))
       This.Text&j->Visible=.T.
       This.Text&j->SetFocus
    EndProc
    Proc Unload
        Clea Even
    EndProc
EndDefine
*********
Define Class CmdEdit1 As TextBox
    Proc Init
        With This
           .AddProperty('oValue','')
           .AddProperty('oRunDo',.F.)
           .BorderStyle=0
           .BackColor=ThisForm.BackColor
           .FontName=Cmd_ftname
           .FontSize=Cmd_ftsize
           .Height=Font(1,Cmd_ftname,Cmd_ftsize)+4
           .Width=Font(6,Cmd_ftname,Cmd_ftsize)*255
           .Visible=.T.
           .Enabled=.T.
           .Value=.oValue
        EndWith
    EndProc
    Proc KeyPress
        Lpar nKeyCode,nShiftCtrlAlt
        Priv j
        j=Val(Subs(This.Name,5))
        Do Case
            Case nKeyCode=19
                If j=1 And This.SelStart<1
                    Keyb '{Tab}'
                EndIf
            Case nKeyCode=5
                If j=1 And This.SelStart<1
                    Keyb '{Tab}'
                EndIf
            Case nKeyCode=24
                If j=ThisForm.TextCnt
                    Keyb '{BackTab}'
                EndIf
            Case nKeyCode=4
               IF This.SelStart+1>Len(Allt(This.Value))
                   Keyb '{LeftArrow}'
               EndIf
           Case nKeyCode=13
               Do TxtEnter With ThisForm,This
        EndCase
    EndProc
EndDefine
************
Proc AddNewRow
    Lpar xoTForm
    Priv oTForm,j
    oTForm=xoTForm
    oTForm.TextCnt=oTForm.TextCnt+1
    j=Allt(Str(oTForm.TextCnt))
    oTForm.AddObject('Text'+j,'CmdEdit1')
    With oTForm.Text&j
        .Top=(oTForm.TextCnt-1)*.Height
    EndWith
    oTForm.Label1.Top=IIF(oTForm.TextCnt>6,oTForm.Text&j->Top+oTForm.Text&j->Height,oTForm.Text&j->Height*8)
    oTForm.Label1.Height=oTForm.Text&j->Height
    oTForm.Label1.BackColor=oTForm.BackColor
EndProc
************
Proc TxtEnter
    Lpar xoTForm,xoThis
    Priv oTForm,oThis,Run_Text_Cmd
    oTForm=xoTForm
    oThis=xoThis
    oThis.Refresh
    Run_Text_Cmd=Rtri(oThis.Value)
    Do Case
        Case Val(Subs(oThis.Name,5))=oTForm.TextCnt
            oThis.oValue=Run_Text_Cmd
            Do AddNewRow With oTForm
            Priv j
            j=Allt(Str(oTForm.TextCnt))
            oTForm.Text&j->Visible=.T.
            oTForm.Text&j->SetFocus
            oTForm.Scrolled(1)
            oTForm.Refresh
            _Screen.Show
            On Error Do MyErrorMsg With Error(),Message()
            &Run_Text_Cmd
            On Error
            oTForm.Show
        Othe
            oThis.Value=oThis.oValue
            Priv j,j1
            j=Allt(Str(oTForm.TextCnt))
            j1=Allt(Str(oTForm.TextCnt-1))
            If oTForm.TextCnt>1 And oTForm.Text&j1->Value#oThis.Value
                oTForm.Text&j->oValue=Run_Text_Cmd
                oTForm.Text&j->Value=Run_Text_Cmd
                Do AddNewRow With oTForm
            EndIf
            Priv j
            j=Allt(Str(oTForm.TextCnt))
            oTForm.Text&j->Visible=.T.
            oTForm.Text&j->SetFocus
            oTForm.Refresh
            _Screen.Show
            On Error Do MyErrorMsg With Error(),Message()
            &Run_Text_Cmd
            On Error
            oTForm.Show
    EndCase
EndProc
**************
Proc MyErrorMsg
    Lpar xErr_no,xMsg_txt
    Priv Err_no,Msg_txt
    Err_no=xErr_no
    Msg_txt=xMsg_txt
    Messagebox(Chr(13)+'錯誤代碼:'+Allt(Str(Err_no))+Chr(13)+'錯誤訊息:'+Msg_txt+Chr(13),0+16,'警  告')
EndProc
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 2 樓

發表發表於: 星期五 十二月 04, 2015 11:23 am    文章主題: 引言回覆

唉...原來表單顯示區捲動(捲軸捲動)要用
ThisForm.SetViewPort(nLeft,nTop) 設定!!
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1644


第 3 樓

發表發表於: 星期六 十二月 05, 2015 2:25 pm    文章主題: 引言回覆

有一個類似的
http://www.alasgroup.com/IT_Support/AGTECH/click/UltimateDTRMaker/Utilities/vrunfox9/
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
perry



註冊時間: 2014-07-20
文章: 203


第 4 樓

發表發表於: 星期六 十二月 05, 2015 2:52 pm    文章主題: 引言回覆

謝謝!!but only have VFP 6.0 = ='''

用 Modi Comm 找不方法控制...

會寫這個是因為:
1.有時時間緊急,直接電話遙控處理@@
2.教會 系統管理者 簡單處理,可省很多事,多出很多時間 ^ ^
例如丟個 fxp 請他(她)代為執行即可.

板上是初稿,目前已修正差不多了,也傳給部份客戶;
要求 系統管理者 加密壓縮,要用時解壓縮,
用完直接刪 EXE ,避免無聊人士亂玩!!
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 5 樓

發表發表於: 星期六 十二月 05, 2015 9:53 pm    文章主題: 引言回覆

一個簡單的自動更新程式方法!!
產生a.bat
代碼:

@echo off
a.exe
a1.bat
exit

主程式(main.prg)
代碼:

set talk off
if adir(exe_ck1,'d:\a.exe')>0 and adir(exe_ck2,'e:\a.exe')>0
    sele 0
    crea curs newa1 (cnote c(80))
    if exe_ck1(1,2)#exe_ck2(1,2) or ;
        exe_ck1(1,3)#exe_ck2(1,3) or ;
        exe_ck1(1,4)#exe_ck2(1,4)
        inse into newa1 valu ('Echo �{式更新中,請稍候...')
        inse into newa1 valu ('copy /y e:\a.exe d:\a.exe')
        inse into newa1 valu ('d:\a.exe')
        inse into newa1 valu ('exit')
        copy to d:\a1.bat type sdf
        use in newa1
        quit
    else
        inse into newa1 valu ('exit')
        copy to d:\a1.bat type sdf
        use in newa1
    endi
endi
回頂端
檢視會員個人資料 發送私人訊息
ezpos



註冊時間: 2011-04-20
文章: 323


第 6 樓

發表發表於: 星期一 一月 11, 2016 8:38 am    文章主題: 引言回覆

A.EXE + 版本 比如 A_160111.exe

這樣好處是 A.exe不用退出..等更新完成
或者是程式在執行時.更新程式在背景 下載更新
下次就執行 最新版本的程式 ..A_160111.exe

_________________
ezPos收銀機 簡單好用低成本 http://www.ezpos.info
全新美觀的POS收銀機.POS軟硬體耗材.
軟體客制化.網站規劃....能賺錢的都可以找我

http://www.twelife.com 台灣生活網
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作