Delphi POS – fastreport出單機不固定長度單據

POS餐飲系統開發時,許多朋友常會遇到報表長度問題。像是出單機會依照內容多寡而出現長短不一的狀況。那在報表長度如何設定呢?

fastreport裡的page options內有一個Endless page height 打勾就行了!

未命名 - 1

Delphi POS – 透過USB Printer打開錢櫃

[pascal]
procedure USBOpenCashDrawer(PrinterName: String);
var
// use winspool
Handle, hDeviceMode: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
Device, Driver, Port: array [0 .. 255] of char;
ThePrinter: string;
code:ansistring;
begin
ThePrinter := PrinterName;
Code := chr(27) + chr(64)+ chr(27) + chr(112) + chr(0) + chr(50) + chr(200);

Printer.PrinterIndex := Printer.Printers.Indexof(ThePrinter);
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
PrinterName := Format(‘%s’, [Device]);
if not WinSpool.OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
// ShowMessage(‘Error : ‘ + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do
begin
pDocName := ‘Test’;
pOutputFile := nil;
pDataType := ‘RAW’;
end;

WinSpool.StartDocPrinter(Handle, 1, @DocInfo1);
WinSpool.StartPagePrinter(Handle);
WinSpool.WritePrinter(Handle, PAnsiChar(Code), Length(Code), N);
WinSpool.EndPagePrinter(Handle);
WinSpool.EndDocPrinter(Handle);
WinSpool.ClosePrinter(Handle);

end;
[/pascal]

開店買POS收銀硬體?找銥特爾科技是好選擇!

身邊好多朋友都在詢問,POS硬體買那一家比較好?不過說實在的!壽山是吃軟不吃硬的傢伙,所以都著重在軟體開發上面。硬體多是配合居多~不過既然大家都一直在詢問的話,就推一下朋友的老字號餐飲收銀系統公司。

銥特爾科技擁有超過十五年的餐飲、飲料、快餐POS收銀系統的經驗,硬體除了有低廉買斷的價格外,也可以利用月租的方式取得收銀機。而除了其他基本的硬體如出單機、客戶顯示器、標籤機、發票機之外,銥特爾科技也獨家取得台灣區的取餐呼叫器總代理,以及指紋門禁考勤機、來電顯示器等硬體。

10153777_220668251466416_5925132099323567958_n

1960052_214749398724968_105793911_n

1601354_214749395391635_1595013721_n

POS軟體部份,有功能強大的富必達阿波羅餐飲POS系統,也有簡單易上手的安達POS系統可做選擇,如果店家需要使用行動裝置做點餐,也有無線點餐系統可供選購。

10178132_218483098351598_4639304801783421976_n

10262050_218483095018265_128909876423590086_n    10151765_218483091684932_8697685651644490876_n1620879_218480575018517_9132188576972621908_n

10157130_218480531685188_4524845556808369937_n   10256103_218480595018515_6634262374133315077_n

10247304_220668071466434_5959772453704020542_n

銥特爾科技粉絲頁網址 http://on.fb.me/1gSk8dl

銥特爾點餐POS系統銷售諮詢

專線電話:02-29974000 / 蕭先生 0922067818 / 潘先生 0922987818

【胡思亂想】有點想來自寫一本Delphi XE5/6的電子書

下午在露天拍賣看到這本書叫價到2,000元(連結),對這本Delphi 徹底研究的書印象是同學口中的”聖經本”。不過好像後續的版本就沒再出了,總覺得很可惜,Delphi快速開發的特性再加上可以開發Android/iOS,應該可以再現風華,唯讀缺少一本類似這樣的書,或許對後續推廣Delphi XE4/5/6都很有幫助。

21305118420210_703

雖然捷康有出了幾本移動開發入門手冊/FireMonkey 資料庫程式 設計篇/DataSnap 開發實戰篇,可是又覺得不夠全面。

突然有股念頭想要自幹一本電子書出來,也當作自己的成果驗收好了!

http://embarcadero.qcomgroup.com.tw/images/publish/delphi_xe5_mobile_cover.jpg

 

Box2D for Delphi XE6下載

BOX2D 對開發手機2D遊戲的朋友想必不陌生,隨著Delphi XE6發表後,也有有網友也將BOX2D 轉成Firemonkey元件了!

這個版本是基於Box2D v2.3.0 所改寫的,下載連結也有附上範例。

