類似於老 PB 時代的 pfc,Appeon Powerbuilder 也替大家準備了一些用於開發 APP 的功能及控件,建議把它們都加入的你的 target 中,那你就可以與手機溝通,取得手機的各種資訊,或調用相機、NFC、GPS 之類的硬件及數據:

  • appeon_workarounds.pbl
  • appeon_cordova.pbl

image

如果你的程式同時支援電腦、網頁或手機版的話,由於某些功能只支援手機,所以你在調用 API 要先以 appeongetclienttype() 去檢查當前的執行環境是什麼,看是 PB、WEB 還是Mobile,然後才判定是否繼續調用。

Mobile Device API 使用手冊

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

image

PB 內有很多內建的功能以方便大家使用,這裏抽取 Itemchanged event 為例,解釋一下 event 怎麼使用。

Event 就是事件,由畫面上發生的事件來觸發,例如滑鼠的左按或右按、用戶點擊按鈕,或從下拉選值之類的。ItemChange 就是某欄位內容被改動過所觸發的事件。圖中Itemchanged( long row, dwobject, string data ) 是系統傳進來的變量,row 是常前行號,dwo 是控件,你可以用 dwo.name 取得它的名字來看看,而 data 則是該欄位裏最新的值,不管該欄位裏面的值是哪種類型,這裏的 data 都是 string,如果裏面的是數字或日期之類的,你就要手工把它從 string 轉換成你想要的類型。Returns long 就是它的返回值是 long 的意思,你可以在 itemchanged 裏 return 不同的值來告訴系統一下步要怎麼做,接不接受這個值,可不可以跳到下一格之類。如果希望按不同欄位做不同的事情,大概要這樣寫:

Choose case upper(dwo.anme)

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

關於GR入塵,想聊幾句。

 

下圖是 GR1 拆開後,看到一團塵,而這縫直通內部,所以我一直認定塵是從這裏跑進去的,所以後來我都用膠帶把這裏封起來。

image

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

在撐了四年後,我的GR2 還是進大塵了,反正什麼原廠保養之類的全都過期, GR3 又出現好幾年了,要是出了個什麼意外,那就可以成為升級的好借口了。好!拆機清塵!

前幾年就有了拆GR1 的經驗,所以這次一開始就知道要準備什麼了:
image

 

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

不要被 PowerScript 的語法混淆,在存儲過程裏的 「return」是不會返回值到 PowerScript 的。不少人以為會返回到「sqlcode」,其實不然,「sqlcode」是給數據庫反映存儲過程有沒有成功執行的,寫 return 什麼值都沒有意義,它只會讓你退出而已,取值的話,要用「Fetch」。

-- Stored Procedure
create PROCEDURE usp_sample @input varchar(10), @rtn_int int output, @rtn_char varchar(50) output
AS

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

剛有同事問起,但這個又簡單到沒什麼好解釋,我直接放代碼好了。

 

Datetime    ldt_null

 

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

每個畫面都可以設「一個」的「Default」按鈕,意思就是當戶用在畫面中按下「Enter」時會觸發的按鈕。下面的「Request code」按鈕就是這種,在 Properties\General 裏勾上「Default」,它的樣子看起來就會不一樣,再按「Enter」就可以觸發它的 Clicked Event 了。

另一種需要配搭「Alt」按鍵使用,比如「Alt + l」,同時按下兩鍵時,下圖的「Login」按鈕就會被觸發,只要在該按鈕的Properties\Text 寫上「&Login」就可以了。

 

image

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

剛用戶求援,系統報錯,但報錯訊息不明,在查找報錯原因同時,也發現了一個編碼錯誤。這錯誤很常見,很多人未必有注意到這細節,我就在這裏提醒一下。

要知道 Sqlerrtext 裏面放的是「前一個動作」的執行結果,以下圖的代碼來說,按道理是要看 update 的錯誤訊息,但最終能看到的卻是「Rollback」的執行結果。由於訊息錯誤,這樣在排錯時就白白多花時間了。

要避免這情況,最簡單的方法就是把 rollback 放到顯示 sqlerrtext 之後,或者把 sqlerrtext 先放到變量,然後才rollback,這樣就能取得正確的訊息了。

 

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

為了提供更好的使用體驗,在有限的畫面中提供更多的數據,PB 提供了 ToolTip,以下就是Properities\Tooltip 頁裏面最常用到的 Icon、Title、Tip,在裏面輸好東西,或設好公式,當勾上「Enabled」,而 mouse pointer 又移到該 object 上面時,Tooltip 就會自動顯示了。另外 Mouse pointer 自動變成手手的設定在 Properities\Pointer 內。

 

下圖是個以 bmp 做底的模擬座位表系統。

image

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()

如果你有某些畫面需要定時自動刷新,比方說股票價格,這時候就會用到 Timer Event

Window 入面都有 Timer Event,你可以把需要定時執行的代碼寫到 Timer Event 中,然後在 Window 的其他 event 中啓動它,可能是 Open event,也可能是某按鈕的 Clicked eventTimer(60) 就是每 60 秒執行一遍的意思。

image

Timer(0) 就是停止 Timer,執行過後,在再次啓動 Timer 前,Timer event 內的代碼都不會再執行。

文章標籤

過時程式員 發表在 痞客邦 留言(0) 人氣()