Delphi寫餐飲硬體標準ESC/POS與醫療檢驗儀器連線ASTM通訊有感

下午到舊公司討論電子發票格式相關問題,跟舊同事聊天聊到電子發票支援的硬體時,舊同事也抱怨到POS相關的硬體廠商雖然”宣稱”支援”標準的ESC/POS指令”,但實測起來每台機器還是會呈現出不同的結果。

突然想到之前在做醫療檢驗儀器連線時,即使設備商提到是使用ASTM格式傳輸,但不管是尿液、血液…..適用什麼immuLite、AXSYM、Alastat….最後在做連線通訊時也是不一樣。

這也是做軟硬體結合時,寫程式的悲哀吧XDDD不過寫出來時又是另一種雀躍的心情了~~

Delphi下載網路圖片且顯示Image

把網路上的圖片顯示在Image如何做到?

[pascal]
var
MS: TMemoryStream;
JPEG: TJPEGImage;
Url: String;
I: Integer;
begin
ProgressBar1.Visible := True;
MS := TMemoryStream.Create;
try
JPEG := TJPEGImage.Create;
try
Url := edit1.text;
MS.Clear;
try
IdHTTP1.Get(Url, MS);
except
end;
MS.Position := 0;
JPEG.LoadFromStream(MS);
Image1.Picture.Assign(JPEG);
Application.ProcessMessages;
finally
JPEG.Free;
end;
finally
MS.Free;
end;
end;
[/pascal]

Delphi撰寫縮小到系統列程式

在畫面上放置
1 ApplicationEvents
2 TrayIcon
3 PopupMenu

然後在ApplicationEvents1Minimize寫上
[pascal]
Hide();
WindowState := wsMinimized;
TrayIcon1.Visible := True;
TrayIcon1.Animate := True;
TrayIcon1.ShowBalloonHint;
[/pascal]
接著在TrayIcon的Click事件讓popupmenu顯示
[pascal]
var
p : TPoint;
begin
GetCursorPos(p);
popupmenu1.Popup(p.X,p.Y);
end;
[/pascal]
最後在popupmenu上的onclick加上
[pascal]
Show;
WindowState := wsMaximized;
trayicon1.Visible := False;
[/pascal]

Delphi隨機產生英文大小寫、數字

Delphi如何透過隨機的函數產生英文大寫、英文小寫以及數字呢?
方法很簡單

[pascal]
// 英文小寫
Randomize;
S := Chr(ord(‘a’) + Random(26));
[/pascal]

[pascal]
// 英文大寫
Randomize;
S := Chr(ord(‘A’) + Random(26));
[/pascal]

[pascal]
// 數字
Randomize;
S := Chr(ord(‘0’) + Random(10));
[/pascal]

Delphi XE6 透過台北市Opendata取得旅遊住宿資料

Delphi在XE5開始就提供了REST Client的元件,讓開發REST Client應用的開發者能在最短的時間開發出相關的應用,今天就利用臺北市政府資料開放平台中的臺北市旅館資料庫資料來做一個簡單的範例「台北住宿通」。讓大家瞭解Delphi 如何存取json資料,並顯示。
詳細內文請見
CodeData >> Delphi APP 開發入門(十)REST Client 開發

 

xe6tour10-16

Delphi程式建立有密碼的access資料庫

如何直接利用Delphi建立有password的access mdb database?
[pascal]
Use System.Win.ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var cnewmdb:variant;
begin
// 透過ADOX建立
cnewmdb := CreateOleObject(‘ADOX.Catalog’);
cnewmdb.Create(‘Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.MDB;Jet OLEDB:Database Password=”12345678”;’ );

// 連線
ADOConnection1.ConnectionString:=’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TT2.MDB;Jet OLEDB:Database Password=”12345678”;’;
ADOConnection1.LoginPrompt:=false;
ADOConnection1.connected:=true;
end;

[/pascal]

Delphi 動態取得fastreport下物件

在Delphi下如何取得fastreport的元件及做值的修改?

[pascal]
var i:integer;
begin
frxreport1.LoadFromFile(‘test.fr3’);
frxreport1.Report.PrintOptions.Printer := ‘Adobe PDF’;
for i:=0 to frxreport1.ComponentCount -1 do begin //取得報表內所有物件
if frxreport1.Components[i].ClassName = ‘TfrxMemoView’ then begin // 找到TfrxMemoView
//ExtractFileName(frxreport1.FileName); 取得目前報表名稱
//frxreport1.Components[i].Name; 取得元件名稱
Tfrxmemoview(frxreport1.Components[i]).Text := ‘hello world’;
end;
end;
frxreport1.Report.PrintOptions.ShowDialog := false; // 不顯示對話框
frxreport1.Report.ShowProgress := False; // 不顯示列印進度
frxReport1.PrintOptions.Copies:=3; // 列印份數
frxreport1.Report.PrepareReport(true);
frxreport1.Print;
// 線上編輯報表
// frxreport1.DesignReport;
end;
[/pascal]

RAD Studio XE7 預覽研討會

報名網址點我進入

研討會內容:

XE7 持續強化 D2D,M2M 的功能,XE7 加入了支援藍牙和低耗電藍牙 (BLE),讓 App Tethering 可同時支持 WIFI 和藍芽。 XE7 的 FireMonkey 也再次進化並支援更多的強大功能,例如支援多螢幕顯示,支援 Immersive full-screen 模式,支援更多的 iOS 原生控制項等。XE7 的 IDE 也獲得了強化,例如支援 GIT 版本控制,新的專案管理員功能,加強的 Data Explorer 和許多其他新的功能。

“持續進化的完美” 是 RAD Studio XE7 的寫照,“持續強化的生產力” 是 RAD Studio XE7 的承諾。我們敬邀您一起來見證 XE7 再次令人驚嘆的進步,讓您在開發的領域中永遠遙遙領先。

同時我們將展示許多應用實例,包括整合各式硬體裝置廠商提供 .so 及 .jar 功能 (如:藍芽印表機、iBeacon 室內定位、條碼掃描器…等) 及網路攝影機 (IP Cam) 功能整合實機展示。萬勿錯過,請速報名。

主講人:
李 維 (Embarcadero 大中華區技術總監)

時間:
103 年 8 月 25 日 (一) 2:00~5:00pm (台北)
103 年 8 月 26 日 (二) 2:00~5:00pm (台中)
103 年 8 月 27 日 (三) 2:00~5:00pm (高雄)
103 年 8 月 28 日 (四) 2:00~5:00pm (新竹)

相關連結:

-弘光科技大學開發成功案例分享【行動點滴監控系統】
-教育部赴公民營研習會【行動 app 開發技術研習】
-Delphi XE6 FireMonkey for Mobile 六小時免費訓練
-網路研討會第二場 -雲端儲存 (範例程式下載)
-Delphi APP 開發入門連載
-Facebook 社團 -【Delphi & C++ 移動開發】

Delphi 多螢幕程式

在設計餐飲程式時,會遇到外接第二螢幕做為客戶顯示或展示廣告。在Delphi如何撰寫?

判斷系統螢幕數量
[pascal]
screen.MonitorCount
[/pascal]

將畫面移至第N螢幕(第一螢幕為0、第二螢幕為1…..)
[pascal]
self.Top := screen.Monitors[0].Top;
self.left := screen.Monitors[0].left;
[/pascal]