看到別人寫單選複選按鈕很簡單,於是努力的研究到底是用了什麼元件。才發現是用Woll2Woll 的1stCalss元件做到,自己寫的要死要活,別人簡單就達成了!orz
實現的方式很簡單,只要使用 TfcButtonGroup這個元件即可。
設定.ClickStyle 的屬性 bcsRadioGroup(單選)bcsCheckList(複選)
大型網站架構..net 架構師.rabbitMQ.redis.行動開發.APP開發教學.PHP Laravel開發..net core C# 開發.架構師之路.Delphi開發.資料庫程式.進銷存.餐飲POS系統
看到別人寫單選複選按鈕很簡單,於是努力的研究到底是用了什麼元件。才發現是用Woll2Woll 的1stCalss元件做到,自己寫的要死要活,別人簡單就達成了!orz
實現的方式很簡單,只要使用 TfcButtonGroup這個元件即可。
設定.ClickStyle 的屬性 bcsRadioGroup(單選)bcsCheckList(複選)
遠通eTag上路後,幾乎是天天罵聲連連….網友們也都在詢問「沒有裝eTag到底可不可以上高速公路?」答案是可以的,沒有裝eTag的話,在計費的機器旁邊也有一台車牌辨識系統,當然如果遠通辨識不出來的話您又賺到了XD
mobile01網友整理出來非eTag用戶文章「破迷思!非裝eTag不可?沒裝也有 9折優惠, 也不會有 5 元手續費」
非eTag用戶 | |
0負擔 | 免申辦,免儲值,使用後付費,資金靈活運用 |
0風險 | 無E-tag 破損/掉落/故障 導致無法感應扣款之風險,無保固期限,無需自費重貼之費用 |
0手續費 | 遠通120個服務中心(含直營)繳費免代收手續費,用路人無額外負擔 |
省很大 | 103/07/01起於於可查詢費用之日3日內繳費享有政府核定之通行費9折優惠 |
免煩惱 | 免擔心E-tag餘額不足導致無9折優惠及50元掛號作業費與300元罰鍰 |
好方便 | 主動查詢繳費,用多少繳多少,不用擔心被系統誤扣費用 |
好貼心 | 每15-16日歸戶為1筆通知,主動寄發平信提醒用路人繳費 |
好安心 | 絕不損傷前檔隔熱紙及大燈燈殼,節省不必要的浪費 |
好簡單 | 無E-tag一樣能暢遊國道,主動查詢繳費,不產生任何掛號作業費及罰單 |
加碼獨享 | 可於遠通官網登記電子信箱,系統主動寄發E-mail通知繳費資訊,形同簡易電子對帳單 |
不裝eTag之後,可以於三天後查詢(例:1/8上高速公路,1/11可以查詢),查詢的管道:
1)超商查詢:遠傳電信門市、7-11的ibon、全家的FamiPort、OK go、萊爾富的Life-ET自行列印帳單,每次列印將收取5元之手續費
2)網路查詢:
到下面的網站輸入車牌號碼及車主的身份證號(或公司統編)末4碼
https://css.fetc.net.tw/CS/CS02100Bill/BillQuery
因為系統上線後持續出現問題,導致許多軟體業界的朋友真的都看不下去了,甚至擁有深厚大型系統開發經驗的LeaderSoft的總經理Jini Gary Lee 為了證明自己不是嘴炮,還在facebook發文幫忙規劃系統架構了!
重點來了!如果要退eTag的朋友怎麼退呢?
最快的方式是直接到加盟或直營門市退掉,另外也有eTag帳戶終止線上服務網址( https://css.fetc.net.tw/CS/CS02060eTagTerminate/CS02060Query),線上終止後要到“直營”門市辦理退款(需帶存褶影本)
延伸連結:
計程通行費試算網站 http://fare.fetc.net.tw/
在餐飲業用餐後,某些比較大型的連鎖餐飲體系都會附上一張滿意度問卷調查表,或是在一些比較沒有過多調味變化的餐飲店中,也會出現學生時代答案卡形式的點餐卡。
點餐卡雖然沒有太深厚的技術,不過對於店家來說卻是蠻便利的,只要將客戶畫記好的點餐卡放入OMR光學閱讀機中,就可以輸入到POS系統畫面中。節省許多點餐及詢問的時間~
延伸連結:
名科資訊有限公司 http://www.dartgoal.com.tw/
在客戶那邊看到了蠻特別的機器「取餐呼叫器」,透過簡單的發送器及接收器,可以免除要廣播、大聲叫號的問題。等於手上的號碼牌(取餐牌)是會自動提醒的。操作也很簡單,只要透過發送器按下號碼後送出,手上對應的接收器就會閃爍,可以用在需要叫號的各行各業,甚至用在目前正夯的健康照護產業也可以。
延伸連結:
漢偉科技有限公司 http://www.ehanway.com.tw/
Delphi XE3預設會安裝Interbase,不過如果遇到連結Firebird時,會出現unavailable database的訊息。
解決的方式:
將firebird目錄下bin\fbclient.dll copy到system32,並命名成gds32.dll即可。
二個重點函數
imagealphablending($thumb,false)
imagesavealpha($thumb,true);
[php]
function pngthumb($sourePic,$smallFileName,$width,$heigh){
$image=imagecreatefrompng($sourePic);//PNG
imagesavealpha($image,true);
$BigWidth=imagesx($image);
$BigHeigh=imagesy($image);
$thumb = imagecreatetruecolor($width,$heigh);
imagealphablending($thumb,false);
imagesavealpha($thumb,true);
if(imagecopyresampled($thumb,$image,0,0,0,0,$width,$heigh,$BigWidth,$BigHeigh)){
imagepng($thumb,$smallFileName);}
return $smallFileName;
}
[/php]
原本預計2013年12月26號北上的行程,因為急性腸胃炎的關係延到了2014年1月2日,一早就從豐原坐統聯北上。
抵達台北後,第一個行程馬上前往內湖與廠商洽談點餐卡的細節,廠商的研發工程師也是使用Delphi開發的,使用相同語言的好處就是相談甚歡而且迅速。洽談中才知道台灣這樣的廠商不多,所以許多餐飲集團的問卷調查、點餐卡都出自這家公司。
OMR(Optical Mark Reader)的原理其實不會很複雜,主要是左手邊的黑色基準點以及右手邊讀回資訊的順序…..
回到客戶公司後,繼續討論開發的部份。
接著七點多跟客戶一起吃飯就入住了寧夏夜市附近的191旅店 。
由於客戶上班時間是早上10:00到下午7:00,所以第二天一大早先晃到附近的大稻埕、迪化街。
接著再跟客戶的經理一起到宜蘭羅東,幫忙客戶上線、教育以及採購XD。
由於許多細節部份,有不少商業機密,就不多加描述了 🙂
二天一夜的台北行,學習到了不少東西,也發現成功的人士有許多相同的共同點。
2014年元旦過後,馬上北上台北與客戶、廠商接洽。客戶也安排了靠近台北寧夏夜市旁的新旅店「191旅店 enjoy hotel」,據客戶說這家旅店也是使用他們的民宿旅館訂房相關系統。
為什麼叫191咧?原來是由英文enjoy翻過來的~旅店的訴求是希望讓來居住的旅客們能享受旅店營造出小巧溫馨的氣氛。旅店是隱身在大樓六樓的空間裡,電梯一走出進入大廳後,映入眼簾的是斗大的LOGO以及櫃台。而在電梯門口也有旅店自製的干貝醬等小商品,門口也有貼上一些導覽資訊,讓旅客在離開前還可以知道那邊可以玩。
在櫃台前面則有一個簡單的沙發區,地毯使用條紋的方式能讓視覺有延伸的效果。
沙發區旁邊有一面世界地圖,上面貼滿許多來自各國的背包客、旅客所拍下的照片,還有直接將各國紙鈔、硬幣貼上的。
大廳旁邊的飲水機,對許多背包客來說是蠻貼心的服務,要外出時可以取用熱水,上面也有茶包及咖啡包。
登記後準備入住囉!走道感覺很深,裡面有不少房間。
走道上用了許多畫作以及黑膠唱片來做點綴。
抵達房間了,不多說先來張全景照。
房間是使用感應門卡,也提供免費WIFI服務(而且訊號很強)
門後有逃生示意圖,門除了有門栓外,也有兩道鎖還蠻安全的。
房間內有二張小沙發以及小桌子,可以看到旅店為了節省空間,少掉了衣櫥而以開放的衣架取代。
住的是雙人房,不過發現雙人床是King Size的,感覺三個人還塞得下去。床的二側都有插頭及床頭櫃。
床前有二盞很漂亮的燈,如果像我怕黑又不想太亮,可以自己調整明亮度。
床的另一端就是一台蠻大台的電視,旁邊備有礦泉水、二包小餅乾、茶包、咖啡包以及二雙拖鞋。
對背包客很重要的保險箱(可以把護照及重要物品鎖上),一個小冰箱以及電熱水瓶。
浴室是乾溼分離的,而且排風做的相當好~溼氣不會進到房間
一整個感覺清爽且乾淨。
旅店位在很不錯的地方,往右邊走是往法主公廟、大稻程、年貨大街迪化街、永樂布業商場、台北霞海城隍廟;往左邊走則可以到寧夏夜市附近吃吃喝喝。
191旅店整體來說C/P值相當的高,雖然營運還沒多久,但受到許多來自各國背包客的愛戴,可以聽到走廊傳來大都不是國語(英文、日文、韓文….)內部的裝潢及擺設簡單整齊,價格的部份也還蠻親民的,分享給大家。
地址: 103台北市大同區南京西路165號
電話: 02-25559711
交通資訊:
【捷運】:搭乘捷運至捷運中山站,由二號出口往右步行約8~10分鐘;亦可搭乘至捷運台北車站,沿承德路步行至圓環,左轉南京西路後,約3~5分鐘即可抵達。
【公車】:搭乘2, 紅25,42,215, 223, 255,250,288, 302,304,3061501,1504,1505,785,892,893,601,639,1209, 704,798, 518,641,811,下車後步行1~3分鐘即可抵達。
官方網站: www.191hotel.com
方法很簡單,建立好TabSheet後,將TabSheet的TabVisible屬性設為False。
接著只要用程式去控制就行了
PageControl1.ActivePageIndex := x(TabSheetIndex);
或
PageControl1.ActivePage := x(TabSheetName);
對於開發軟體的人來說,最怕的莫過於自己辛苦開發多時的軟體,上市之後馬上遭受破解、盜版。不僅對開發者來說是莫大損失,也會降低開發的意願,所以開發者便會以各種方式來保護軟體。
保護軟體目前的方式有軟體保護(註冊碼、試用期間….)或硬體保護二種方式。當然軟體的部份總是道高一尺、魔高一丈,網路上總有神人有辦法破解,比較保險的做法仍是以硬體保護為主。剛好前陣子接到德錡實業的業務經理簡先生電話,寄來了一支測試的Rockey4軟體保護鎖,順便將測試的結果告訴大家。
目前Rockey4軟體保護鎖支援的系統有:
支援的程式語言則有:
這邊筆者就列出PHP跟Delphi的使用方式
PHP
在使用前需註冊 regsvr32 Rockey4NDCom.dll
[php]
// 使用COM調用Dll
$Rockey = new COM("Com.CRockey4ND") or die("<h3>無法初始化保護鎖元件</h3>");
$Rockey->p1 = new VARIANT(0xc44c, VT_UI2);
$Rockey->p2 = new VARIANT(0xc8f8, VT_UI2);
$Rockey->p3 = new VARIANT(0x0799, VT_UI2);
$Rockey->p4 = new VARIANT(0xc43b, VT_UI2);
// 開啟保護鎖
$result = $Rockey->RockeyCM(3);
if ($result==0) {
print "<h4>Success</h4>";
} else {
print "<h4>Failed, Error Code: $result</h4>";
exit();
}
// 讀出資料
$Rockey->buffer = new VARIANT($text, VT_BSTR);
$Rockey->p1 = new VARIANT(0, VT_UI4);
$Rockey->p2 = new VARIANT(500, VT_UI4);
$result = $Rockey->RockeyCM(7);
if ($result==0) {
print "<h4>Success, Result: ".$Rockey->buffer."</h4>";
} else {
print "<h4>Failed, Error Code: $result</h4>";
exit();
}
[/php]
Delphi
Delphi的方式則有二種:一種是以Dcu一種是載入Dll
Dcu(Delphi Compiled Unit)要先把Rockey4ND.dcu複製到開發的資料夾。
DLL則是要把Rockey4ND.dll複製到開發的資料夾。
DCU寫法
1.Use rockey4nd;
2.宣告
mBuf:array[0..100] of Byte;
mFun,mP1,mP2,mP3,mP4,rt:Word;
lP1,lP2:LongWord;
mHand:array[0..16] of Word;
mHardID:array[0..16] of LongWord;
rc:array[0..4] of Word;
[pascal]
R4ND_Init(); //初始化
mP1:=$c44c;
mP2:=$c8f8;
mP3:=$799;
mP4:=$c43b;
for i:=0 to 30 do
mBuf[i]:=0;
rt:=0;
// 尋找是否有插Keypro
mFun:=1;
rt:= Rockey(mFun,mHand[0],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,’cannot find ROCKEY1,error:%d ‘,[rt]);
List.Items.Add(str);
exit;
end;
List.Items.Add(‘find ROCKEY No.1’);
[/pascal]
DLL寫法
[pascal]
mBuf:array[0..100] of Byte;
mFun,mP1,mP2,mP3,mP4,rt:Word;
lP1,lP2:LongWord;
mHand:array[0..16] of Word;
mHardID:array[0..16] of LongWord;
rc:array[0..4] of Word;
function Rockey(fun:Word; var Handle:Word;
var lp1,lp2:LongWord;
var P1,P2,P3,P4:Word;
var buf:Byte):Word;
stdcall;external ‘Rockey4ND.dll’;
[/pascal]
[pascal]
mP1:=$c44c;
mP2:=$c8f8;
mP3:=$799;
mP4:=$c43b;
for i:=0 to 30 do
mBuf[i]:=0;
rt:=0;
mFun:=1;
rt:= Rockey(mFun,mHand[0],lP1,lP2,mP1,mP2,mP3,mP4,mBuf[0]);
if rt<>0 then
begin
FmtStr(str,’not find ROCKEY1,error:%x ‘,[rt]);
List.Items.Add(str);
exit;
end;
List.Items.Add(‘Find the first ROCKEY’);
[/pascal]
在測試完之後,發現程式的撰寫並不複雜。可以杜絕盜版以及破解的風險,避免軟體從商用變成公用 🙂
在安全性上保護鎖上面分兩級 4 個密碼,每個密碼 16 位長,第一級是基本密碼,對加密鎖進行基本調用時用,第二級密碼是開發商專用密碼,作用是控制加密鎖的寫入和定義加密算法,它在最終用戶的軟體中是不應該也是不需要出現的,即使跟蹤也跟不到。而每個開發商的加密鎖密碼都是不同的,也不用擔心其他開發商可以破解。
價格的部份,一支的價格介於400-500上下(依數量而定),也算是還可以接受的價格。建議有需要的朋友可以參考囉 🙂
相關連結:
德錡實業有限公司(http://www.mtitw.com)
Feitian http://www.ftsafe.com/
業務 簡建昌 0988778171電話 02-27555955
地址 台北市復興南路二段180巷29號1樓