【delphi开源代码栏目提醒】:网学会员为需要delphi开源代码的朋友们搜集整理了DiningTableGrid_Unit.pas相关资料,希望对各位网友有所帮助!
unit DiningTableGrid_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, DB, ADODB, StdCtrls, ExtCtrls, Menus, Mask,
Grids, DBCtrls;
type
TDishTable = class
Color: TColor; // 单元格颜色类
TableID, TableDescn, Status: string;
end;
TfrmDiningTableFlow = class(TForm)
pnlBottom: TPanel;
Splitter1: TSplitter;
StringGrid1: TStringGrid;
GroupBox1: TGroupBox;
Panel2: TPanel;
pnlAll: TPanel;
pnlFree: TPanel;
pnlUsing: TPanel;
pnlCheck: TPanel;
pnlStop: TPanel;
edtStatus: TEdit;
edtTableDescn: TEdit;
edtTableID: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure FormShow(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure pnlFreeClick(Sender: TObject);
procedure pnlUsingClick(Sender: TObject);
procedure pnlCheckClick(Sender: TObject);
procedure pnlStopClick(Sender: TObject);
procedure pnlAllClick(Sender: TObject);
procedure StringGrid1DblClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
public
procedure InitGrid(AStringGrid: TStringGrid; sqlText:string);
procedure FreeGrid;
end;
const DefaultSql: string ='SELECT * FROM DiningTable WHERE 0=0 ';
var
frmDiningTableFlow: TfrmDiningTableFlow;
implementation
uses DM_Unit, DishBooking_Unit, OrderDiningTable_Unit;
{$R *.dfm}
procedure TfrmDiningTableFlow.FormShow(Sender: TObject);
begin
DM.qryTableType.Open; DM.qryTableType.First;
InitGrid(StringGrid1, DefaultSql);
end;
procedure TfrmDiningTableFlow.InitGrid(AStringGrid: TStringGrid; sqlText:string);
var
i,j:integer;
CellColor: TDishTable;
begin
StringGrid1.RowCount := 1;
StringGrid1.ColCount := 1;
with DM.qryDiningTable do
begin
Close;
SQL.Clear;
SQL.Text := sqlText;
Open; First;
i:=0;
j:=0;
while not Eof do
begin
CellColor := TDishTable.Create;
if FieldByName('Status').AsString='空闲' then
begin
CellColor.Color := clMoneyGreen;
end;
if FieldByName('Status').AsString='使用' then
begin
CellColor.Color := clRed;
end;
if FieldByName('Status').AsString='停用' then
begin
CellColor.Color := clYellow;
end;
if FieldByName('Status').AsString='预订' then
begin
CellColor.Color := clWhite;
end;
CellColor.TableID := FieldByName('DiningTableID').AsString;
CellColor.TableDescn := FieldByName('DiningTableDescn').AsString;
CellColor.Status := FieldByName('Status').AsString;
AStringGrid.Objects[i, j] := CellColor;
if i < 8 then
Inc(i)
else
begin
i := 0;
Inc(j);
end;
Next;
end;
StringGrid1.RowCount := j+1;
if RecordCount >= 9 then
StringGrid1.ColCount := 9
else
StringGrid1.ColCount := RecordCount;
end;
end;
procedure TfrmDiningTableFlow.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
CellColor: TDishTable;
begin
CellColor := TDishTable(StringGrid1.Objects[ACol, ARow]);
if Assigned(CellColor) then begin
with TStringGrid(Sender).Canvas do begin
Brush.Color := CellColor.Color;
Pen.Color := clGray;
Pen.Width := 1;
RoundRect(Rect.Left+2, Rect.Top+2, Rect.Left+78,Rect.Top+78, 40,40);
Font.Color := clBlue;
Font.Style := [fsBold];
TextOut(Rect.Left + ((StringGrid1.RowHeights[ARow] - Canvas.TextWidth(CellColor.TableID)) div 2), Rect.Top + StringGrid1.RowHeights[ACol] div 2 - 15, CellColor.TableID);
TextOut(Rect.Left + ((StringGrid1.RowHeights[ARow] - Canvas.TextWidth(CellColor.TableDescn)) div 2), Rect.Top + StringGrid1.RowHeights[ACol] div 2 + 5, CellColor.TableDescn);
end;
end;
end;
procedure TfrmDiningTableFlow.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if Assigned(StringGrid1.Objects[ACol,ARow]) then
begin
edtTableID.Text := TDishTable(StringGrid1.Objects[ACol,ARow]).TableID;
edtTableDescn.Text := TDishTable(StringGrid1.Objects[ACol,ARow]).TableDescn;
edtStatus.Text := TDishTable(StringGrid1.Objects[ACol,ARow]).Status;
StringGrid1.Hint := '当前餐台号:〖'+ TDishTable(StringGrid1.Objects[ACol,ARow]).TableID
+'〗 '+ #13#10 +'餐台名称为:〖'+ TDishTable(StringGrid1.Objects[ACol,ARow]).TableDescn
+'〗 '+ #13#10 +'餐台状态为:〖'+ TDishTable(StringGrid1.Objects[ACol,ARow]).Status
+'〗 ';
end;
end;
procedure TfrmDiningTableFlow.FreeGrid;
var
i, j: Integer;
begin
for i := 0 to StringGrid1.RowCount do begin
for j := 0 to StringGrid1.ColCount do begin
TDishTable(StringGrid1.Objects[J, I]).Free;
end;
end;
end;
procedure TfrmDiningTableFlow.pnlFreeClick(Sender: TObject);
begin
InitGrid(StringGrid1, DefaultSql + ' AND Status='+ QuotedStr('空闲'));
end;
procedure TfrmDiningTableFlow.pnlUsingClick(Sender: TObject);
begin
InitGrid(StringGrid1, DefaultSql + ' AND Status='+ QuotedStr('使用'));
end;
procedure TfrmDiningTableFlow.pnlCheckClick(Sender: TObject);
begin
InitGrid(StringGrid1, DefaultSql + ' AND Status='+ QuotedStr('预订'));
end;
procedure TfrmDiningTableFlow.pnlStopClick(Sender: TObject);
begin
InitGrid(StringGrid1, DefaultSql + ' AND Status='+ QuotedStr('停用'));
end;
procedure TfrmDiningTableFlow.pnlAllClick(Sender: TObject);
begin
InitGrid(StringGrid1, DefaultSql);
end;
procedure TfrmDiningTableFlow.StringGrid1DblClick(Sender: TObject);
begin
with DM, DM.qryTableUsing do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM DiningTable WHERE 0=0 ');
SQL.Add('AND DiningTableID=' + QuotedStr(edtTableID.Text));
Open; First;
if FieldByName('Status').AsString = '停用' then
begin
MessageDlg('当前餐桌已经停用,不能开台!', mtWarning, [mbOk], 0);
Exit;
end;
if FieldByName('Status').AsString = '空闲' then
begin
with TfrmDishTable.Create(Application) do
begin
try
ShowModal;
finally
Free;
end;
end;
end;
if (FieldByName('Status').AsString = '使用') or (FieldByName('Status').AsString = '预订') then
begin
//判断是否有相同的实例
if not Assigned(frmDishBooking) then
begin
frmDishBooking :=TfrmDishBooking.Create(Self);
frmDishBooking.Show;
end
else
//将窗体置到前端
frmDishBooking.BringToFront;
end;
end;
end;
procedure TfrmDiningTableFlow.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmDiningTableFlow.FormDestroy(Sender: TObject);
begin
frmDiningTableFlow := nil;
end;
end.
上一篇:
frmGoTo.frm
下一篇:
法律专业开题报告范文