SmartFactory_NEOL/SOURCE/NEOL-KIOSK/uKiosk.pas
2026-09-04 14:06:10 +09:00

3286 lines
99 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit uKiosk;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.Types, System.Math,
System.TypInfo,
RegisterClasses_base, wItem, EmpMst, Vcl.Grids, Vcl.ComCtrls, Vcl.Imaging.jpeg,
acPNG, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
dxDateRanges, dxScrollbarAnnotations, Data.DB, cxDBData,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel,
cxClasses, cxGridCustomView, cxGrid, cxCalc, cxTextEdit,
dxSkinDevExpressStyle,
cxCheckBox, cxContainer, cxMaskEdit, cxDropDownEdit,
cxCheckComboBox, Vcl.WinXCtrls, IniFiles, Vcl.WinXPickers,
System.Net.HttpClient, System.Net.URLClient,
System.Net.HttpClientComponent, System.JSON,
MaterialData, SaleItemMst, ProductMst, CustMst, MachineMst,
Vcl.Touch.GestureMgr, Vcl.Menus,
EmpLog, cxCurrencyEdit;
type
TfKiosk = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
lbDBName: TLabeledEdit;
lbHost: TLabeledEdit;
lbPort: TLabeledEdit;
lbPassword: TLabeledEdit;
lbUserName: TLabeledEdit;
btDBConnect: TButton;
btDBdisConnect: TButton;
Button3: TButton;
Memo1: TMemo;
Memo2: TMemo;
StringGrid1: TStringGrid;
Panel2: TPanel;
Button2: TButton;
btQuery: TButton;
Pan_Main: TPanel;
Panel4: TPanel;
Image1: TImage;
Label4: TLabel;
Timer_datetime: TTimer;
Pan_default: TPanel;
PageControl1: TPageControl;
tab_pan_1: TTabSheet;
Pan_tab_1: TPanel;
tab_pan_2: TTabSheet;
Pan_tab_2: TPanel;
tab_pan_3: TTabSheet;
Pan_tab_3: TPanel;
Panel5: TPanel;
Label5: TLabel;
Panel6: TPanel;
Label6: TLabel;
Panel7: TPanel;
Label7: TLabel;
Panel8: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Panel11: TPanel;
Label8: TLabel;
Panel12: TPanel;
Label9: TLabel;
Panel13: TPanel;
Label10: TLabel;
Panel14: TPanel;
Panel15: TPanel;
Button1: TButton;
Panel16: TPanel;
GridOrderList: TcxGrid;
GridOrderListTV: TcxGridTableView;
GridOrderListTVColumn1: TcxGridColumn;
GridOrderListTVColumn2: TcxGridColumn;
GridOrderListTVColumn3: TcxGridColumn;
GridOrderListTVColumn4: TcxGridColumn;
GridOrderListTVColumn5: TcxGridColumn;
GridOrderListTVColumn6: TcxGridColumn;
GridOrderListTVColumn7: TcxGridColumn;
GridOrderListTVColumn8: TcxGridColumn;
GridOrderListTVColumn9: TcxGridColumn;
GridOrderListTVColumn10: TcxGridColumn;
GridOrderListTVColumn11: TcxGridColumn;
GridOrderListTVColumn12: TcxGridColumn;
GridOrderListTVColumn13: TcxGridColumn;
GridOrderListTVColumn14: TcxGridColumn;
GridOrderListTVColumn15: TcxGridColumn;
GridOrderListLv: TcxGridLevel;
GridPanel1: TGridPanel;
Panel17: TPanel;
Panel18: TPanel;
Panel19: TPanel;
Panel20: TPanel;
Button4: TButton;
TabSheet1: TTabSheet;
Panel21: TPanel;
TabSheet2: TTabSheet;
Panel23: TPanel;
Label11: TLabel;
Panel24: TPanel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
ComboBox1: TComboBox;
Panel22: TPanel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
Panel25: TPanel;
Label29: TLabel;
Panel26: TPanel;
Label30: TLabel;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
ComboBox2: TComboBox;
TabSheet3: TTabSheet;
Pan_Setting: TPanel;
Edit15: TEdit;
Label35: TLabel;
Panel3: TPanel;
Panel29: TPanel;
Label36: TLabel;
Edit16: TEdit;
Label37: TLabel;
ComboBox4: TComboBox;
ComboBox5: TComboBox;
ComboBox6: TComboBox;
Label41: TLabel;
Label42: TLabel;
Label43: TLabel;
DatePicker1: TDatePicker;
DatePicker2: TDatePicker;
DatePicker3: TDatePicker;
Panel31: TPanel;
Panel32: TPanel;
Panel33: TPanel;
Label44: TLabel;
Edit19: TEdit;
Edit20: TEdit;
Edit21: TEdit;
Panel34: TPanel;
Label45: TLabel;
Panel35: TPanel;
Edit22: TEdit;
Edit23: TEdit;
Edit24: TEdit;
Panel36: TPanel;
ComboBox7: TComboBox;
tab_Pan_4: TTabSheet;
tab_Pan_5: TTabSheet;
Pan_tab_4: TPanel;
Panel41: TPanel;
Panel42: TPanel;
Label51: TLabel;
Panel43: TPanel;
Edit17: TEdit;
Edit25: TEdit;
Edit26: TEdit;
Panel44: TPanel;
Pan_tab_5: TPanel;
Panel49: TPanel;
Panel50: TPanel;
Label55: TLabel;
Panel51: TPanel;
Edit27: TEdit;
Edit28: TEdit;
Edit29: TEdit;
Panel52: TPanel;
Pan_6: TPanel;
Label49_1: TLabel;
Pan_7: TPanel;
Label49: TLabel;
Pan_8: TPanel;
Label50: TLabel;
TabSheet4: TTabSheet;
Pan_tab_6: TPanel;
Panel45: TPanel;
Panel46: TPanel;
Panel48: TPanel;
cxGrid1: TcxGrid;
cxGridTableView1: TcxGridTableView;
cxGridLevel1: TcxGridLevel;
Edit30: TEdit;
Button5: TButton;
Button7: TButton;
Panel53: TPanel;
Label59: TLabel;
Edit34: TEdit;
Label61: TLabel;
Edit35: TEdit;
TabSheet5: TTabSheet;
TabSheet6: TTabSheet;
cxGridTableView1Column1: TcxGridColumn;
cxGridTableView1Column2: TcxGridColumn;
cxGridTableView1Column3: TcxGridColumn;
cxGridTableView1Column4: TcxGridColumn;
Button6: TButton;
Button14: TButton;
pan_tab_8: TPanel;
Panel38: TPanel;
Edit31: TEdit;
Button11: TButton;
Button12: TButton;
Panel39: TPanel;
Panel40: TPanel;
Label52: TLabel;
Label53: TLabel;
Button15: TButton;
Panel47: TPanel;
Edit32: TEdit;
Edit33: TEdit;
pan_tab_7: TPanel;
Panel55: TPanel;
cxGrid3: TcxGrid;
cxGridTableView3: TcxGridTableView;
cxGridTableView3Column1: TcxGridColumn;
cxGridTableView3Column2: TcxGridColumn;
cxGridTableView3Column3: TcxGridColumn;
cxGridTableView3Column4: TcxGridColumn;
cxGridLevel3: TcxGridLevel;
Edit36: TEdit;
Button8: TButton;
Button9: TButton;
Panel56: TPanel;
Panel57: TPanel;
Label48: TLabel;
Label54: TLabel;
Button13: TButton;
Panel58: TPanel;
Edit37: TEdit;
Edit38: TEdit;
Label56: TLabel;
Label58: TLabel;
Label60: TLabel;
Label62: TLabel;
Edit41: TEdit;
Edit42: TEdit;
Edit40: TEdit;
Edit43: TEdit;
Label63: TLabel;
Label64: TLabel;
Edit45: TEdit;
Label65: TLabel;
Label66: TLabel;
Label67: TLabel;
Edit47: TEdit;
Label68: TLabel;
Edit44: TEdit;
DatePicker7: TDatePicker;
DatePicker4: TDatePicker;
Label69: TLabel;
Edit13: TEdit;
Label70: TLabel;
Edit14: TEdit;
Label71: TLabel;
DatePicker5: TDatePicker;
Label72: TLabel;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label73: TLabel;
GroupBox3: TGroupBox;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Label74: TLabel;
GroupBox4: TGroupBox;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
Label75: TLabel;
GroupBox5: TGroupBox;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
Label76: TLabel;
Label78: TLabel;
Label79: TLabel;
Label80: TLabel;
Tmr_close: TTimer;
edt_close: TEdit;
Image4: TImage;
Image5: TImage;
Image6: TImage;
TabSheet7: TTabSheet;
Pan_Login: TPanel;
Image3: TImage;
Label34: TLabel;
Label57: TLabel;
Panel27: TPanel;
Image2: TImage;
Label31: TLabel;
Panel30: TPanel;
Image7: TImage;
Label32: TLabel;
Label33: TLabel;
edt_PASS: TEdit;
Panel28: TPanel;
edt_ID: TEdit;
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
RadioGroup3: TRadioGroup;
GroupBox6: TGroupBox;
RadioButton9: TRadioButton;
RadioButton10: TRadioButton;
Edit49: TEdit;
Panel37: TPanel;
cxGrid2: TcxGrid;
cxGridTableView2: TcxGridTableView;
cxGridTableView2Column1: TcxGridColumn;
cxGridTableView2Column2: TcxGridColumn;
cxGridTableView2Column3: TcxGridColumn;
cxGridTableView2Column4: TcxGridColumn;
cxGridTableView2Column5: TcxGridColumn;
cxGridTableView2Column6: TcxGridColumn;
cxGridTableView2Column7: TcxGridColumn;
cxGridTableView2Column8: TcxGridColumn;
cxGridLevel2: TcxGridLevel;
cxGrid4: TcxGrid;
cxGridTableView4: TcxGridTableView;
cxGridLevel4: TcxGridLevel;
cxGridTableView4Column1: TcxGridColumn;
cxGrid2Level1: TcxGridLevel;
cxGrid2TableView1: TcxGridTableView;
cxGrid2TableView1Column1: TcxGridColumn;
cxGrid2TableView1Column2: TcxGridColumn;
cbCustList: TComboBox;
Image8: TImage;
Panel60: TPanel;
Label38: TLabel;
Panel54: TPanel;
Panel59: TPanel;
ComboBox3: TComboBox;
RadioButton11: TRadioButton;
ComboBox8: TComboBox;
ComboBox9: TComboBox;
Edit18: TEdit;
cxGridTableView3Column5: TcxGridColumn;
Edit39: TEdit;
cxGridTableView2Column9: TcxGridColumn;
edtManufact: TEdit;
edtModel: TEdit;
edtMatUnitPrice: TEdit;
cxGridTableView2Column10: TcxGridColumn;
Edit46: TEdit;
Panel61: TPanel;
cxGridTableView2Column11: TcxGridColumn;
Edit48: TEdit;
cxGridTableView2Column12: TcxGridColumn;
Edit50: TEdit;
btnFINISH: TButton;
edt_OBID: TEdit;
edt_loginDateTime: TEdit;
procedure btDBConnectClick(Sender: TObject);
procedure btDBdisConnectClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure btQueryClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure StringGrid1DblClick(Sender: TObject);
procedure Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Pan_MainMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Timer_datetimeTimer(Sender: TObject);
procedure Label5Click(Sender: TObject);
procedure Label8Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Panel18Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Label12Click(Sender: TObject);
procedure Label30Click(Sender: TObject);
procedure Panel28Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
procedure Label4Click(Sender: TObject);
procedure Panel3Click(Sender: TObject);
procedure Panel29Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Panel32Click(Sender: TObject);
procedure Panel33Click(Sender: TObject);
procedure Panel35Click(Sender: TObject);
procedure Panel36Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure cxGridTableView1CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
procedure Button8Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure cxGridTableView1FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure cxGridTableView3FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure cxGridTableView2FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure Button7Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure edt_IDKeyPress(Sender: TObject; var Key: Char);
procedure edt_PASSKeyPress(Sender: TObject; var Key: Char);
procedure Tmr_closeTimer(Sender: TObject);
procedure Label31Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Label49_1Click(Sender: TObject);
procedure RadioButton9Click(Sender: TObject);
procedure Edit31Change(Sender: TObject);
procedure cxGridTableView4CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
procedure cxGridTableView4FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure cxGridTableView4CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure cxGrid2TableView1FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
procedure Panel54Click(Sender: TObject);
procedure Panel59Click(Sender: TObject);
procedure cxGrid2TableView1CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
procedure Edit34KeyPress(Sender: TObject; var Key: Char);
procedure Panel61Click(Sender: TObject);
procedure cxGridTableView4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure cxGridTableView4MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure cxGridTableView2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGrid2TableView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGrid2TableView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure cxGrid2TableView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure cxGridTableView3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure cxGridTableView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure cxGridTableView4MouseEnter(Sender: TObject);
procedure Panel38MouseEnter(Sender: TObject);
procedure Panel40MouseEnter(Sender: TObject);
procedure btnFINISHClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
dev_mode : integer;
FqryList: TList;
FDragging: Boolean;
FOffset: TPoint;
inifilename : string;
FDragScrolling: Boolean;
FStartY: Integer;
FStartTopRow: Integer;
procedure xShowInfo(tmpList: TList);
procedure xFreeAll(tmpList: TList);
function xGetObjEmpInfo: TList;
procedure pan_select(tag: integer);
procedure label_set_alclient;
procedure Buttonselect(tag: integer);
procedure Buttonselect_1(tag: integer);
procedure BTCreate_1(page_no,count: integer);
procedure BTCreate_2(page_no,count: integer);
procedure DynamicButton_1Click(Sender: TObject);
procedure DynamicButton_2Click(Sender: TObject);
procedure SelectFocusedRecord;
procedure recordselectbt_1(fpanel:TPanel ; ck: integer);
procedure PG_Connect;
procedure Material_refresh;
procedure Material_RTP_refresh;
procedure SaleItem_refresh;
function qCreateGetUniqueString(clsName: string): string;
procedure xCreateInsertSql(curMaterial: TMaterialData);
procedure xCreateInsertSql_EmpLog(EmpLog: TEmpLog);
procedure xCreateInsertSql_FobjSale(curSaleItem: TSaleItemMst);
procedure AlertCall(msg: string);
function ConfirmCall(msg: string):Boolean;
procedure login_;
procedure logout_;
procedure easyselectgridRefresh;
procedure cbCustList_Refresh;
function Alarm_use_CK: Boolean;
function Alarm_use_UPDATE(_set:string): Boolean;
function nametostock(_name: string): string;
function NametoProdModel(_name: string): string;
function NametoMatUnitPrice(_name: string): string;
procedure ordermstupdate(_name, _OBID, _LcStatus:string);
procedure login_API(logdata:string);
function GetLocalIPAddress: string;
function GetTimeDiffStr(StartTime, EndTime: TDateTime): string;
procedure alarmstatusCK(ck: Boolean);
procedure alarmstatusRefresh;
public
{ Public declarations }
procedure xAutoResizeStringGridColumns(Grid: TStringGrid; Canvas: TCanvas);
end;
var
fKiosk: TfKiosk;
implementation
uses uDM, NeolTestMain, Editor, uKioskView, uConfirmMessage, uAlertMessage, IdStack, uLogManagerThread;
{$R *.dfm}
procedure TfKiosk.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
// cbCustList_Refresh;
end;
procedure TfKiosk.cbCustList_Refresh;
var
CustMst : TCustMst;
tmpList : TStrings;
i : integer;
begin
try
cbCustList.Clear;
ComboBox8.Clear;
ComboBox9.Clear;
tmpList := TStringList.Create;
CustMst := TCustMst.Create(Self);
tmpList := CustMst.xGetStrsDistinctCustName(dm.FDQuery1);
if tmpList.Count > 0 then begin
for i := 0 to tmpList.Count -1 do begin
cbCustList.Items.Add(tmpList[i]);
end;
ComboBox8.Items := cbCustList.Items;
ComboBox9.Items := cbCustList.Items;
end;
finally
tmpList.Free;
end;
end;
procedure TfKiosk.Panel18Click(Sender: TObject);
begin
recordselectbt_1(Sender as TPanel, (Sender as TPanel).Tag);
end;
procedure TfKiosk.recordselectbt_1(fpanel:TPanel ; ck:integer);
begin
fpanel.Color := $00978F62;
if (GridOrderListTV.DataController.RecordCount > 0) then
begin
if GridOrderListTV.DataController.GetSelectedCount = 0 then
GridOrderListTV.DataController.FocusedRecordIndex := 0;
case ck of
0 : begin
GridOrderListTV.DataController.FocusedRecordIndex := 0;
end;
1 : begin
// if GridOrderListTV.DataController.FocusedRecordIndex - 1 >= 0 then
// GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex - 1;
if GridOrderListTV.DataController.FocusedRecordIndex - 7 >= 0 then
GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex - 7
else
GridOrderListTV.DataController.FocusedRecordIndex := 0;
end;
2 : begin
// if GridOrderListTV.DataController.FocusedRecordIndex + 1 < GridOrderListTV.DataController.RecordCount then
// GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex + 1;
if GridOrderListTV.DataController.FocusedRecordIndex + 7 < GridOrderListTV.DataController.RecordCount then
GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.FocusedRecordIndex + 7
else
GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.RecordCount - 1;
end;
3 : begin
GridOrderListTV.DataController.FocusedRecordIndex := GridOrderListTV.DataController.RecordCount - 1;
end;
end;
SelectFocusedRecord;
end;
Refresh;
Sleep(100);
fpanel.Color := $00E8E8D5;
end;
procedure TfKiosk.SelectFocusedRecord;
begin
// <20><><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ带 <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
GridOrderListTV.DataController.SelectRows(GridOrderListTV.DataController.FocusedRecordIndex, GridOrderListTV.DataController.FocusedRecordIndex);
GridOrderListTV.DataController.ClearSelection;
GridOrderListTV.Controller.FocusedRow.Selected := True;
end;
procedure TfKiosk.Panel28Click(Sender: TObject);
begin
login_;
end;
function TfKiosk.GetLocalIPAddress: string;
begin
// Indy <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȱ<><C8B0>ȭ<EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּҸ<D6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TIdStack.IncUsage;
try
Result := GStack.LocalAddress;
finally
TIdStack.DecUsage;
end;
end;
procedure TfKiosk.login_API(logdata:string);
var
HTTP: TNetHTTPClient;
Params: TStringList;
Response: IHTTPResponse;
URL: string;
begin
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵忡 <20><><EFBFBD>õ<EFBFBD> <20><>Ȯ<EFBFBD><C8AE> URL <20><><EFBFBD><EFBFBD>
URL := 'https://log.smart-factory.kr/apisvc/sendLogData.json';
HTTP := TNetHTTPClient.Create(nil);
Params := TStringList.Create;
try
Params.Add('crtfcKey=' + '$5$API$eGQm84us0vMutKCHr/q0zDgtgBqSK24rMGdRUKEdf1A'); // <20>α<EFBFBD>API<50><49><EFBFBD><EFBFBD>Ű [cite: 108]
Params.Add('logDt=' + FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', Now)); // <20>α<EFBFBD><CEB1>Ͻ<EFBFBD> [cite: 108]
Params.Add('useSe=' + logdata); // <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
Params.Add('sysUser=' + edt_ID.Text); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID
Params.Add('conectIp=' + GetLocalIPAddress); // <20><><EFBFBD><EFBFBD> IP
Params.Add('dataUsgqty=' + IntToStr(0)); // <20><><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>뷮 [cite: 108]
// POST <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Response := HTTP.Post(URL, Params);
if Response.StatusCode = 200 then
AddLog_Thread(Response.ContentAsString())
else
AddLog_Thread('Error: ' + IntToStr(Response.StatusCode));
finally
Params.Free;
HTTP.Free;
end;
except
//
end;
end;
procedure TfKiosk.login_;
var
EmpLog : TEmpLog;
begin
Panel28.Color := $005C583D;
label57.Visible := false;
Refresh;
try
try
// Pan_Login.Visible := False;
DM.FDQuery1.Close;
DM.FDQuery1.SQL.Text := 'SELECT * FROM "EmpMst" WHERE "EmpID"='''+edt_ID.Text+''' AND "EmpPwd"='''+edt_PASS.Text+'''';
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount > 0 then begin
Pan_Login.Visible := False;
try
EmpLog := TEmpLog.Create(Self);
EmpLog.Name := DM.FDQuery1.FieldByName('Name').AsString;
EmpLog.OBID := qCreateGetUniqueString('EmpLog');
EmpLog.wClassName := 'EmpLog';
EmpLog.CreateDate := FormatDateTime('yyyy-mm-dd',Now);
EmpLog.CreateTime := FormatDateTime('hh:nn:ss',Now);
EmpLog.CreatorID := 'asdf';
EmpLog.IsValid := 'true';
EmpLog.LcStatus := 'Working';
EmpLog.EmpID := DM.FDQuery1.FieldByName('EmpID').AsString;
EmpLog.TeamName := DM.FDQuery1.FieldByName('TeamName').AsString;
EmpLog.Role := DM.FDQuery1.FieldByName('Role').AsString;
EmpLog.ConnDate := FormatDateTime('yyyy-mm-dd',Now);
EmpLog.ConnTime := FormatDateTime('hh:nn:ss',Now);
EmpLog.ExitDate := '';
EmpLog.ExitTime := '';
EmpLog.UseTime := '';
xCreateInsertSql_EmpLog(EmpLog);
edt_loginDateTime.Text := FormatDateTime('yyyy-mm-dd hh:nn:ss',Now);
edt_OBID.Text := EmpLog.OBID;
finally
EmpLog.Free;
end;
login_API('DO6001'); // <20>α<EFBFBD><CEB1><EFBFBD>
cbCustList_Refresh;
case ComboBox7.ItemIndex of
1 : pan_select(6);
2 : pan_select(7);
3 : pan_select(8);
end;
end
else begin
label57.Visible := True;
edt_ID.SetFocus;
end;
except
on E: Exception do
//Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
ShowMessage('<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
finally
Panel28.Color := $00978F62;
end;
end;
function TfKiosk.GetTimeDiffStr(StartTime, EndTime: TDateTime): string;
var
Diff: TDateTime;
Days: Integer;
Hour, Min, Sec, MS: Word;
result_str : string;
begin
result_str := '';
// 1. <20><><EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϱ<EFBFBD>)
if StartTime > EndTime then
Diff := StartTime - EndTime
else
Diff := EndTime - StartTime;
// 2. '<27><>(Day)' <20><><EFBFBD><EFBFBD>: TDateTime<6D><65> <20><><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD> <20><>¥ <20><><EFBFBD>Դϴ<D4B4>.
Days := Trunc(Diff);
// 3. <20><>, <20><>, <20><> <20><><EFBFBD><EFBFBD>: DecodeTime<6D><65> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20>Ҽ<EFBFBD><D2BC><EFBFBD>(<28>ð<EFBFBD>) <20>κи<CEBA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴϴ<DDB4>.
DecodeTime(Diff, Hour, Min, Sec, MS);
Format('%d<><64> %d<>ð<EFBFBD> %d<><64> %d<><64>', [Days, Hour, Min, Sec]);
if Days > 0 then result_str := Format('%d<><64> ', [Days]);
if Hour > 0 then result_str := result_str + Format('%d<>ð<EFBFBD> ', [Hour]);
if Min > 0 then result_str := result_str + Format('%d<><64> ', [Min]);
if Sec > 0 then result_str := result_str + Format('%d<><64>', [Sec]);
// 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><>ȯ (%d<><64> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ġȯ)
Result := Trim(result_str);
end;
procedure TfKiosk.logout_;
var
update_sql : string;
StartDateTime, EndDateTime: TDateTime;
begin
if Trim(edt_OBID.Text) <> '' then begin
StartDateTime := StrToDateTime(edt_loginDateTime.Text);
EndDateTime := Now;
update_sql := ' UPDATE "EmpLog"' +
' SET "ExitDate" = '''+ FormatDateTime('yyyy-mm-dd',Now) +''' , '+
' "ExitTime" = '''+ FormatDateTime('hh:nn:ss',Now) +''' , '+
' "UseTime" = '''+ GetTimeDiffStr(StartDateTime,EndDateTime) +''' '+
' WHERE "OBID" = '''+ edt_OBID.Text +''' '+
' AND "EmpID" = '''+ edt_ID.Text +''' ';
if not DM.FDConnection1.Connected then DM.FDConnection1.Connected := True;
if DM.FDConnection1.Connected then
begin
DM.FDQuery1.Active := false;
DM.FDQuery1.SQL.Clear;
DM.FDQuery1.SQL.Add(update_sql);
DM.FDQuery1.ExecSQL;
end;
end;
end;
procedure TfKiosk.Panel29Click(Sender: TObject);
begin
Pan_Setting.Visible := False;
end;
procedure TfKiosk.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
FDragging := True;
FOffset := Point(X, Y);
end;
end;
procedure TfKiosk.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
NewPos: TPoint;
begin
if FDragging then
begin
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD> <20><> <20><>ǥ <20><><EFBFBD><EFBFBD>
NewPos := Panel1.ClientToParent(Point(X, Y));
Panel1.Left := NewPos.X - FOffset.X;
Panel1.Top := NewPos.Y - FOffset.Y;
end;
end;
procedure TfKiosk.Panel2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
FDragging := false;
FOffset := Point(X, Y);
end;
end;
procedure TfKiosk.Panel32Click(Sender: TObject);
begin
if Edit19.Text <> '1' then
begin
Edit19.Text := IntToStr(StrToInt(Edit19.Text)-1);
BTCreate_1(StrToInt(Edit19.Text)-1,StrToInt(Edit20.Text));
Label44.Caption := Edit19.Text + '/'+Edit21.Text;
end;
end;
procedure TfKiosk.Panel33Click(Sender: TObject);
begin
if Edit19.Text <> Edit21.Text then
begin
Edit19.Text := IntToStr(StrToInt(Edit19.Text)+1);
BTCreate_1(StrToInt(Edit19.Text)-1,StrToInt(Edit20.Text));
Label44.Caption := Edit19.Text + '/'+Edit21.Text;
end;
end;
procedure TfKiosk.Panel35Click(Sender: TObject);
begin
if Edit22.Text <> '1' then
begin
Edit22.Text := IntToStr(StrToInt(Edit22.Text)-1);
BTCreate_2(StrToInt(Edit22.Text)-1,StrToInt(Edit23.Text));
Label45.Caption := Edit22.Text + '/'+Edit24.Text;
end;
end;
procedure TfKiosk.Panel36Click(Sender: TObject);
begin
if Edit22.Text <> Edit24.Text then
begin
Edit22.Text := IntToStr(StrToInt(Edit22.Text)+1);
BTCreate_2(StrToInt(Edit22.Text)-1,StrToInt(Edit23.Text));
Label45.Caption := Edit22.Text + '/'+Edit24.Text;
end;
end;
procedure TfKiosk.Panel38MouseEnter(Sender: TObject);
begin
if btnFINISH.Visible then
btnFINISH.Visible := False;
end;
procedure TfKiosk.Panel3Click(Sender: TObject);
var
IniFile : TIniFile;
begin
(Sender as TPanel).Color := $005C583D;
Refresh;
try
IniFile := TIniFile.Create(inifilename);
try
IniFile.WriteString('Setting', 'I', Edit15.Text);
IniFile.WriteString('Setting', 'P', Edit16.Text);
IniFile.WriteBool('Setting_1', 'bool', True);
IniFile.WriteInteger('Setting', 'init_Mo', ComboBox7.ItemIndex);
finally
IniFile.Free;
end;
finally
Sleep(50);
(Sender as TPanel).Color := $00978F62;
end;
end;
procedure TfKiosk.Panel40MouseEnter(Sender: TObject);
begin
if btnFINISH.Visible then
btnFINISH.Visible := False;
end;
procedure TfKiosk.Panel54Click(Sender: TObject);
var
re : Boolean;
begin
re := Alarm_use_UPDATE('ON');
alarmstatusCK(re);
{
if ConfirmCall('[<5B>˶<EFBFBD> <20><><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?'+#13+#13+'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>˴ϴ<CBB4>.') then begin
Alarm_use_UPDATE('ON');
Pan_Setting.Visible := False;
end;
}
end;
procedure TfKiosk.alarmstatusRefresh;
var
re : Boolean;
tmpList : TList;
MachineMst : TMachineMst;
update_sql : string;
begin
try
tmpList := TList.Create;
MachineMst := TMachineMst.Create(Self);
tmpList := MachineMst.xGetStrSqlMachineMstList(DM.FDQuery1,'','','ALARM');
if tmpList.Count = 1 then begin
MachineMst := tmpList.Items[0];
alarmstatusCK(MachineMst.LcStatus = 'ON');
end;
finally
tmpList.free;
end;
end;
procedure TfKiosk.alarmstatusCK(ck:Boolean);
var
re : Boolean;
begin
if ck then begin
Panel54.Color := $00809443;
Panel59.Color := $009D9D9D;
end
else begin
Panel54.Color := $009D9D9D;
Panel59.Color := $00809443;
end;
end;
procedure TfKiosk.Panel59Click(Sender: TObject);
var
re : Boolean;
begin
re := Alarm_use_UPDATE('OFF');
alarmstatusCK(not re);
{
if ConfirmCall('[<5B>˶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?'+#13+#13+'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>˴ϴ<CBB4>.') then begin
Alarm_use_UPDATE('OFF');
Pan_Setting.Visible := False;
end;
}
end;
procedure TfKiosk.Panel61Click(Sender: TObject);
begin
close;
end;
function TfKiosk.Alarm_use_UPDATE(_set:string):Boolean;
var
tmpList : TList;
MachineMst : TMachineMst;
update_sql : string;
begin
Result := false;
try
tmpList := TList.Create;
MachineMst := TMachineMst.Create(Self);
tmpList := MachineMst.xGetStrSqlMachineMstList(DM.FDQuery1,'','','ALARM');
if tmpList.Count = 1 then begin
MachineMst := tmpList.Items[0];
update_sql := ' UPDATE "MachineMst"' +
' SET "LcStatus" = '''+ _set +''' '+
' WHERE "OBID" = '''+ MachineMst.OBID +''' ';
if not DM.FDConnection1.Connected then DM.FDConnection1.Connected := True;
if DM.FDConnection1.Connected then
begin
DM.FDQuery1.Active := false;
DM.FDQuery1.SQL.Clear;
DM.FDQuery1.SQL.Add(update_sql);
DM.FDQuery1.ExecSQL;
end;
Result := True;
end;
finally
tmpList.free;
end;
{
var
update_sql : string;
begin
try
update_sql := '';
update_sql := 'UPDATE "plc_Data" SET '+
'"dev_status"='''+Plc_status+''' '+
'"UpdateDT"=now() '+
' WHERE "plcID"='+inttostr(PLC_NO);
if not FDConnection1.Connected then FDConnection1.Connected := True;
if FDConnection1.Connected then
begin
FDQuery1.Active := false;
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add(update_sql);
FDQuery1.ExecSQL;
lastDBInsert := now;
if lb_status.Caption <> Plc_status then begin
lb_status.Caption := Plc_status;
end;
end;
except
on e : exception do
begin
Memo2_ADD('[insertSQL()]Database Connect Error :: '+e.Message);
end;
end;
end;
}
end;
function TfKiosk.Alarm_use_CK:Boolean;
var
tmpList : TList;
MachineMst : TMachineMst;
begin
Result := false;
try
tmpList := TList.Create;
MachineMst := TMachineMst.Create(Self);
tmpList := MachineMst.xGetStrSqlMachineMstList(DM.FDQuery1,'','','ALARM');
if tmpList.Count = 1 then begin
MachineMst := tmpList.Items[0];
if MachineMst.LcStatus = 'ON' then begin
Result := True;
end;
end;
finally
tmpList.free;
end;
end;
procedure TfKiosk.Pan_MainMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if dev_mode = 1 then begin
ReleaseCapture;
Perform( WM_SYSCOMMAND, $F012, 0 );
end;
end;
procedure TfKiosk.xAutoResizeStringGridColumns(Grid: TStringGrid;
Canvas: TCanvas);
var
Col, Row: Integer;
MaxWidth: Integer;
CellText: string;
begin
for Col := 0 to Grid.ColCount - 1 do begin
MaxWidth := 0;
for Row := 0 to Grid.RowCount - 1 do begin
CellText := Grid.Cells[Col, Row];
MaxWidth := max(MaxWidth, Canvas.TextWidth(CellText));
end;
Grid.ColWidths[Col] := MaxWidth + 10;
end;
end;
procedure TfKiosk.xFreeAll(tmpList: TList);
var
i: Integer;
tmpEmp: TEmpMst;
begin
i := 0;
while i < tmpList.Count do begin
tmpEmp := TEmpMst(tmpList.Items[0]);
tmpEmp.Free;
tmpList.Delete(0);
end;
tmpList.Free; tmpList:=nil;
end;
function TfKiosk.xGetObjEmpInfo: TList;
var
curEmp: TEmpMst;
begin
Result := TList.Create;
with dm do begin
while not FDQuery1.Eof do begin
curEmp := TEmpMst.Create(Self);
curEmp.OBID := FDQuery1.FieldByName('OBID').AsString;
curEmp.Name := FDQuery1.FieldByName('Name').AsString;
curEmp.wClassName := FDQuery1.FieldByName('wClassName').AsString;
curEmp.CreateDate := FDQuery1.FieldByName('CreateDate').AsString;
//curEmp.CreateTime := FDQuery1.FieldByName('CreateTime').AsString;
curEmp.CreateTime := FormatDateTime('hh:nn:ss', FDQuery1.FieldByName('CreateTime').AsDateTime);
curEmp.CreatorID := FDQuery1.FieldByName('CreatorID').AsString;
curEmp.IsValid := FDQuery1.FieldByName('IsValid').AsString;
curEmp.OrdCode := FDQuery1.FieldByName('OrdCode').AsString;
curEmp.Position := FDQuery1.FieldByName('Position').AsString;
curEmp.Role := FDQuery1.FieldByName('Role').AsString;
curEmp.InDate := FDQuery1.FieldByName('InDate').AsString;
curEmp.OutDate := FDQuery1.FieldByName('OutDate').AsString;
curEmp.Status := FDQuery1.FieldByName('Status').AsString;
curEmp.EmpTelNum := FDQuery1.FieldByName('EmpTelNum').AsString;
curEmp.EmpAddress := FDQuery1.FieldByName('EmpAddress').AsString;
curEmp.Descriptions := FDQuery1.FieldByName('Descriptions').AsString;
Result.Add(curEmp);
FDQuery1.Next;
end;
end;
end;
procedure TfKiosk.xShowInfo(tmpList: TList);
var
i, cidx, ridx: Integer;
tmpEmp: TEmpMst;
begin
ridx := 0;
StringGrid1.RowCount := tmpList.Count+1;
for i := 0 to tmpList.Count-1 do begin
tmpEmp := TEmpMst(tmpList.Items[i]);
Inc(ridx);
cidx := StringGrid1.Rows[0].IndexOf('OBID');
StringGrid1.Objects[cidx,ridx] := tmpEmp;
StringGrid1.Cells[cidx,ridx] := tmpEmp.OBID;
cidx := StringGrid1.Rows[0].IndexOf('Name');
StringGrid1.Cells[cidx,ridx] := tmpEmp.Name;
cidx := StringGrid1.Rows[0].IndexOf('wClassName');
StringGrid1.Cells[cidx,ridx] := tmpEmp.wClassName;
cidx := StringGrid1.Rows[0].IndexOf('CreateDate');
StringGrid1.Cells[cidx,ridx] := tmpEmp.CreateDate;
cidx := StringGrid1.Rows[0].IndexOf('CreateTime');
StringGrid1.Cells[cidx,ridx] := tmpEmp.CreateTime;
cidx := StringGrid1.Rows[0].IndexOf('CreatorID');
StringGrid1.Cells[cidx,ridx] := tmpEmp.CreatorID;
cidx := StringGrid1.Rows[0].IndexOf('IsValid');
StringGrid1.Cells[cidx,ridx] := tmpEmp.IsValid;
cidx := StringGrid1.Rows[0].IndexOf('OrdCode');
StringGrid1.Cells[cidx,ridx] := tmpEmp.OrdCode;
cidx := StringGrid1.Rows[0].IndexOf('Position');
StringGrid1.Cells[cidx,ridx] := tmpEmp.Position;
cidx := StringGrid1.Rows[0].IndexOf('Role');
StringGrid1.Cells[cidx,ridx] := tmpEmp.Role;
cidx := StringGrid1.Rows[0].IndexOf('InDate');
StringGrid1.Cells[cidx,ridx] := tmpEmp.InDate;
cidx := StringGrid1.Rows[0].IndexOf('OutDate');
StringGrid1.Cells[cidx,ridx] := tmpEmp.OutDate;
cidx := StringGrid1.Rows[0].IndexOf('Status');
StringGrid1.Cells[cidx,ridx] := tmpEmp.Status;
cidx := StringGrid1.Rows[0].IndexOf('EmpTelNum');
StringGrid1.Cells[cidx,ridx] := tmpEmp.EmpTelNum;
cidx := StringGrid1.Rows[0].IndexOf('EmpAddress');
StringGrid1.Cells[cidx,ridx] := tmpEmp.EmpAddress;
cidx := StringGrid1.Rows[0].IndexOf('Descriptions');
StringGrid1.Cells[cidx,ridx] := tmpEmp.Descriptions;
end;
end;
procedure TfKiosk.btDBConnectClick(Sender: TObject);
begin
DM.PG_DBName := lbDBName.Text;
DM.PG_UserName := lbUserName.Text;
DM.PG_Password := lbPassword.Text;
DM.PG_Host := lbHost.Text;
DM.PG_Port := lbPort.Text;
if dm.DM_Connect then begin
btDBConnect.Enabled := False;
btDBdisConnect.Enabled := True;
Memo1.Lines.Add('PG_Connected : TRUE');
end
else begin
btDBConnect.Enabled := True;
btDBdisConnect.Enabled := False;
Memo1.Lines.Add('PG_Connected : FALSE');
end;
end;
procedure TfKiosk.btDBdisConnectClick(Sender: TObject);
begin
if dm.DM_Close then begin
btDBConnect.Enabled := True;
btDBdisConnect.Enabled := False;
Memo1.Lines.Add('PG_disConnected');
end;
end;
procedure TfKiosk.btnFINISHClick(Sender: TObject);
begin
if RadioButton9.Checked and ConfirmCall(Label80.Caption + #13+ #13+' <20>Ϸ<EFBFBD> ó<><C3B3> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?') then begin
ordermstupdate(Label80.Caption, Edit50.Text, 'FINISH');
Edit14.Text := '';
Edit32.Text := '';
Edit48.Text := '';
Edit50.Text := '';
cbCustList.ItemIndex := -1;
DatePicker5.Date := Now;
easyselectgridRefresh;
SaleItem_refresh;
end;
btnFINISH.Visible := False;
end;
procedure TfKiosk.btQueryClick(Sender: TObject);
var
i: Integer;
tmpList: TList;
tmpItem: TwItem;
tmpEmp: TEmpMst;
begin
try
DM.FDQuery1.Close;
DM.FDQuery1.SQL.Text := Memo2.Lines.Text;
DM.FDQuery1.Open;
except
on E: Exception do ShowMessage('<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
if FqryList <> nil then xFreeAll(FqryList);
FqryList := xGetObjEmpInfo;
xShowInfo(FqryList);
xAutoResizeStringGridColumns(StringGrid1, Canvas);
end;
procedure TfKiosk.Button11Click(Sender: TObject);
begin
easyselectgridRefresh;
SaleItem_refresh;
end;
function TfKiosk.nametostock(_name:string):string;
begin
result := '0';
DM.FDQuery1.SQL.Text := ' SELECT "item", "balance" ' +
' FROM "stock_summary" '+
' WHERE "item" = '''+_name+''';';
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount = 1 then begin
if Trim(DM.FDQuery1.FieldByName('balance').AsString) = '' then
result := '0'
else
result := Trim(DM.FDQuery1.FieldByName('balance').AsString);
end;
end;
function TfKiosk.NametoProdModel(_name:string):string;
begin
result := '';
DM.FDQuery1.SQL.Text := ' SELECT "Name", "Model" ' +
' FROM "ProductMst" '+
' WHERE "Name" = '''+_name+''';';
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount = 1 then begin
result := Trim(DM.FDQuery1.FieldByName('Model').AsString);
end;
end;
function TfKiosk.NametoMatUnitPrice(_name:string):string;
begin
result := '';
DM.FDQuery1.SQL.Text := ' SELECT "item", "MatUnitPrice" ' +
' FROM "stock_summary" '+
' WHERE "item" = '''+_name+''';';
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount = 1 then begin
result := Trim(DM.FDQuery1.FieldByName('MatUnitPrice').AsString);
end;
end;
procedure TfKiosk.SaleItem_refresh;
var
row_ck, i : Integer;
tmpList : TList;
kind, stock_qty : string;
SaleItemMst : TSaleItemMst;
begin
try
DM.FDQuery1.Close;
if RadioButton9.Checked then begin // <20><>ǰ <20>԰<EFBFBD> : ordermst -> salemst
if Trim(Edit31.Text) <> '' then begin
DM.FDQuery1.SQL.Text := ' SELECT "OBID","LcStatus","OrdCode","Name","CustName","Qty","MatKind","Unitt","ProdCode","Manufact", ' +
' "stock_summary"."balance" '+
' FROM "OrderMst" LEFT JOIN "stock_summary" '+
' ON "OrderMst"."Name" = "stock_summary"."item" '+
' WHERE "LcStatus"=''ORDER'' '+
' AND "IsValid"=true '+
' AND ( '+
' ("OrdCode" Like '''+Trim(Edit31.Text)+'%'') '+
' OR ("Name" Like '''+Trim(Edit31.Text)+'%'') '+
' ) '+
' ORDER BY "Name"';
end
else begin
DM.FDQuery1.SQL.Text := ' SELECT "OBID","LcStatus","OrdCode","Name","CustName","Qty","MatKind","Unitt","ProdCode","Manufact", ' +
' "stock_summary"."balance" '+
' FROM "OrderMst" LEFT JOIN "stock_summary" '+
' ON "OrderMst"."Name" = "stock_summary"."item"'+
' WHERE "LcStatus"=''ORDER'' '+
' AND "IsValid"=true '+
' ORDER BY "Name"';
end;
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount > 0 then begin
with cxGridTableView2.DataController do begin
try
BeginUpdate;
RecordCount := 0;
finally
EndUpdate;
end;
try
BeginUpdate;
DM.FDQuery1.First;
while not DM.FDQuery1.Eof do begin
row_ck := AppendRecord;
// "OBID","LcStatus","OrdCode","Name","CustName","Qty","MatKind"
Values[row_ck,cxGridTableView2Column1.Index] := DM.FDQuery1.FieldByName('OrdCode').AsString;
Values[row_ck,cxGridTableView2Column2.Index] := DM.FDQuery1.FieldByName('Name').AsString;
Values[row_ck,cxGridTableView2Column3.Index] := DM.FDQuery1.FieldByName('CustName').AsString;
Values[row_ck,cxGridTableView2Column4.Index] := DM.FDQuery1.FieldByName('Qty').AsString;
Values[row_ck,cxGridTableView2Column5.Index] := DM.FDQuery1.FieldByName('Unitt').AsString;
Values[row_ck,cxGridTableView2Column6.Index] := DM.FDQuery1.FieldByName('LcStatus').AsString;
Values[row_ck,cxGridTableView2Column7.Index] := DM.FDQuery1.FieldByName('MatKind').AsString;
Values[row_ck,cxGridTableView2Column8.Index] := DM.FDQuery1.FieldByName('OBID').AsString;
Values[row_ck,cxGridTableView2Column9.Index] := DM.FDQuery1.FieldByName('ProdCode').AsString;
Values[row_ck,cxGridTableView2Column10.Index] := DM.FDQuery1.FieldByName('Manufact').AsString;
Values[row_ck,cxGridTableView2Column11.Index] := DM.FDQuery1.FieldByName('balance').AsString;
Values[row_ck,cxGridTableView2Column12.Index] := DM.FDQuery1.FieldByName('OBID').AsString;
// Values[row_ck,cxGridTableView2Column8.Index] := DM.FDQuery1.FieldByName('Thickness').AsString;
// Values[row_ck,cxGridTableView2Column9.Index] := DM.FDQuery1.FieldByName('ProdLength').AsString;
DM.FDQuery1.Next;
end;
finally
EndUpdate;
end;
end;
end
else begin
with cxGridTableView2.DataController do begin
try
BeginUpdate;
RecordCount := 0;
finally
EndUpdate;
end;
end;
end;
end else
if RadioButton10.Checked then begin // <20><>ǰ <20><><EFBFBD><EFBFBD> : salemst -> - <20>Է<EFBFBD>
DM.FDQuery1.SQL.Text := ' SELECT * ' +
' FROM stock_summary '+
' ORDER BY item; ';
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount > 0 then begin
with cxGrid2TableView1.DataController do begin
try
BeginUpdate;
RecordCount := 0;
finally
EndUpdate;
end;
try
BeginUpdate;
DM.FDQuery1.First;
while not DM.FDQuery1.Eof do begin
row_ck := AppendRecord;
Values[row_ck,cxGrid2TableView1Column1.Index] := DM.FDQuery1.FieldByName('item').AsString;
Values[row_ck,cxGrid2TableView1Column2.Index] := DM.FDQuery1.FieldByName('balance').AsString;
DM.FDQuery1.Next;
end;
finally
EndUpdate;
end;
end;
end;
end else
if RadioButton11.Checked then begin // <20><>ǰ <20>ҷ<EFBFBD> <20>԰<EFBFBD> : product -> salemst - <20>Է<EFBFBD>
DM.FDQuery1.SQL.Text := ' SELECT * ' +
' FROM "ProductMst" '+
' WHERE "IsValid" = true '+
' ORDER BY "Name"; ';
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount > 0 then begin
with cxGrid2TableView1.DataController do begin
try
BeginUpdate;
RecordCount := 0;
finally
EndUpdate;
end;
try
BeginUpdate;
DM.FDQuery1.First;
while not DM.FDQuery1.Eof do begin
row_ck := AppendRecord;
Values[row_ck,cxGrid2TableView1Column1.Index] := DM.FDQuery1.FieldByName('Name').AsString;
Values[row_ck,cxGrid2TableView1Column2.Index] := DM.FDQuery1.FieldByName('ProdSpec').AsString;
DM.FDQuery1.Next;
end;
finally
EndUpdate;
end;
end;
end;
end;
except
on E: Exception do
Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(Material_refresh): ' + E.Message);
end;
end;
procedure TfKiosk.Button12Click(Sender: TObject);
var
fKioskView : TfKioskView;
begin
if (Trim(label80.Caption) = '') or (Trim(label80.Caption) = '<27><>ǰ<EFBFBD><C7B0>') then exit;
fKioskView := TfKioskView.Create(nil);
try
fKioskView.RadioGroup1.ItemIndex := 2; // 0 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 : RTP<54><50><EFBFBD><EFBFBD>, 2 : <20><>ǰ
fKioskView.RadioGroup2.Columns := 4; // <20>ҷ<EFBFBD> <20>߰<EFBFBD>
fKioskView.RadioGroup2.Items.Add('<27>ҷ<EFBFBD>');
fKioskView.Label2.Caption := Trim(label80.Caption); // '<27><>ǰ<EFBFBD><C7B0>';
fKioskView.edit1.text := Edit42.Text;
fKioskView.ShowModal; // <20><><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
// <20>Ǵ<EFBFBD> NewForm.Show; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
finally
fKioskView.Free;
end;
end;
procedure TfKiosk.Button13Click(Sender: TObject);
var
FobjMat : TMaterialData;
begin
if (Trim(Edit37.Text) = '') or (Trim(Edit37.Text) = '0') or (Trim(Edit37.Text) = '0.0') or (Trim(Edit37.Text) = '.0') or (Trim(Edit37.Text) = '0.') or (Trim(Panel58.Caption) = '') or (Trim(Panel58.Caption) = 'RTP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') then exit;
if Trim(Edit37.Text) <> '' then begin
if StrToFloatDef(Trim(Edit37.Text),0.0) <= 0.0 then exit;
if not RadioButton5.Checked then begin
if StrToFloatDef(Trim(Edit44.Text),0.0) < StrToFloatDef(Trim(Edit37.Text),0.0) then begin
AlertCall('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ Ȯ<><C8AE> <20><><EFBFBD><EFBFBD>.');
Exit;
end;
end;
end;
FobjMat := TMaterialData.Create(Self);
FobjMat.Name := Panel58.Caption;
FobjMat.MatKind := Edit18.Text;
FobjMat.OBID := qCreateGetUniqueString('MaterialData');
FobjMat.wClassName := 'MaterialData';
FobjMat.CreateDate := FormatDateTime('yyyy-MM-dd',Now);
FobjMat.CreateTime := FormatDateTime('HH:nn:ss',Now);
FobjMat.CreatorID := edt_ID.Text;
FobjMat.IsValid := 't';
FobjMat.LcStatus := 'Working';
FobjMat.OrdNum := '0';
FobjMat.OrdCode := Edit41.Text;
FobjMat.Standard := '';
if RadioButton5.Checked then begin
FobjMat.Kind := '<27>԰<EFBFBD>';
FobjMat.InQty := Edit37.Text;
FobjMat.OutQty := '0';
end
else begin
FobjMat.Kind := '<27><><EFBFBD><EFBFBD>';
FobjMat.InQty := '0';
FobjMat.OutQty := Edit37.Text;
end;
FobjMat.StockQty := '0';
FobjMat.Status := '';
FobjMat.Descriptions := Edit38.Text;
FobjMat.Unitt := Edit47.Text;
FobjMat.OrdDate := FormatDateTime('yyyy-MM-dd',DatePicker4.Date);
FobjMat.CustName := ComboBox8.Text;
FobjMat.MatType := 'RTP';
if ConfirmCall(FobjMat.Kind+' ó<><C3B3> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?') then begin
xCreateInsertSql(FobjMat);
Edit37.Text := '';
Edit38.Text := '';
DatePicker4.Date := Now;
// Edit44.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Edit41.Text,'RTP');
// Edit44.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel58.Caption),'RTP');
Edit44.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit41.Text),'RTP');
{
class function TMaterialData.xGetStrSumStockQty(AQuery: TFDQuery;
code, mtype: string): string;
}
AlertCall(FobjMat.Kind+' ó<><C3B3> <20>Ϸ<EFBFBD>.');
end;
end;
procedure TfKiosk.Button14Click(Sender: TObject);
begin
ConfirmCall('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD>Ͻðھ<C3B0><DABE><EFBFBD>?');
end;
procedure TfKiosk.Button15Click(Sender: TObject);
var
FobjSaleItem : TSaleItemMst;
begin
// if (RadioButton9.Checked or RadioButton10.Checked) and
// ((Trim(Edit32.Text) = '') or (Trim(Edit32.Text) = '0') or (Trim(Edit32.Text) = '0.0') or (Trim(Edit32.Text) = '.0') or (Trim(Edit32.Text) = '0.') or (Trim(Label80.Caption) = '') or (Trim(Label80.Caption) = '<27><>ǰ<EFBFBD><C7B0>')) then exit;
if (Trim(Edit32.Text) = '') or (Trim(Edit32.Text) = '0') or (Trim(Edit32.Text) = '0.0') or (Trim(Edit32.Text) = '.0') or (Trim(Edit32.Text) = '0.') or (Trim(Label80.Caption) = '') or (Trim(Label80.Caption) = '<27><>ǰ<EFBFBD><C7B0>') then exit;
if ( RadioButton9.Checked or RadioButton10.Checked ) and (Trim(Edit32.Text) <> '') then begin
if StrToFloatDef(Trim(Edit32.Text),0.0) <= 0.0 then exit;
if RadioButton10.Checked then begin // <20><>ǰ <20><><EFBFBD><EFBFBD>
if StrToFloatDef(Trim(Edit13.Text),0.0) < StrToFloatDef(Trim(Edit32.Text),0.0) then begin
AlertCall('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ Ȯ<><C8AE> <20><><EFBFBD><EFBFBD>.');
Exit;
end;
end else
{ // 2026-01-13 <20>׿<EFBFBD> <20>ۼ<EFBFBD><DBBC><EFBFBD> <20><>û<EFBFBD><C3BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if RadioButton9.Checked then begin // <20><>ǰ <20>԰<EFBFBD>
if StrToFloatDef(Trim(Edit32.Text),0.0) < (StrToFloatDef(Trim(Edit48.Text),0.0) - StrToFloatDef(Trim(Edit13.Text),0.0)) then begin
AlertCall('<<3C>԰<EFBFBD> <20><><EFBFBD><EFBFBD>>'+#13+
'<27>԰<EFBFBD> <20><><EFBFBD><EFBFBD> >= (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)'+#13+#13+
'<<3C>԰<EFBFBD> <20>Ұ<EFBFBD>>'+#13+
'<27>԰<EFBFBD> <20><><EFBFBD><EFBFBD> < (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)');
Exit;
end;
end;
}
end;
FobjSaleItem := TSaleItemMst.Create(Self);
FobjSaleItem.Name := Label80.Caption;
FobjSaleItem.OBID := qCreateGetUniqueString('SaleItemMst');
FobjSaleItem.wClassName := 'SaleItemMst';
FobjSaleItem.CreateDate := FormatDateTime('yyyy-MM-dd',Now);
FobjSaleItem.CreateTime := FormatDateTime('HH:nn:ss',Now);
FobjSaleItem.CreatorID := edt_ID.Text;
FobjSaleItem.IsValid := 't';
FobjSaleItem.LcStatus := 'Working';
FobjSaleItem.OrdDate := FormatDateTime('yyyy-MM-dd',DatePicker5.Date);
FobjSaleItem.OrdCode := Edit39.Text;
FobjSaleItem.Qty := IntToStr(StrToIntDef(Edit32.Text,0));
FobjSaleItem.GoodQty := '0';
FobjSaleItem.DefQty := '0';
FobjSaleItem.Unitt := Edit14.Text;
FobjSaleItem.Descriptions := Edit33.Text;
FobjSaleItem.ReQty := '0';
FobjSaleItem.DeliveryQty := '0';
FobjSaleItem.MatKind := Edit49.Text;
if RadioButton9.Checked then begin
FobjSaleItem.Status := '';
FobjSaleItem.Kind := '<27>԰<EFBFBD>';
end else
if RadioButton10.Checked then begin
FobjSaleItem.Status := '';
FobjSaleItem.Kind := '<27><><EFBFBD><EFBFBD>';
end else
if RadioButton11.Checked then begin
FobjSaleItem.Status := ComboBox3.Text;
FobjSaleItem.Kind := '<27>ҷ<EFBFBD>';
end;
FobjSaleItem.CustName := cbCustList.Text;
FobjSaleItem.Manufact := edtManufact.Text;
edtModel.Text := NametoProdModel(FobjSaleItem.Name);
FobjSaleItem.Model := edtModel.Text;
edtMatUnitPrice.Text := NametoMatUnitPrice(FobjSaleItem.Name);
FobjSaleItem.MatUnitPrice := FloatToStr(StrToFloatDef(Trim(edtMatUnitPrice.Text),0.0)); //edtMatUnitPrice.Text;
FobjSaleItem.MatCost := FloatToStr(StrToFloatDef(Trim(edtMatUnitPrice.Text),0.0) * StrToFloatDef(Trim(Edit32.Text),0.0));
if ConfirmCall(FobjSaleItem.Kind+' ó<><C3B3> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?') then begin
xCreateInsertSql_FobjSale(FobjSaleItem);
{ // 2026-01-13 <20><><EFBFBD><EFBFBD>ȣ <20><><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if RadioButton9.Checked then begin
ordermstupdate(Label80.Caption, Edit50.Text, 'FINISH');
end;
}
Edit14.Text := '';
Edit32.Text := '';
Edit48.Text := '';
Edit50.Text := '';
cbCustList.ItemIndex := -1;
DatePicker5.Date := Now;
// Edit13.Text := FobjSaleItem.xGetStrSumStockQty(dm.FDQuery1,Edit40.Text,'NORMAL'); <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> <20>ʿ<EFBFBD>
AlertCall(FobjSaleItem.Kind+' ó<><C3B3> <20>Ϸ<EFBFBD>.');
easyselectgridRefresh;
SaleItem_refresh;
end;
end;
procedure TfKiosk.ordermstupdate(_name,_OBID,_LcStatus:string);
var
update_sql : string;
begin
update_sql := ' UPDATE "OrderMst"' +
' SET "LcStatus" = '''+ _LcStatus +''' '+
' WHERE "OBID" = '''+ _OBID +''' '+
' AND "Name" = '''+ _name +''' ';
if not DM.FDConnection1.Connected then DM.FDConnection1.Connected := True;
if DM.FDConnection1.Connected then
begin
DM.FDQuery1.Active := false;
DM.FDQuery1.SQL.Clear;
DM.FDQuery1.SQL.Add(update_sql);
DM.FDQuery1.ExecSQL;
end;
end;
function TfKiosk.ConfirmCall(msg: string):Boolean;
var
fConfirmMessage : TfConfirmMessage;
begin
Result := False;
fConfirmMessage := TfConfirmMessage.Create(nil);
try
fConfirmMessage.Label1.Caption := msg;
fConfirmMessage.ShowModal; // <20><><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
if fConfirmMessage.ModalResult = mrYes then
Result := True
else
Result := False;
finally
fConfirmMessage.Free;
end;
end;
procedure TfKiosk.Button1Click(Sender: TObject);
var
CK_ROW : integer;
I : integer;
begin
try
GridOrderListTV.DataController.BeginUpdate;
for I := 0 to 10 do begin
with GridOrderListTV.DataController do begin
CK_ROW := AppendRecord;
Values[CK_ROW, GridOrderListTVColumn1.Index] := 'A'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn2.Index] := 'B'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn3.Index] := 'C'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn4.Index] := 'D'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn5.Index] := 'E'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn6.Index] := 'F'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn7.Index] := 'G'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn8.Index] := 'H'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn9.Index] := 'I'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn10.Index] := 'J'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn11.Index] := 'K'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn12.Index] := 'L'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn13.Index] := 'M'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn14.Index] := 'N'+IntToStr(CK_ROW);
Values[CK_ROW, GridOrderListTVColumn15.Index] := 'O'+IntToStr(CK_ROW);
end;
end;
finally
GridOrderListTV.DataController.EndUpdate;
end;
end;
procedure TfKiosk.Button2Click(Sender: TObject);
begin
Memo2.Lines.Clear;
Memo2.Lines.Add('SELECT * FROM "EmpMst" WHERE "IsValid"=' + dm.xAddSqlMark('t') + ';');
end;
procedure TfKiosk.Button3Click(Sender: TObject);
begin
frmNeolTestMain := TfrmNeolTestMain.Create(nil);
frmNeolTestMain.Show;
end;
procedure TfKiosk.Button4Click(Sender: TObject);
begin
try
GridOrderListTV.DataController.BeginUpdate;
GridOrderListTV.DataController.RecordCount:=0;
finally
GridOrderListTV.DataController.EndUpdate;
end;
end;
procedure TfKiosk.Button5Click(Sender: TObject);
begin
Material_refresh;
end;
procedure TfKiosk.Material_refresh;
var
row_ck, i : Integer;
begin
try
DM.FDQuery1.Close;
if Trim(Edit30.Text) <> '' then begin
DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", '+
' SUM("InQty") - SUM("OutQty") AS balance '+
' FROM "MaterialData" '+
' WHERE "MatType"=''NORMAL'' '+
' AND "IsValid"=true '+
' AND ( '+
' ("Name" Like ''%'+Trim(Edit30.Text)+'%'') '+
' OR ("CustName" Like ''%'+Trim(Edit30.Text)+'%'') '+
' ) '+
' GROUP BY "OrdCode", "Name", "Unitt" '+
' ORDER BY "Name"';
end
else begin
DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", '+
' SUM("InQty") - SUM("OutQty") AS balance '+
' FROM "MaterialData" '+
' WHERE "MatType"=''NORMAL'' '+
' AND "IsValid"=true '+
' GROUP BY "OrdCode", "Name", "Unitt" '+
' ORDER BY "Name"';
end;
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount > 0 then begin
with cxGridTableView1.DataController do begin
try
BeginUpdate;
RecordCount := 0;
finally
EndUpdate;
end;
try
BeginUpdate;
DM.FDQuery1.First;
while not DM.FDQuery1.Eof do begin
row_ck := AppendRecord;
Values[row_ck,cxGridTableView1Column1.Index] := DM.FDQuery1.FieldByName('OrdCode').AsString;
Values[row_ck,cxGridTableView1Column2.Index] := DM.FDQuery1.FieldByName('Name').AsString;
Values[row_ck,cxGridTableView1Column3.Index] := DM.FDQuery1.FieldByName('Unitt').AsString;
Values[row_ck,cxGridTableView1Column4.Index] := DM.FDQuery1.FieldByName('balance').AsString;
DM.FDQuery1.Next;
end;
finally
EndUpdate;
end;
end;
end;
except
on E: Exception do
Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(Material_refresh): ' + E.Message);
end;
end;
procedure TfKiosk.Button6Click(Sender: TObject);
var
fKioskView : TfKioskView;
begin
if (Trim(Panel53.Caption) = '') or (Trim(Panel53.Caption) = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') then exit;
fKioskView := TfKioskView.Create(nil);
try
fKioskView.RadioGroup1.ItemIndex := 0; // 0 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 : RTP<54><50><EFBFBD><EFBFBD>, 2 : <20><>ǰ
fKioskView.Label2.Caption := Trim(Panel53.Caption); // '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
fKioskView.edit1.text := Edit40.Text;
fKioskView.ShowModal; // <20><><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
// <20>Ǵ<EFBFBD> NewForm.Show; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
finally
fKioskView.Free;
end;
end;
function TfKiosk.qCreateGetUniqueString(clsName: string): string;
var
randomInt: Integer;
tmStmp: TTimeStamp;
dbName: string;
begin
//****************OBID<49><44>Ģ*****************//
//Result := clsName(Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) + '-Ÿ<>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD>-' + '-6<>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-' + '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
//****************OBID<49><44>Ģ*****************//
Result := '';
tmStmp := DateTimeToTimeStamp(Now);
randomInt := random(899998) + 100001; //100001 ~ 999999
dbName := 'neol_data';
Result := 'T' + clsName + '-' + IntToStr(tmStmp.Date) + IntToStr(tmStmp.Time) + '-' + IntToStr(randomInt) + '-' + dbName;
end;
procedure TfKiosk.RadioButton9Click(Sender: TObject);
begin
Edit31.Clear;
if RadioButton9.Checked then begin
easyselectgridRefresh;
SaleItem_refresh;
cxGridLevel2.Active := True;
cxGridTableView2Column1.Caption := '<27><>ǰ<EFBFBD>ڵ<EFBFBD>';
cxGridTableView2Column4.Caption := '<27><><EFBFBD><EFBFBD>';
Label78.Visible := False;
ComboBox3.Visible := False;
end
else begin
if RadioButton10.Checked then begin
cxGrid2TableView1Column2.Visible := true;
Label78.Visible := False;
ComboBox3.Visible := False;
end else
if RadioButton11.Checked then begin
cxGrid2TableView1Column2.Visible := False;
Label78.Visible := True;
ComboBox3.Visible := True;
end;
easyselectgridRefresh;
SaleItem_refresh;
cxGrid2Level1.Active := True;
end;
end;
procedure TfKiosk.easyselectgridRefresh;
var
row_ck, i : Integer;
tmpList : TList;
kind, stock_qty : string;
SaleItemMst : TSaleItemMst;
begin
try
DM.FDQuery2.Close;
if RadioButton9.Checked then begin
DM.FDQuery2.SQL.Text := ' SELECT DISTINCT LEFT("OrderMst"."Name", 3) AS estext ' +
' FROM "OrderMst" '+
' ORDER BY estext; ';
end else
if RadioButton10.Checked then begin
DM.FDQuery2.SQL.Text := ' SELECT DISTINCT LEFT(ss.item, 3) AS estext ' +
' FROM stock_summary ss '+
' ORDER BY estext; ';
end else
if RadioButton11.Checked then begin
DM.FDQuery2.SQL.Text := ' SELECT DISTINCT LEFT(ss."Name", 3) AS estext ' +
' FROM "ProductMst" ss '+
' WHERE "IsValid" = true '+
' ORDER BY estext; ';
end;
DM.FDQuery2.Open;
if DM.FDQuery2.RecordCount > 0 then begin
with cxGridTableView4.DataController do begin
try
BeginUpdate;
RecordCount := 0;
finally
EndUpdate;
end;
try
BeginUpdate;
DM.FDQuery2.First;
while not DM.FDQuery2.Eof do begin
row_ck := AppendRecord;
Values[row_ck,cxGridTableView4Column1.Index] := DM.FDQuery2.FieldByName('estext').AsString;
DM.FDQuery2.Next;
end;
finally
EndUpdate;
end;
end;
end;
except
on E: Exception do
Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(easyselectgridRefresh): ' + E.Message);
end;
end;
procedure TfKiosk.Button7Click(Sender: TObject);
var
FobjMat : TMaterialData;
begin
if (Trim(Edit34.Text) = '') or (Trim(Edit34.Text) = '0') or (Trim(Edit34.Text) = '0.0') or (Trim(Edit34.Text) = '.0') or (Trim(Edit34.Text) = '0.') or (Trim(Panel53.Caption) = '') or (Trim(Panel53.Caption) = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') then exit;
if Trim(Edit34.Text) <> '' then begin
if StrToFloatDef(Trim(Edit34.Text),0.0) <= 0.0 then exit;
if not RadioButton1.Checked then begin
if StrToFloatDef(Trim(Edit43.Text),0.0) < StrToFloatDef(Trim(Edit34.Text),0.0) then begin
AlertCall('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ Ȯ<><C8AE> <20><><EFBFBD><EFBFBD>.');
Exit;
end;
end;
end;
FobjMat := TMaterialData.Create(Self);
FobjMat.Name := Panel53.Caption;
FobjMat.MatKind := Edit40.Text;
FobjMat.OBID := qCreateGetUniqueString('MaterialData');
FobjMat.wClassName := 'MaterialData';
FobjMat.CreateDate := FormatDateTime('yyyy-MM-dd',Now);
FobjMat.CreateTime := FormatDateTime('HH:nn:ss',Now);
FobjMat.CreatorID := edt_ID.Text;
FobjMat.IsValid := 't';
FobjMat.LcStatus := 'Working';
FobjMat.OrdNum := '0';
FobjMat.OrdCode := Edit40.Text;
FobjMat.Standard := '';
if RadioButton1.Checked then begin
FobjMat.Kind := '<27>԰<EFBFBD>';
FobjMat.InQty := Edit34.Text;
FobjMat.OutQty := '0';
end
else begin
FobjMat.Kind := '<27><><EFBFBD><EFBFBD>';
FobjMat.InQty := '0';
FobjMat.OutQty := Edit34.Text;
end;
FobjMat.StockQty := '0';
FobjMat.Status := '';
FobjMat.Descriptions := Edit35.Text;
FobjMat.Unitt := Edit45.Text;
FobjMat.OrdDate := FormatDateTime('yyyy-MM-dd',DatePicker7.Date);
FobjMat.CustName := ComboBox9.Text;
FobjMat.MatType := 'NORMAL';
if ConfirmCall(FobjMat.Kind+' ó<><C3B3> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?') then begin
xCreateInsertSql(FobjMat);
Edit34.Text := '';
Edit35.Text := '';
DatePicker7.Date := Now;
// Edit43.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Edit40.Text,'NORMAL'); Trim(Panel53.Caption)
// Edit43.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel53.Caption),'NORMAL');
Edit43.Text := FobjMat.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit40.Text),'NORMAL');
AlertCall(FobjMat.Kind+' ó<><C3B3> <20>Ϸ<EFBFBD>.');
end;
end;
procedure TfKiosk.AlertCall(msg:string);
var
fAlertMessage : TfAlertMessage;
begin
fAlertMessage := TfAlertMessage.Create(nil);
try
fAlertMessage.Label1.Caption := msg;
fAlertMessage.ShowModal; // <20><><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
// <20>Ǵ<EFBFBD> NewForm.Show; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
finally
fAlertMessage.Free;
end;
end;
procedure TfKiosk.xCreateInsertSql(curMaterial: TMaterialData);
var
i, cnt: Integer;
sqlStr, attrStr, valStr: string;
attrStrs, valStrs: TStrings;
PropList: PPropList;
begin
sqlStr := 'INSERT INTO ' + curMaterial.xAddSqlDoubleMark(curMaterial.wClassName);
attrStrs := TStringList.Create;
valStrs := TStringList.Create;
cnt := GetPropList(curMaterial,PropList);
for i := 0 to cnt-1 do begin
if SameText('Tag',PropList[i].Name) then system.Continue;
attrStrs.Add(PropList[i].Name);
valStrs.Add(GetPropValue(curMaterial,PropList[i].Name,True));
end;
FreeMem(PropList);
attrStr := '';
for i := 0 to attrStrs.Count-1 do begin
if i = 0 then attrStr := ' (' + curMaterial.xAddSqlDoubleMark(attrStrs.Strings[i])
else attrStr := attrStr + ', ' + curMaterial.xAddSqlDoubleMark(attrStrs.Strings[i]);
end;
attrStr := attrStr + ') ';
sqlStr := sqlStr + attrStr;
valStr := '';
for i := 0 to valStrs.Count-1 do begin
if Length(Trim(valStrs.Strings[i])) = 0 then begin
if i = 0 then valStr := 'VALUES (' + ''''''
else valStr := valStr + ', ' + '''''';
end else begin
if i = 0 then valStr := 'VALUES (' + curMaterial.xAddSqlMark(valStrs.Strings[i])
else valStr := valStr + ', ' + curMaterial.xAddSqlMark(valStrs.Strings[i]);
end;
end;
sqlStr := sqlStr + valStr;
sqlStr := sqlStr + ')';
sqlStr := sqlStr + ';';
if DM.FDConnection1.Connected then begin
DM.FDQuery1.SQL.Text := sqlStr;
DM.FDQuery1.ExecSQL;
end;
attrStrs.Free;
valStrs.Free;
end;
procedure TfKiosk.xCreateInsertSql_EmpLog(EmpLog: TEmpLog);
var
i, cnt: Integer;
sqlStr, attrStr, valStr: string;
attrStrs, valStrs: TStrings;
PropList: PPropList;
begin
sqlStr := 'INSERT INTO ' + EmpLog.xAddSqlDoubleMark(EmpLog.wClassName);
attrStrs := TStringList.Create;
valStrs := TStringList.Create;
cnt := GetPropList(EmpLog,PropList);
for i := 0 to cnt-1 do begin
if SameText('Tag',PropList[i].Name) then system.Continue;
attrStrs.Add(PropList[i].Name);
valStrs.Add(GetPropValue(EmpLog,PropList[i].Name,True));
end;
FreeMem(PropList);
attrStr := '';
for i := 0 to attrStrs.Count-1 do begin
if i = 0 then attrStr := ' (' + EmpLog.xAddSqlDoubleMark(attrStrs.Strings[i])
else attrStr := attrStr + ', ' + EmpLog.xAddSqlDoubleMark(attrStrs.Strings[i]);
end;
attrStr := attrStr + ') ';
sqlStr := sqlStr + attrStr;
valStr := '';
for i := 0 to valStrs.Count-1 do begin
if Length(Trim(valStrs.Strings[i])) = 0 then begin
if i = 0 then valStr := 'VALUES (' + ''''''
else valStr := valStr + ', ' + '''''';
end else begin
if i = 0 then valStr := 'VALUES (' + EmpLog.xAddSqlMark(valStrs.Strings[i])
else valStr := valStr + ', ' + EmpLog.xAddSqlMark(valStrs.Strings[i]);
end;
end;
sqlStr := sqlStr + valStr;
sqlStr := sqlStr + ')';
sqlStr := sqlStr + ';';
if DM.FDConnection1.Connected then begin
DM.FDQuery1.SQL.Text := sqlStr;
DM.FDQuery1.ExecSQL;
end;
attrStrs.Free;
valStrs.Free;
end;
procedure TfKiosk.xCreateInsertSql_FobjSale(curSaleItem: TSaleItemMst);
var
i, cnt: Integer;
sqlStr, attrStr, valStr: string;
attrStrs, valStrs: TStrings;
PropList: PPropList;
begin
sqlStr := 'INSERT INTO ' + curSaleItem.xAddSqlDoubleMark(curSaleItem.wClassName);
attrStrs := TStringList.Create;
valStrs := TStringList.Create;
cnt := GetPropList(curSaleItem,PropList);
for i := 0 to cnt-1 do begin
if SameText('Tag',PropList[i].Name) then system.Continue;
attrStrs.Add(PropList[i].Name);
valStrs.Add(GetPropValue(curSaleItem,PropList[i].Name,True));
end;
FreeMem(PropList);
attrStr := '';
for i := 0 to attrStrs.Count-1 do begin
if i = 0 then attrStr := ' (' + curSaleItem.xAddSqlDoubleMark(attrStrs.Strings[i])
else attrStr := attrStr + ', ' + curSaleItem.xAddSqlDoubleMark(attrStrs.Strings[i]);
end;
attrStr := attrStr + ') ';
sqlStr := sqlStr + attrStr;
valStr := '';
for i := 0 to valStrs.Count-1 do begin
if Length(Trim(valStrs.Strings[i])) = 0 then begin
if i = 0 then valStr := 'VALUES (' + ''''''
else valStr := valStr + ', ' + '''''';
end else begin
if i = 0 then valStr := 'VALUES (' + curSaleItem.xAddSqlMark(valStrs.Strings[i])
else valStr := valStr + ', ' + curSaleItem.xAddSqlMark(valStrs.Strings[i]);
end;
end;
sqlStr := sqlStr + valStr;
sqlStr := sqlStr + ')';
sqlStr := sqlStr + ';';
if DM.FDConnection1.Connected then begin
DM.FDQuery1.SQL.Text := sqlStr;
DM.FDQuery1.ExecSQL;
end;
attrStrs.Free;
valStrs.Free;
end;
procedure TfKiosk.Button8Click(Sender: TObject);
begin
Material_RTP_refresh;
end;
procedure TfKiosk.Material_RTP_refresh;
var
row_ck, i : Integer;
begin
try
DM.FDQuery1.Close;
if Trim(Edit36.Text) <> '' then begin
DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", "MatKind", '+
' SUM("InQty") - SUM("OutQty") AS balance '+
' FROM "MaterialData" '+
' WHERE "MatType"=''RTP'' '+
' AND "IsValid"=true '+
' AND ( '+
' ("Name" Like ''%'+Trim(Edit36.Text)+'%'') '+
' OR ("CustName" Like ''%'+Trim(Edit36.Text)+'%'') '+
' ) '+
' GROUP BY "OrdCode", "Name", "Unitt", "MatKind" '+
' ORDER BY "Name"';
end
else begin
DM.FDQuery1.SQL.Text := ' SELECT "OrdCode", "Name", "Unitt", "MatKind", '+
' SUM("InQty") - SUM("OutQty") AS balance '+
' FROM "MaterialData" '+
' WHERE "MatType"=''RTP'' '+
' AND "IsValid"=true '+
' GROUP BY "OrdCode", "Name", "Unitt", "MatKind" '+
' ORDER BY "Name"';
end;
DM.FDQuery1.Open;
if DM.FDQuery1.RecordCount > 0 then begin
with cxGridTableView3.DataController do begin
try
BeginUpdate;
RecordCount := 0;
finally
EndUpdate;
end;
try
BeginUpdate;
DM.FDQuery1.First;
while not DM.FDQuery1.Eof do begin
row_ck := AppendRecord;
Values[row_ck,cxGridTableView3Column1.Index] := DM.FDQuery1.FieldByName('OrdCode').AsString;
Values[row_ck,cxGridTableView3Column2.Index] := DM.FDQuery1.FieldByName('Name').AsString;
Values[row_ck,cxGridTableView3Column3.Index] := DM.FDQuery1.FieldByName('Unitt').AsString;
Values[row_ck,cxGridTableView3Column4.Index] := DM.FDQuery1.FieldByName('balance').AsString;
Values[row_ck,cxGridTableView3Column5.Index] := DM.FDQuery1.FieldByName('MatKind').AsString;
DM.FDQuery1.Next;
end;
finally
EndUpdate;
end;
end;
end;
except
on E: Exception do
Memo1.Lines.Add('['+FormatDateTime('yyyymmdd hhnnss.zzz',now)+'] '+'<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(Material_RTP_refresh): ' + E.Message);
end;
end;
procedure TfKiosk.Button9Click(Sender: TObject);
var
fKioskView : TfKioskView;
begin
if (Trim(Panel58.Caption) = '') or (Trim(Panel58.Caption) = 'RTP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') then exit;
fKioskView := TfKioskView.Create(nil);
try
fKioskView.RadioGroup1.ItemIndex := 1; // 0 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 : RTP<54><50><EFBFBD><EFBFBD>, 2 : <20><>ǰ
fKioskView.Label2.Caption := Trim(Panel58.Caption); // 'RTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
fKioskView.edit1.text := Edit41.Text;
fKioskView.ShowModal; // <20><><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
// <20>Ǵ<EFBFBD> NewForm.Show; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> ǥ<><C7A5>
finally
fKioskView.Free;
end;
end;
procedure TfKiosk.FormClose(Sender: TObject; var Action: TCloseAction);
var
IniFile : TIniFile;
begin
if dev_mode = 1 then begin
IniFile := TIniFile.Create(inifilename);
try
IniFile.WriteInteger('Setting', 'top', top);
IniFile.WriteInteger('Setting', 'left', left);
finally
IniFile.Free;
end;
end;
end;
procedure TfKiosk.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
LogOut_;
CanClose := True;
end;
procedure TfKiosk.FormCreate(Sender: TObject);
var
IniFile : TIniFile;
begin
InitLogger('.\Logs', 'log', rtHourly);
inifilename := StringReplace(Application.ExeName,'.exe','.ini',[rfReplaceAll]);
IniFile := TIniFile.Create(inifilename);
try
Edit15.Text := IniFile.ReadString('Setting', 'I', '');
Edit16.Text := IniFile.ReadString('Setting', 'P', '');
ComboBox7.ItemIndex := IniFile.ReadInteger('Setting', 'init_Mo', 0);
dev_mode := IniFile.ReadInteger('Setting', 'dev', 0);
if dev_mode = 1 then begin
top := IniFile.ReadInteger('Setting', 'top', 0);
left := IniFile.ReadInteger('Setting', 'left', 0);
end
else begin
top := 0;
left := 0;
end;
edt_ID.Text := Edit15.Text;
edt_PASS.Text := Edit16.Text;
lbHost.Text := IniFile.ReadString('DATABASE_PG', 'IP', 'qst-s.iptime.org');
lbPort.Text := IniFile.ReadString('DATABASE_PG', 'Port', '54323');
lbUserName.Text := IniFile.ReadString('DATABASE_PG', 'User', 'qsentech');
lbPassword.Text := IniFile.ReadString('DATABASE_PG', 'PW', 'qsentech!1233');
lbDBName.Text := IniFile.ReadString('DATABASE_PG', 'Schema', 'neol');
finally
IniFile.Free;
end;
Pan_Login.Top := 0;
Pan_Login.Left := 0;
Pan_Main.Top := 0;
Pan_Main.Left := 0;
FqryList := nil;
pan_tab_1.Parent := Pan_default;
pan_tab_2.Parent := Pan_default;
pan_tab_3.Parent := Pan_default;
pan_tab_4.Parent := Pan_default;
pan_tab_5.Parent := Pan_default;
pan_tab_6.Parent := Pan_default;
pan_tab_7.Parent := Pan_default;
pan_tab_8.Parent := Pan_default;
Pan_Login.Parent := Pan_Main;
Pan_Setting.Parent := Pan_Main;
Pan_Setting.Top := 205;
Pan_Setting.Left := 500;
Pan_Setting.Visible := False;
Panel21.Parent := Panel14;
DatePicker7.Date := Now;
DatePicker4.Date := Now;
DatePicker5.Date := Now;
label_set_alclient;
Label4.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now);
Label31.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now);
// pan_select(1);
Pan_default.Visible := false;
Pan_Login.BringToFront;
end;
procedure TfKiosk.label_set_alclient;
begin
{
Label1.Align := alClient;
Label2.Align := alClient;
Label3.Align := alClient;
Label46.Align := alClient; // <20><>ǰ<EFBFBD>԰<EFBFBD>_main bt
Label47.Align := alClient; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>_main bt
}
Label5.Align := alClient;
Label6.Align := alClient;
Label7.Align := alClient;
Label8.Align := alClient;
Label9.Align := alClient;
Label10.Align := alClient;
end;
procedure TfKiosk.FormDestroy(Sender: TObject);
begin
// login_API('DO6002'); //<2F>α׾ƿ<D7BE>
if FqryList <> nil then xFreeAll(FqryList);
end;
procedure TfKiosk.FormShow(Sender: TObject);
var
tmpStrs: TStrings;
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
tmpStrs := TStringList.Create;
tmpStrs.Add('OBID'); tmpStrs.Add('Name'); tmpStrs.Add('wClassName');
tmpStrs.Add('CreateDate'); tmpStrs.Add('CreateTime'); tmpStrs.Add('CreatorID');
tmpStrs.Add('IsValid'); tmpStrs.Add('OrdCode'); tmpStrs.Add('Position');
tmpStrs.Add('Role'); tmpStrs.Add('InDate'); tmpStrs.Add('OutDate');
tmpStrs.Add('Status'); tmpStrs.Add('EmpTelNum'); tmpStrs.Add('EmpAddress');
tmpStrs.Add('Descriptions');
StringGrid1.ColCount := tmpStrs.Count;
StringGrid1.Rows[0].AddStrings(tmpStrs);
tmpStrs.Free;
xAutoResizeStringGridColumns(StringGrid1, Canvas);
PG_Connect;
end;
procedure TfKiosk.PG_Connect;
begin
DM.PG_DBName := lbDBName.Text;
DM.PG_UserName := lbUserName.Text;
DM.PG_Password := lbPassword.Text;
DM.PG_Host := lbHost.Text;
DM.PG_Port := lbPort.Text;
if dm.DM_Connect then begin
btDBConnect.Enabled := False;
btDBdisConnect.Enabled := True;
Memo1.Lines.Add('PG_Connected : TRUE');
end
else begin
btDBConnect.Enabled := True;
btDBdisConnect.Enabled := False;
Memo1.Lines.Add('PG_Connected : FALSE');
end;
end;
procedure TfKiosk.Image1Click(Sender: TObject);
begin
Pan_Main.BringToFront;
Pan_Main.Visible := True;
Pan_default.Visible := False;
end;
procedure TfKiosk.Image3Click(Sender: TObject);
begin
// ShowMessage('SETTING SHOW');
Pan_Setting.Visible := True;
Pan_Setting.BringToFront;
alarmstatusRefresh;
end;
procedure TfKiosk.pan_select(tag:integer);
begin
case tag of
6 : begin
Material_refresh;
pan_tab_6.BringToFront;
end;
7 : begin
Material_RTP_refresh;
pan_tab_7.BringToFront;
end;
8 : begin
easyselectgridRefresh;
SaleItem_refresh;
pan_tab_8.BringToFront;
end;
end;
Pan_default.Left := 0;
Pan_default.Top := 131;
Pan_default.BringToFront;
Pan_default.Visible := True;
end;
procedure TfKiosk.Label12Click(Sender: TObject);
begin
Panel21.Parent := TabSheet1;
Panel31.Visible := (StrToInt(Edit20.Text) > 15);
end;
procedure TfKiosk.Label30Click(Sender: TObject);
begin
Panel22.Parent := TabSheet2;
Panel34.Visible := (StrToInt(Edit23.Text) > 15);
end;
procedure TfKiosk.Label31Click(Sender: TObject);
begin
edt_close.Text := IntToStr(StrToInt(edt_close.Text)+1);
end;
procedure TfKiosk.Label49_1Click(Sender: TObject);
begin
cbCustList_Refresh;
pan_select((Sender as TLabel).Tag);
end;
procedure TfKiosk.Label4Click(Sender: TObject);
begin
{
Panel1.Visible := not Panel1.Visible;
if Panel1.Visible then
Panel1.BringToFront;
}
edt_close.Text := IntToStr(StrToInt(edt_close.Text)+1);
end;
procedure TfKiosk.Label5Click(Sender: TObject);
begin
Buttonselect((Sender as TLabel).Tag);
end;
procedure TfKiosk.BTCreate_1(page_no,count:integer);
const
ButtonWidth = 200;
ButtonHeight = 200;
ButtonWidthSpacing = 50;
ButtonHeightSpacing = 70;
ButtonsPerRow = 5; // <20><> <20>ٿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>ư<EFBFBD><C6B0> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD>
var
i, Row, Col, x: Integer;
NewButton: TPanel;
NewLabel : TLabel;
begin
Panel21.Parent := TabSheet1;
// Panel1<6C><31> <20>ڽ<EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20><> TButton<6F><6E> ã<>Ƽ<EFBFBD> <20><><EFBFBD><EFBFBD>
for i := Panel14.ControlCount - 1 downto 0 do
begin
if Panel14.Controls[i] is TPanel then
Panel14.Controls[i].Free;
end;
if count <= 15 then
x := count
else
x := 15;
for i := 0 to x-1 do // <20><> 15<31><35> <20><><EFBFBD><EFBFBD>
begin
Row := i div ButtonsPerRow;
Col := i mod ButtonsPerRow;
NewButton := TPanel.Create(Self);
NewButton.Parent := Panel14;
NewButton.Width := ButtonWidth;
NewButton.Height := ButtonHeight;
NewButton.BevelOuter := bvNone;
NewButton.ParentBackground := False;
NewButton.ShowCaption := False;
if (i mod 2) = 0 then
NewButton.Color := $00978F62
else
NewButton.Color := $00D3CFBA;
NewButton.Left := Col * (ButtonWidth + ButtonWidthSpacing) + 50;
NewButton.Top := Row * (ButtonHeight + ButtonHeightSpacing) + 38;
NewButton.Name := Format('Bt_1_%d', [(page_no*15)+i+1]); // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
NewButton.Tag := i + 1; // <20><><EFBFBD><EFBFBD> <20><>ȣ <20>±<EFBFBD> <20><><EFBFBD><EFBFBD>
NewLabel := TLabel.Create(Self);
NewLabel.Parent := NewButton;
NewLabel.Font.Size := 40;
NewLabel.Caption := #13 + Format('<27>԰<EFBFBD>_%d', [(page_no*15)+i+1]) + #13 + '[000]';
NewLabel.Alignment := taCenter;
NewLabel.Align := alClient;
NewLabel.Tag := i + 1; // <20><><EFBFBD><EFBFBD> <20><>ȣ <20>±<EFBFBD> <20><><EFBFBD><EFBFBD>
NewLabel.Name := Format('lb_1_%d', [(page_no*15)+i+1]); // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
NewLabel.OnClick := DynamicButton_1Click;
end;
Panel31.Visible := (count > 15);
Edit19.Text := inttostr(page_no+1);
Edit20.Text := IntToStr(count);
if (count mod 15) > 0 then begin
Edit21.Text := IntToStr((count div 15)+1);
end
else begin
Edit21.Text := IntToStr((count div 15));
end;
label44.Caption := inttostr(page_no+1)+ '/'+Edit21.Text;
end;
procedure TfKiosk.BTCreate_2(page_no,count:integer);
const
ButtonWidth = 200;
ButtonHeight = 200;
ButtonWidthSpacing = 50;
ButtonHeightSpacing = 70;
ButtonsPerRow = 5; // <20><> <20>ٿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>ư<EFBFBD><C6B0> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD>
var
i, Row, Col, x: Integer;
NewButton: TPanel;
NewLabel: TLabel;
begin
Panel22.Parent := TabSheet2;
// Panel1<6C><31> <20>ڽ<EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20><> TButton<6F><6E> ã<>Ƽ<EFBFBD> <20><><EFBFBD><EFBFBD>
for i := Panel15.ControlCount - 1 downto 0 do
begin
if (Panel15.Controls[i] is TPanel) or (Panel15.Controls[i] is TLabel) then
Panel15.Controls[i].Free;
end;
if count <= 15 then
x := count
else
x := 15;
for i := 0 to x-1 do // <20><> 15<31><35> <20><><EFBFBD><EFBFBD>
begin
Row := i div ButtonsPerRow;
Col := i mod ButtonsPerRow;
NewButton := TPanel.Create(Self);
NewButton.Parent := Panel15;
NewButton.Width := ButtonWidth;
NewButton.Height := ButtonHeight;
NewButton.BevelOuter := bvNone;
NewButton.ParentBackground := False;
NewButton.ShowCaption := False;
if (i mod 2) = 0 then
NewButton.Color := $00978F62
else
NewButton.Color := $00D3CFBA;
NewButton.Left := Col * (ButtonWidth + ButtonWidthSpacing) + 50;
NewButton.Top := Row * (ButtonHeight + ButtonHeightSpacing) + 38;
NewButton.Name := Format('Bt_2_%d', [(page_no*15)+i+1]); // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
NewButton.Tag := i + 1; // <20><><EFBFBD><EFBFBD> <20><>ȣ <20>±<EFBFBD> <20><><EFBFBD><EFBFBD>
NewLabel := TLabel.Create(Self);
NewLabel.Parent := NewButton;
NewLabel.Font.Size := 40;
NewLabel.Caption := #13 + Format('<27><><EFBFBD><EFBFBD>_%d', [(page_no*15)+i+1]) + #13 + '[000]';
NewLabel.Alignment := taCenter;
NewLabel.Align := alClient;
NewLabel.Tag := i + 1; // <20><><EFBFBD><EFBFBD> <20><>ȣ <20>±<EFBFBD> <20><><EFBFBD><EFBFBD>
NewLabel.Name := Format('lb_2_%d', [(page_no*15)+i+1]); // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD>
NewLabel.OnClick := DynamicButton_2Click;
end;
Panel34.Visible := (count > 15);
Edit22.Text := inttostr(page_no+1);
Edit23.Text := IntToStr(count);
if (count mod 15) > 0 then begin
Edit24.Text := IntToStr((count div 15)+1);
end
else begin
Edit24.Text := IntToStr((count div 15));
end;
label45.Caption := inttostr(page_no+1)+ '/'+Edit24.Text;
end;
procedure TfKiosk.DynamicButton_1Click(Sender: TObject);
//var
// Btn: TLabel;
begin
// Btn := Sender as TLabel;
// ShowMessage(Format('Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>ư <20>԰<EFBFBD> : %s (Tag: %d)', [Btn.Name, Btn.Tag]));
Panel21.Parent := Panel14;
Panel21.BringToFront;
Panel21.Visible := True;;
// Panel31.Visible := (count > 15);
Panel31.Visible := false;
end;
procedure TfKiosk.DynamicButton_2Click(Sender: TObject);
//var
// Btn: TLabel;
begin
// Btn := Sender as TLabel;
// ShowMessage(Format('Ŭ<><C5AC><EFBFBD><EFBFBD> <20><>ư <20><><EFBFBD><EFBFBD> : %s (Tag: %d)', [Btn.Name, Btn.Tag]));
Panel22.Parent := Panel15;
Panel22.BringToFront;
Panel22.Visible := True;
Panel34.Visible := False;
end;
procedure TfKiosk.Edit31Change(Sender: TObject);
begin
if RadioButton9.Checked then begin
with cxGridTableView2.DataController.Filter do
begin
Root.Clear;
Root.AddItem(
cxGridTableView2Column2,
foLike,
'%'+Edit31.Text+'%',
Edit31.Text+' <20><><EFBFBD><EFBFBD>'
);
Active := True;
end;
end
else begin
with cxGrid2TableView1.DataController.Filter do
begin
Root.Clear;
Root.AddItem(
cxGrid2TableView1Column1,
foLike,
'%'+Edit31.Text+'%',
Edit31.Text+' <20><><EFBFBD><EFBFBD>'
);
Active := True;
end;
end;
end;
procedure TfKiosk.Edit34KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #46, #8, #13]) then // #8: Backspace, #13: Enter , #46 : .
begin
Key := #0; // <20>Է<EFBFBD> <20><><EFBFBD><EFBFBD>
end
else begin
if (Key in [#46]) then begin
if pos('.',(Sender as TEdit).Text) > 0 then Key := #0; // <20>Է<EFBFBD> <20><><EFBFBD><EFBFBD>
end;
end;
end;
procedure TfKiosk.edt_IDKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then edt_PASS.SetFocus;
end;
procedure TfKiosk.edt_PASSKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then login_;
end;
procedure TfKiosk.Label8Click(Sender: TObject);
begin
Buttonselect_1((Sender as TLabel).Tag);
end;
procedure TfKiosk.Buttonselect(tag:integer);
begin
case tag of
1 : begin
Panel5.Color := $00978F62;
Panel6.Color := $00D3CFBA;
Panel7.Color := $00D3CFBA;
BTCreate_1(0,10); // BTCreate_1(DBTable);
end;
2 : begin
Panel5.Color := $00D3CFBA;
Panel6.Color := $00978F62;
Panel7.Color := $00D3CFBA;
BTCreate_1(0,24); // BTCreate_1(DBTable);
end;
3 : begin
Panel5.Color := $00D3CFBA;
Panel6.Color := $00D3CFBA;
Panel7.Color := $00978F62;
BTCreate_1(0,7); // BTCreate_1(DBTable);
end;
end;
end;
procedure TfKiosk.Buttonselect_1(tag:integer);
begin
case tag of
1 : begin
Panel11.Color := $00978F62;
Panel12.Color := $00D3CFBA;
Panel13.Color := $00D3CFBA;
BTCreate_2(0,34); // BTCreate_2(DBTable);
end;
2 : begin
Panel11.Color := $00D3CFBA;
Panel12.Color := $00978F62;
Panel13.Color := $00D3CFBA;
BTCreate_2(0,13); // BTCreate_2(DBTable);
end;
3 : begin
Panel11.Color := $00D3CFBA;
Panel12.Color := $00D3CFBA;
Panel13.Color := $00978F62;
BTCreate_2(0,9); // BTCreate_2(DBTable);
end;
end;
end;
procedure TfKiosk.cxGrid2TableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if (not AViewInfo.Selected) and ((AViewInfo.GridRecord.RecordIndex mod 2) = 1) then begin
ACanvas.Canvas.Brush.Color := $00EFF1E9;
end;
end;
procedure TfKiosk.cxGrid2TableView1FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
var
ProductMst : TProductMst;
tmpList : TList;
begin
if Assigned(AFocusedRecord) then begin
label80.Caption := cxGrid2TableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGrid2TableView1Column1.Index); //<2F><>ǰ<EFBFBD><C7B0>
Edit14.Text := 'EA'; // <20><><EFBFBD><EFBFBD>
if RadioButton10.Checked then begin
Edit13.Text := cxGrid2TableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column2.Index); // <20><><EFBFBD><EFBFBD>
Edit32.Text := Edit13.Text; //<2F><><EFBFBD><EFBFBD>
Edit48.Text := Edit13.Text; //<2F><><EFBFBD><EFBFBD>
Edit50.Text := ''; // OBID
end else
if RadioButton11.Checked then begin
Edit13.Text := '';
Edit32.Text := '';
Edit48.Text := '';
Edit50.Text := '';
end;
try
tmpList := TList.Create;
ProductMst := TProductMst.Create(Self);
tmpList := ProductMst.xGetStrSqlProductMstList(dm.FDQuery1,'',label80.Caption);
if tmpList.Count = 1 then begin
ProductMst := TProductMst(tmpList.Items[0]);
Edit42.Text := ProductMst.ProdCode;
Edit39.Text := ProductMst.ProdCode;
Edit49.Text := ProductMst.MatKind;
edtManufact.Text := ProductMst.Manufact;
end;
edtModel.Text := '';
edtMatUnitPrice.Text := '';
cbCustList.ItemIndex := -1;
finally
tmpList.free;
end;
end
else begin
label80.Caption := '<27><>ǰ<EFBFBD><C7B0>';
Edit13.Text := '0';
Edit32.Text := '';
Edit48.Text := '';
Edit50.Text := '';
Edit14.Text := 'EA';
Edit42.Text := '';
Edit39.Text := '';
Edit49.Text := '';
edtManufact.Text := '';
edtModel.Text := '';
edtMatUnitPrice.Text := '';
cbCustList.ItemIndex := -1;
end;
end;
procedure TfKiosk.cxGrid2TableView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
FDragScrolling := True;
FStartY := Y;
FStartTopRow := cxGrid2TableView1.Controller.TopRowIndex; // <20><><EFBFBD><EFBFBD> <20>ֻ<EFBFBD><D6BB><EFBFBD> Row <20><><EFBFBD><EFBFBD>
end;
end;
procedure TfKiosk.cxGrid2TableView1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
DeltaY, RowOffset: Integer;
begin
if not FDragScrolling then Exit;
DeltaY := Y - FStartY; // <20>̵<EFBFBD> <20>Ÿ<EFBFBD> (<28>Ʒ<EFBFBD><C6B7><EFBFBD> <20><EFBFBD><E5B7A1><EFBFBD>ϸ<EFBFBD> +)
RowOffset := DeltaY div 20; // <20>ΰ<EFBFBD><CEB0><EFBFBD> - <20>ȼ<EFBFBD> <20><> Row <20><>ȯ (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
cxGrid2TableView1.Controller.TopRowIndex := FStartTopRow - RowOffset;
end;
procedure TfKiosk.cxGrid2TableView1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
FDragScrolling := False;
end;
procedure TfKiosk.cxGridTableView1CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
begin
if (not AViewInfo.Selected) and ((AViewInfo.GridRecord.RecordIndex mod 2) = 1) then begin
ACanvas.Canvas.Brush.Color := $00EFF1E9;
end;
end;
procedure TfKiosk.cxGridTableView1FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
var
MaterialData : TMaterialData;
begin
if Assigned(AFocusedRecord) then begin
Panel53.Caption := cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column2.Index);
Edit40.Text := cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column1.Index);
MaterialData := TMaterialData.Create(Self);
// Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Edit40.Text,'NORMAL');
{
if RadioGroup1.ItemIndex = 0 then
Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit40.Text),'','NORMAL')
else
Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel53.Caption),'NORMAL');
}
Edit43.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Trim(Edit40.Text),'NORMAL');
Edit45.Text := cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column3.Index);
ComboBox9.ItemIndex := ComboBox9.Items.IndexOf(cxGridTableView1.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView1Column4.Index));
end
else begin
Panel53.Caption := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
Edit40.Text := '';
Edit43.Text := '0';
Edit45.Text := '';
ComboBox9.ItemIndex := -1;
end;
end;
procedure TfKiosk.cxGridTableView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
FDragScrolling := True;
FStartY := Y;
FStartTopRow := cxGridTableView1.Controller.TopRowIndex; // <20><><EFBFBD><EFBFBD> <20>ֻ<EFBFBD><D6BB><EFBFBD> Row <20><><EFBFBD><EFBFBD>
end;
end;
procedure TfKiosk.cxGridTableView1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
DeltaY, RowOffset: Integer;
begin
if not FDragScrolling then Exit;
DeltaY := Y - FStartY; // <20>̵<EFBFBD> <20>Ÿ<EFBFBD> (<28>Ʒ<EFBFBD><C6B7><EFBFBD> <20><EFBFBD><E5B7A1><EFBFBD>ϸ<EFBFBD> +)
RowOffset := DeltaY div 20; // <20>ΰ<EFBFBD><CEB0><EFBFBD> - <20>ȼ<EFBFBD> <20><> Row <20><>ȯ (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
cxGridTableView1.Controller.TopRowIndex := FStartTopRow - RowOffset;
end;
procedure TfKiosk.cxGridTableView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragScrolling := False;
end;
procedure TfKiosk.cxGridTableView2FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
var
SaleItemMst : TSaleItemMst;
begin
if Assigned(AFocusedRecord) then begin
label80.Caption := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column2.Index);
Edit42.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column1.Index);
Edit39.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column9.Index);
Edit14.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column5.Index);
cbCustList.ItemIndex := cbCustList.Items.IndexOf(cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column3.Index));
Edit49.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column7.Index);
Edit13.Text := nametostock(Trim(label80.Caption));
// Edit13.Text := SaleItemMst.xGetBalanceQtyByName(dm.FDQuery1,Trim(label80.Caption));
Edit32.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column4.Index);
Edit48.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column4.Index);
Edit50.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column12.Index);
edtManufact.Text := cxGridTableView2.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView2Column10.Index);
edtModel.Text := '';
edtMatUnitPrice.Text := '';
end
else begin
label80.Caption := '<27><>ǰ<EFBFBD><C7B0>';
Edit42.Text := '';
Edit39.Text := '';
Edit13.Text := '0';
Edit14.Text := '';
cbCustList.ItemIndex := -1;
Edit32.Text := '';
Edit48.Text := '';
Edit50.Text := '';
Edit49.Text := '';
edtManufact.Text := '';
edtModel.Text := '';
edtMatUnitPrice.Text := '';
end;
end;
procedure TfKiosk.cxGridTableView2MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
FDragScrolling := True;
FStartY := Y;
FStartTopRow := cxGridTableView2.Controller.TopRowIndex; // <20><><EFBFBD><EFBFBD> <20>ֻ<EFBFBD><D6BB><EFBFBD> Row <20><><EFBFBD><EFBFBD>
if btnFINISH.Visible then
btnFINISH.Visible := False;
end else
if Button = mbRight then begin
btnFINISH.Top := y;
btnFINISH.Left := cxGrid4.Width + x;
btnFINISH.Visible := True;
end;
end;
procedure TfKiosk.cxGridTableView2MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
DeltaY, RowOffset: Integer;
begin
if not FDragScrolling then Exit;
DeltaY := Y - FStartY; // <20>̵<EFBFBD> <20>Ÿ<EFBFBD> (<28>Ʒ<EFBFBD><C6B7><EFBFBD> <20><EFBFBD><E5B7A1><EFBFBD>ϸ<EFBFBD> +)
RowOffset := DeltaY div 20; // <20>ΰ<EFBFBD><CEB0><EFBFBD> - <20>ȼ<EFBFBD> <20><> Row <20><>ȯ (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
cxGridTableView2.Controller.TopRowIndex := FStartTopRow - RowOffset;
end;
procedure TfKiosk.cxGridTableView2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragScrolling := False;
end;
procedure TfKiosk.cxGridTableView3FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
var
MaterialData : TMaterialData;
begin
if Assigned(AFocusedRecord) then begin
Panel58.Caption := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column2.Index);
Edit41.Text := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column1.Index);
Edit18.Text := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column5.Index);
MaterialData := TMaterialData.Create(Self);
// Edit44.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Edit41.Text,'RTP');
// Edit44.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,'',Trim(Panel58.Caption),'RTP');
Edit44.Text := MaterialData.xGetStrSumStockQty(dm.FDQuery1,Edit41.Text,'RTP');
Edit47.Text := cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column3.Index);
ComboBox8.ItemIndex := ComboBox8.Items.IndexOf(cxGridTableView3.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView3Column4.Index));
end
else begin
Panel58.Caption := 'RTP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
Edit41.Text := '';
Edit44.Text := '0';
Edit47.Text := '';
ComboBox8.ItemIndex := -1;
end;
end;
procedure TfKiosk.cxGridTableView3MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
FDragScrolling := True;
FStartY := Y;
FStartTopRow := cxGridTableView3.Controller.TopRowIndex; // <20><><EFBFBD><EFBFBD> <20>ֻ<EFBFBD><D6BB><EFBFBD> Row <20><><EFBFBD><EFBFBD>
end;
end;
procedure TfKiosk.cxGridTableView3MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
DeltaY, RowOffset: Integer;
begin
if not FDragScrolling then Exit;
DeltaY := Y - FStartY; // <20>̵<EFBFBD> <20>Ÿ<EFBFBD> (<28>Ʒ<EFBFBD><C6B7><EFBFBD> <20><EFBFBD><E5B7A1><EFBFBD>ϸ<EFBFBD> +)
RowOffset := DeltaY div 20; // <20>ΰ<EFBFBD><CEB0><EFBFBD> - <20>ȼ<EFBFBD> <20><> Row <20><>ȯ (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
cxGridTableView3.Controller.TopRowIndex := FStartTopRow - RowOffset;
end;
procedure TfKiosk.cxGridTableView3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragScrolling := False;
end;
procedure TfKiosk.cxGridTableView4CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
var
View: TcxGridTableView;
NewValue, OldValue: Variant;
begin
if Assigned(ACellViewInfo) then begin
if Edit46.Text = '1' then begin
Edit31.Clear;
Edit46.Text := '0';
end
else begin
Edit31.Text := ACellViewInfo.Value;
Edit46.Text := '1';
end;
end;
end;
procedure TfKiosk.cxGridTableView4CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
begin
if (not AViewInfo.Selected) and ((AViewInfo.GridRecord.RecordIndex mod 2) = 1) then begin
ACanvas.Canvas.Brush.Color := $00EFF1E9;
end;
end;
procedure TfKiosk.cxGridTableView4FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
if Assigned(AFocusedRecord) then begin
Edit31.Text := cxGridTableView4.DataController.GetValue(AFocusedRecord.RecordIndex,cxGridTableView4Column1.Index);
Edit46.Text := '0';
end;
end;
procedure TfKiosk.cxGridTableView4MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
FDragScrolling := True;
FStartY := Y;
FStartTopRow := cxGridTableView4.Controller.TopRowIndex; // <20><><EFBFBD><EFBFBD> <20>ֻ<EFBFBD><D6BB><EFBFBD> Row <20><><EFBFBD><EFBFBD>
end;
end;
procedure TfKiosk.cxGridTableView4MouseEnter(Sender: TObject);
begin
if btnFINISH.Visible then
btnFINISH.Visible := False;
end;
procedure TfKiosk.cxGridTableView4MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
DeltaY, RowOffset: Integer;
begin
if not FDragScrolling then Exit;
DeltaY := Y - FStartY; // <20>̵<EFBFBD> <20>Ÿ<EFBFBD> (<28>Ʒ<EFBFBD><C6B7><EFBFBD> <20><EFBFBD><E5B7A1><EFBFBD>ϸ<EFBFBD> +)
RowOffset := DeltaY div 20; // <20>ΰ<EFBFBD><CEB0><EFBFBD> - <20>ȼ<EFBFBD> <20><> Row <20><>ȯ (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
cxGridTableView4.Controller.TopRowIndex := FStartTopRow - RowOffset;
end;
procedure TfKiosk.cxGridTableView4MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragScrolling := False;
end;
procedure TfKiosk.StringGrid1DblClick(Sender: TObject);
var
cidx, ridx: Integer;
curEmp: TEmpMst;
tmpForm: TfrmEditor;
begin
cidx := StringGrid1.Rows[0].IndexOf('OBID');
ridx := StringGrid1.Row;
if StringGrid1.Objects[cidx,ridx] = nil then Exit;
curEmp := TEmpMst(StringGrid1.Objects[cidx,ridx]);
tmpForm := TfrmEditor.Create(Self);
tmpForm.objEmp := curEmp;
if tmpForm.ShowModal = mrOk then begin
btQuery.OnClick(Sender);
end;
tmpForm.Free; tmpForm:=nil;
end;
procedure TfKiosk.Timer_datetimeTimer(Sender: TObject);
begin
Label4.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now);
if Pan_Login.Visible then
Label31.Caption := FormatDateTime('yyyy-mm-dd hh:nn:ss ',now);
if Pan_Setting.Visible then begin
if DM.FDConnection1.Connected then begin
alarmstatusRefresh;
end
else begin
Panel54.Enabled := false;
Panel59.Enabled := false;
end;
end;
end;
procedure TfKiosk.Tmr_closeTimer(Sender: TObject);
begin
if StrToInt(edt_close.Text) >= 3 then begin
Tmr_close.Enabled := False;
Close;
end
else begin
edt_close.Text := '0';
end;
end;
end.