在石二鍋看到IISTUDIO的取單叫號系統,覺得還蠻不錯的,打算這次連假也使用Delphi 10.2 Tokyo來刻一個試試。
技術上主要是搭配WebAPI以及Delphi 10.2的FMX來達成:
1 設定店別、人數與桌型,號碼起訖對應(WEB介面)
2 Delphi 撰寫iOS/Android/Win版的畫面,透過WEBAPI取得上述資料
3 候位確認時,呼叫印單程式印單
4 WEBAPI回寫,方便使用者連線確認
大型網站架構..net 架構師.rabbitMQ.redis.行動開發.APP開發教學.PHP Laravel開發..net core C# 開發.架構師之路.Delphi開發.資料庫程式.進銷存.餐飲POS系統
在石二鍋看到IISTUDIO的取單叫號系統,覺得還蠻不錯的,打算這次連假也使用Delphi 10.2 Tokyo來刻一個試試。
技術上主要是搭配WebAPI以及Delphi 10.2的FMX來達成:
1 設定店別、人數與桌型,號碼起訖對應(WEB介面)
2 Delphi 撰寫iOS/Android/Win版的畫面,透過WEBAPI取得上述資料
3 候位確認時,呼叫印單程式印單
4 WEBAPI回寫,方便使用者連線確認
之前曾經分享過,手機版的Line可以透過 line://msg/<CONTENT TYPE>/<CONTENT KEY> 這樣的語法呼叫Line 的程式分享。
當然Delphi XE5也可以透過程式呼叫程式才對,在Jim McKeeth 的「Sending a URL to Another App on Android and iOS with Delphi XE5」文章有教您如何呼叫
iOS特殊語法
Android特殊語法
作者在文中有提到使用TidURL.URLEncode 。
[pascal]
unit OpenViewUrl;
interface
// URLEncode is performed on the URL
// so you need to format it protocol://path
function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
implementation
uses
IdURI, SysUtils, Classes, FMX.Dialogs,
{$IFDEF ANDROID}
FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.Net, Androidapi.JNI.JavaTypes;
{$ELSE}
{$IFDEF IOS}
iOSapi.Foundation, FMX.Helpers.iOS;
{$ENDIF IOS}
{$ENDIF ANDROID}
function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
{$IFDEF ANDROID}
var
Intent: JIntent;
begin
// There may be an issue with the geo: prefix and URLEncode.
// will need to research
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(URL))));
try
SharedActivity.startActivity(Intent);
exit(true);
except
on e: Exception do
begin
if DisplayError then ShowMessage(‘Error: ‘ + e.Message);
exit(false);
end;
end;
end;
{$ELSE}
{$IFDEF IOS}
var
NSU: NSUrl;
begin
// iOS doesn’t like spaces, so URL encode is important.
NSU := StrToNSUrl(TIdURI.URLEncode(URL));
if SharedApplication.canOpenURL(NSU) then
exit(SharedApplication.openUrl(NSU))
else
begin
if DisplayError then
ShowMessage(‘Error: Opening "’ + URL + ‘" not supported.’);
exit(false);
end;
end;
{$ELSE}
begin
raise Exception.Create(‘Not supported!’);
end;
{$ENDIF IOS}
{$ENDIF ANDROID}
end.
[/pascal]