|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 樓
|
|
回頂端 |
|
|
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 台灣生活網 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|