- 終端機輸入下列指令取得最新版本composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /Applications/MAMP/htdocs/
composer create-project laravel/laravel laraveltest
大型網站架構..net 架構師.rabbitMQ.redis.行動開發.APP開發教學.PHP Laravel開發..net core C# 開發.架構師之路.Delphi開發.資料庫程式.進銷存.餐飲POS系統
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /Applications/MAMP/htdocs/
composer create-project laravel/laravel laraveltest
目前有開放中文網域,不過在虛擬主機上Cpanel設定Addon Domains會出現錯誤,這時候需要透過PUNYCODE轉換才能將網域名稱從Unicode 編碼轉成DNS系統的編碼。
可以透過IDN Converter(https://manage.centralnic.com/support/idn_converter)把網域放在左邊的輸入框,按下Convert to PunyCode,就可以得到PunyCode編碼。
最後將Punycode編碼的網域名稱貼進去就可以成功設定:)
由於Access查詢日期時,會有 #2014/12/11 11:00:00#字串
結果在執行時,Delphi將 :認為是參數而出現
“提供不一致或不完全的資訊導致參數物件不適當地被拒。”
解決方式是將 : 改成 .
很奇怪的在DBGrid竟然沒有OnClick事件~不過還是可以用方式讓Click事件重見天日
[pascal]
private
{ Private declarations }
procedure dbgrid1Click(Sender:Tobject);
[/pascal]
[pascal]
procedure TForm1.FormCreate(Sender: TObject);
begin
dbgrid1.ControlStyle := dbgrid1.ControlStyle + [csClickevents];
TForm(dbgrid1).OnClick := dbgrid1click;
end;
[/pascal]
[pascal]
procedure TForm1.dbgrid1Click(Sender: Tobject);
begin
// Click事件
end;
[/pascal]
Indy這套免費又強大的網路元件相信對Delphi開發者不陌生,不過常常被問如何透過Indy傳送檔案。
寫了個簡單的範例給大家。
一、伺服端
只需要在表單放上一個IdTCPServer元件,接著在FormOnCreate以及IdTCPServer1OnExecute寫上
[pascal]
procedure TForm1.FormCreate(Sender: TObject);
begin
idtcpserver1.DefaultPort := 1234; // 可自行更改Port號,但Client/Server要一致
idtcpserver1.Active:=true;
end;
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
ms:Tfilestream;
fn:String;
begin
fn := ExtractFileName(acontext.Connection.IOHandler.ReadLn()); // 從Client接收檔名
ms := Tfilestream.Create(‘c:\’+fn, fmCreate);
ms.Position :=0;
acontext.Connection.IOHandler.ReadStream(ms,0,true);
ms.Free;
end;
[/pascal]
二、客戶端
畫面上放上IdTCPClient外,再放上三個Edit(分別是EdtHost、EdtPort、EdtFileName)以及四個Button(分別是BtnConnect、BtnDisConnect、BtnChooseFile、BtnSend)以及一個OpenDialog
[pascal]
procedure TForm1.BtnConnectClick(Sender: TObject);
begin
// 連接到伺服器
if IdTCPClient1.Connected then
IdTCPClient1.Disconnect;
IdTCPClient1.Host := EdtHost.Text;
IdTCPClient1.Port := StrToInt(EdtPort.Text);
IdTCPClient1.Connect;
end;
procedure TForm1.BtnDisconnectClick(Sender: TObject);
begin
// 斷開連線
IdTCPClient1.Disconnect;
end;
procedure TForm1.BtnChooseFileClick(Sender: TObject);
begin
// 選擇檔案
if opendialog1.Execute then begin
EdtFileName.Text :=opendialog1.FileName;
end;
end;
procedure TForm1.BtnSendClick(Sender: TObject);
var
ms : tmemorystream;
begin
// 傳送檔案
BtnConnect.Click;
ms := Tmemorystream.Create;
ms.Clear;
ms.LoadFromFile(EdtFileName.Text);
ms.Position :=0;
IdTCPClient1.IOHandler.LargeStream := true;
idtcpclient1.IOHandler.WriteLn(ExtractFileName(EdtFileName.Text)); // 告知檔名
idtcpclient1.IOHandler.Write(ms);
idtcpclient1.IOHandler.Close; // 很重要的一行,不然傳送完,無法開啟會出現檔案使用中
ms.Free;
end;
[/pascal]
好像常被問到POS機器上的發票要如何更換收執跟存根這件事!乾脆就拍了些照片分享出來
一、發票機上蓋打開後,會發現有二個槽,右邊的叫做發票存根聯(存根聯是店家自己留存用的,而且應依稅捐稽徵機關管理營利事業會計帳簿憑證辦法第27條規定,除應永久保存或有關未結會計事項者外,於會計年度決算程序辦理終了後,至少保存5年。);左邊的叫做發票收執聯(收執聯是店家給消費者保管,對獎用)。
二、我們先裝存根聯,把黑色定位點朝上
三、接下來按照方向從箭頭處穿入,壓住旁邊的壓桿穿出(沒壓住的話會被擋住)
四、接著把紙張插入存根捲紙軸中,記得是順時針方向
五、完成存根聯安裝
六、收執聯也一樣是黑色定位點朝上
七、依照箭頭穿入紙張,按住旁邊的壓桿讓紙張穿出
八、完成後,蓋回上蓋,按住存根進紙以及收執進紙不放讓二聯定位完成即可
九、就可以印出漂亮的發票了
相關法令: 營業人使用收銀機辦法
http://law.moj.gov.tw/LawClass/LawContent.aspx?PCODE=G0340084
Delphi XE7 Update1出爐!因為iOS8的原因Delay好一陣子release的版本很讓人期待,這次bug fix減少了~代表XE7越來越穩定嗎?:)
http://docwiki.embarcadero.com/RADStudio/XE7/en/Release_Notes_for_XE7_Update_1
1. Form -> keyprivew = True
2.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = vk_down) or (key = 13) then begin // 如果按向下鍵或Enter
//key:=vk_tab;
Caption :=ActiveControl.Name;
SendMessage(getparentform(self).Handle,WM_NEXTDLGCTL,0,0);
end else if (key = vk_up) then begin // 如果按向上鍵
Caption :=ActiveControl.Name;
SendMessage(getparentform(self).Handle,WM_NEXTDLGCTL,1,0);
end;
if ssctrl in shift then
if key = vk_f11 then showmessage(‘按下Ctrl+F11’);
end;