Box2D 2.30 for Delphi XE5/Xe6

http://i0.wp.com/www.fmxexpress.com/wp-content/uploads/2014/04/box2d.jpg

 

Delphi使用SPComm沒辦法觸發ReceiveData

SPComm 在連線Com機器時,時候沒辦法觸發 ReceiveData,後來才知道StartComm後要留點時間給它喘氣(連線)。所以加上sleep~

[pascal]
var
s:Ansistring;
begin
RepCom.StartComm;
s := Chr(16) + Chr(4) + Chr(1) ;
sleep(50);
RepCom.WriteCommData(PAnsiChar(s),Length(s));
end;
[/pascal]

Delphi XE6(RAD Studio XE6)讓部落格流量增加?

blogstatus

自從XE4之後,發現自己的部落格有個很妙的現象!

只要遇到 Embarcadero有發表新的RAD STUDIO版本,

部落格的流量就會增加!

昨天 RAD STUDIO XE6發表後也是如此,呈現一柱擎天的現象~

不過老實說台灣關注 Delphi 或 RAD STUDIO的人數真的少很多

除了小弟之外,大概就是

縹緲’s blog

賈氏柏的屋簷下

自己也有在FB成立社群

Delphi Developer【Delphi開發者】

歡迎大家多多聯繫囉!

Delphi執行時拖拉、改變元件大小

應要求在程式執行時還要可以拉拖、改變元件大家~
分享一個不錯的函數
[pascal]
procedure DragResizeControl(WinControl: TControl; Shift: TShiftState;X, Y, Precision: integer);
var
SC_MANIPULATE: Word;
begin
if (X<=Precision) and (Y>Precision) and (Y<WinControl.Height-Precision) then begin
SC_MANIPULATE := $F001;
WinControl.Cursor := crSizeWE;
end else if (X>=WinControl.Width-Precision)
and (Y>Precision) and (Y<WinControl.Height-Precision) then begin
SC_MANIPULATE := $F002;
WinControl.Cursor := crSizeWE;
end else if (X>Precision)
and (X<WinControl.Width-Precision) and (Y<=Precision) then begin
SC_MANIPULATE := $F003;
WinControl.Cursor := crSizeNS;
end else if (X>Precision)
and (X<WinControl.Width-Precision) and (Y>=WinControl.Height-Precision) then begin
SC_MANIPULATE := $F006;
WinControl.Cursor := crSizeNS;
end else if (X<=Precision) and (Y<=Precision) then begin
SC_MANIPULATE := $F004;
WinControl.Cursor := crSizeNWSE;
end else if (X>=WinControl.Width-Precision) and (Y<=Precision) then begin
SC_MANIPULATE := $F005;
WinControl.Cursor := crSizeNESW ;
end else if (X<=Precision) and (Y>=WinControl.Height-Precision) then begin
SC_MANIPULATE := $F007;
WinControl.Cursor := crSizeNESW;
end else if (X>=WinControl.Width-Precision) and (Y>=WinControl.Height-Precision) then begin
SC_MANIPULATE := $F008;
WinControl.Cursor := crSizeNWSE;
end else if (X>5) and (Y>5) and (X<WinControl.Width-5)
and (Y<WinControl.Height-5) then begin
SC_MANIPULATE := $F009;
WinControl.Cursor := crSizeAll;
end else begin
SC_MANIPULATE := $F000;
WinControl.Cursor := crDefault;
end;

if Shift=[ssLeft] then begin
ReleaseCapture;
WinControl.Perform(WM_SYSCOMMAND, SC_MANIPULATE, 0);
end;
end;
[/pascal]
如用方法很簡單,在元件的MouseMove裡加上
[pascal]
DragResizeControl((Sender as TWinControl),Shift,X,Y,10);
[/pascal]

FastReport 直接列印

FastReport 直接列印

[pascal]
frxreport1.LoadFromFile(‘報表檔案’);
frxreport1.Report.PrintOptions.Printer := ‘印表機名稱’;
// frxreport1.ShowReport(); //顯示報表
frxreport1.Report.PrintOptions.ShowDialog := false; // 不顯示對話框
frxreport1.Report.ShowProgress := False; // 不顯示列印進度
frxReport1.PrintOptions.Copies:=3; // 列印份數
frxreport1.Report.PrepareReport(true);
frxreport1.Print;
[/pascal]