📄 unit_frmseatset.pas
字号:
unit Unit_frmseatset;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit_frmtemplate2, Grids, ExtCtrls, Unit_frmtemplate, StdCtrls,
Buttons, CyberPanel, ComCtrls, CyberListVw, Spin, Mask, CyberEdit,
ImgList,unit_public, CyberXPMenu;
type
Tfrmseatset = class(Tfrmtemplate2)
CyberSizePanel1: TCyberSizePanel;
Panel4: TPanel;
Label1: TLabel;
Bevel3: TBevel;
Panel5: TPanel;
Label4: TLabel;
Comboseattype: TComboBox;
Label3: TLabel;
Edtcol: TSpinEdit;
Label2: TLabel;
Edtrow: TSpinEdit;
ListView1: TCyberListView;
panelColor: TCyberSizePanel;
Panel6: TPanel;
Label5: TLabel;
Edtrow1: TCyberEdit;
Edtseat: TCyberEdit;
Label8: TLabel;
Label9: TLabel;
Edtcol1: TCyberEdit;
Btnsave: TBitBtn;
Label6: TLabel;
Edtseatcount: TCyberEdit;
Label7: TLabel;
Edtpersoncount: TCyberEdit;
BtnDel: TBitBtn;
Label10: TLabel;
CyberXPMenu1: TCyberXPMenu;
DrawGrid1: TDrawGrid;
BitBtn1: TBitBtn;
BtnSame: TBitBtn;
RadioGroup1: TRadioGroup;
procedure FormShow(Sender: TObject);
procedure BtnsaveClick(Sender: TObject);
procedure ComboseattypeChange(Sender: TObject);
procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DrawGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BtnDelClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BtnSameClick(Sender: TObject);
private
editmode :Boolean;
seattype :integer;
sequence :Boolean;
direction:Integer;
seatList :TSeatList;
Currow,CurCol:integer;
MouseDown:Boolean;
procedure refreshlistview(sqlstr:string);
procedure InitSeat(_hallid:integer);
procedure GetSeatColor;
{ Private declarations }
public
hallid:integer;
constructor MyCreate(AOwner: TComponent; _Editmode: Boolean);
{ Public declarations }
end;
var
frmseatset: Tfrmseatset;
implementation
uses unit_adodm,unit_frmseatsame;
{$R *.dfm}
{ Tfrmseatset }
constructor Tfrmseatset.MyCreate(AOwner: TComponent; _Editmode: Boolean);
begin
inherited Create(Application);
editmode:=_editmode;
end;
procedure Tfrmseatset.FormShow(Sender: TObject);
var
i:integer;
begin
inherited;
publicinfo.DatasetToCombbox(comboseattype,5);
i:=Comboseattype.ItemIndex ;
if i<0 then exit;
seattype:=integer(Comboseattype.Items.Objects[i]);
refreshlistview('select * from tblhallseat_view where hallid='+inttostr(hallid)+' order by rownum,colnum');
direction :=1;
sequence :=true;
InitSeat(hallid);
GetSeatColor;
end;
procedure Tfrmseatset.BtnsaveClick(Sender: TObject);
var
i,j:integer;
_gridrow,_gridcol:integer;
_mid:integer;
begin
inherited;
i:=edtrow.Value ;
j:=edtcol.Value ;
{for j:=1 to edtcol.Value do
begin
if sequence then
begin
if direction=1 then
_gridcol:=j
else
_gridcol:=edtcol.Value-j+1;
end
else
begin
_mid:=edtcol.Value div 2;
if direction=1 then
begin
if j<=_mid then
_gridcol:=2*(_mid-j)+1
else
_gridcol:=2*(j-_mid);
end
else
begin
if j<=_mid then
_gridcol:=2*(_mid-j+1)
else
_gridcol:=2*(j-_mid-1)+1;
end;
end; }
with adodm.ADOProc do
begin
Close;
ProcedureName := 'My_insert_seat';
Parameters.Refresh;
Parameters.Items[1].Value :=hallid;
Parameters.Items[2].Value :=i;
Parameters.Items[3].Value :=j;
Parameters.Items[4].Value :=seattype;
Parameters.Items[5].Value :=Currow;
Parameters.Items[6].Value :=CurCol;
Parameters.Items[7].Value :=-1;
Parameters.Items[8].Value :=-1;
ExecProc;
end;
//end;
BitBtn1Click(nil);
//refreshlistview('select * from tblhallseat_view where hallid='+inttostr(hallid)+' order by rownum,colnum');
end;
procedure Tfrmseatset.ComboseattypeChange(Sender: TObject);
var
i:integer;
begin
inherited;
i:=Comboseattype.ItemIndex ;
if i<0 then exit;
seattype:=integer(Comboseattype.Items.Objects[i]);
end;
procedure Tfrmseatset.refreshlistview(sqlstr: string);
var
i:integer;
item0:TListItem;
begin
listview1.Items.Clear ;
if publicinfo.Execsql(sqlstr,false) then
begin
with adodm.ADOQRY do
begin
if recordcount<=0 then exit;
first;
listview1.Items.BeginUpdate ;
for i:=1 to recordcount do
begin
item0:=listview1.Items.Add ;
item0.Caption :=fieldbyname('rownum').AsString ;
item0.SubItems.Add(fieldbyname('colnum').AsString);
item0.SubItems.Add(fieldbyname('seatname').AsString);
item0.Data :=pointer(fieldbyname('id').AsInteger );
next;
end;
listview1.Items.EndUpdate ;
end;
end;
end;
procedure Tfrmseatset.InitSeat(_hallid: integer);
var
i:integer;
sqlstr:string;
_rowcount,_colcount:integer;
_rownum,_colnum,_seattype:integer;
_gridrow,_gridcol,_color:integer;
_Seattypename:string;
begin
sqlstr:='select max(rownum) as rowcount1,max(colnum) as colcount1,'+
'sum(personcount) as personcount,count(id)as seatcount'+
' from tblhallseat_view where hallid='+inttostr(_hallid);
if publicinfo.Execsql(sqlstr,false) then
begin
adodm.ADOQRY.First ;
_rowcount:=adodm.ADOQRY.fieldbyname('rowcount1').AsInteger ;
_colcount:=adodm.ADOQRY.fieldbyname('colcount1').AsInteger ;
edtpersoncount.Text :=adodm.ADOQRY.fieldbyname('personcount').AsString ;
edtseatcount.Text :=adodm.ADOQRY.fieldbyname('seatcount').AsString ;
end;
seatlist.Clear ;
sqlstr:='select * from tblhallseat_view where hallid='+inttostr(_hallid)+' order by gridrow,gridcol ';
if publicinfo.Execsql(sqlstr,false) then
begin
with adodm.ADOQRY do
begin
first;
for i:=1 to recordcount do
begin
_rownum:=fieldbyname('rownum').AsInteger ;
_colnum:=fieldbyname('colnum').AsInteger ;
_gridrow:=fieldbyname('gridrow').AsInteger ;
_gridcol:=fieldbyname('gridcol').AsInteger ;
_seattype:=fieldbyname('seattype').AsInteger ;
_Seattypename:=fieldbyname('seatname').AsString ;
_color :=fieldbyname('color').AsInteger ;
seatlist.Add(_gridrow,_gridcol,_rownum,_colnum,_color,_seattype,_seattypename,'0');
next;
end;
end;
end;
DrawGrid1.Refresh ;
end;
procedure Tfrmseatset.DrawGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
Prt:PSeatNode;
i:integer;
txt:string;
begin
inherited;
if (ACol=0) then
with DrawGrid1 do
begin
canvas.Brush.Color :=clBtnFace;
canvas.Rectangle(rect);
Canvas.Font.Size:=9;
//Canvas.Font.Color:=clblack;
Canvas.TextOut(Rect.Left+2 ,Rect.Top+5,inttostr(Arow));
end
else if (ARow=0) then
with DrawGrid1 do
begin
canvas.Rectangle(rect);
Canvas.Font.Size:=9;
//Canvas.Font.Color:=clblack;
Canvas.TextOut(Rect.Left+2 ,Rect.Top+5,inttostr(ACol));
end
else
begin
if ((Acol=0) or (Arow=0)) then showmessage('adasd');
txt:=inttostr(Acol)+':'+inttostr(Arow);
i:=seatlist.IndexOf_Seat(Arow,Acol);
if i<0 then
begin
with DrawGrid1 do
begin
canvas.Brush.Color :=clwhite ;
canvas.Rectangle(rect);
end;
exit;
end;
prt:=seatlist.Items[i];
//txt:=inttostr(prt^.rownum)+'排'+inttostr(prt^.colnum)+'号';
txt:=inttostr(prt^.colnum)+'号';
rect.Left :=rect.Left+2;
rect.Top :=rect.Top+2;
with DrawGrid1 do
begin
canvas.Brush.Color :=prt^.color ;
canvas.Rectangle(rect);
Canvas.Font.Size:=10;
Canvas.Font.Style:=[fsBold];
Canvas.Font.Color:=clblack;
Canvas.TextOut(Rect.Left+1 ,Rect.Top+1,txt);
end;
end;
end;
procedure Tfrmseatset.GetSeatColor;
var
sqlstr:string;
txt:TStaticText;
i,_left,_top:integer;
begin
_left:=10;
_top:=10;
sqlstr:='select * from tblseattype';
if publicinfo.Execsql(sqlstr,false) then
begin
with adodm.ADOQRY do
begin
if recordcount<=0 then exit;
first;
for i:=1 to recordcount do
begin
txt:=TStaticText.Create(self);
txt.Parent :=panelColor;
txt.AutoSize :=false;
txt.BevelEdges :=[beLeft,beTop,beRight,beBottom];
txt.BevelInner :=bvRaised;
txt.BorderStyle :=sbsSunken;
txt.Left :=_left;
txt.Top :=_top;
txt.Width :=60;
txt.Height :=16;
txt.Caption :=fieldbyname('name').AsString ;
txt.Color :=fieldbyname('color').AsInteger ;
_left:=_left+txt.Width+10 ;
next;
end;
end;
end;
end;
{ TSeatList }
procedure Tfrmseatset.FormCreate(Sender: TObject);
begin
inherited;
seatlist:=TSeatList.Create ;
//drawgrid1.Cells[1,1]:='';
end;
procedure Tfrmseatset.FormClose(Sender: TObject; var Action: TCloseAction);
begin
seatlist.Free ;
inherited;
end;
procedure Tfrmseatset.DrawGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
prt:PSeatNode;
i:integer;
begin
inherited;
i:=seatlist.IndexOf_Seat(Arow,Acol);
if i<0 then
begin
Curcol:=ACol;
CurRow:=ARow;
edtrow.Text :=Inttostr(CurRow);
EdtCol.Text :=Inttostr(CurCol);
exit;
end;
prt:=seatlist.Items[i];
if prt^.status='0' then CanSelect:=false;
edtrow1.Text :=inttostr(prt^.rownum);
edtcol1.Text :=inttostr(prt^.colnum);
edtseat.Text :=prt^.seattypename;
DrawGrid1.Hint :=inttostr(prt^.rownum)+'排'+inttostr(prt^.colnum)+'号'+prt^.seattypename;
end;
procedure Tfrmseatset.DrawGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
prt:PSeatNode;
i:integer;
begin
inherited;
{if Button=mbRight then exit;
DrawGrid1.MouseToCell(X,Y,CurCol,CurRow);
i:=seatlist.IndexOf_Seat(Currow,CurCol);
if i<0 then exit;
prt:=seatlist.Items[i];
if prt^.status ='0' then MouseDown:=TRUE; }
end;
procedure Tfrmseatset.DrawGrid1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
prt:PSeatNode;
rect1:Trect;
i:integer;
txt:string;
begin
inherited;
{ try
i:=seatlist.IndexOf_Seat(Currow,CurCol);
if i<0 then exit;
prt:=seatlist.Items[i];
if MouseDown then
begin
rect1:=DrawGrid1.CellRect(Curcol,Currow);
rect1.Left :=rect1.Left+5;
rect1.Top :=rect1.Top +5;
DrawGrid1.canvas.Brush.Color :=clwhite ;
DrawGrid1.canvas.Rectangle(rect1);
DrawGrid1.Canvas.Font.Size:=9;
DrawGrid1.Canvas.Font.Color:=clblack;
txt:=inttostr(prt^.rownum)+'排'+inttostr(prt^.colnum)+'号';
DrawGrid1.Canvas.TextOut(Rect1.Left+2 ,Rect1.Top+5,txt);
prt^.status :='1';
end;
finally
MouseDown:=false;
end; }
end;
procedure Tfrmseatset.BtnDelClick(Sender: TObject);
var
sqlstr:string;
Selitem:TListItem;
begin
inherited;
Selitem:=listview1.Selected ;
if selitem=nil then exit;
case RadioGroup1.ItemIndex of
0:
sqlstr:= ' and rownum='+selitem.Caption ;
1:
sqlstr:=' and colnum='+selitem.SubItems[0];
2:
sqlstr:= ' and rownum='+selitem.Caption+' and colnum='+selitem.SubItems[0];
end;
sqlstr:='delete from tblhallseat where hallid='+inttostr(hallid)+sqlstr;
BitBtn1Click(nil);
end;
procedure Tfrmseatset.BitBtn1Click(Sender: TObject);
begin
inherited;
InitSeat(hallid);
refreshlistview('select * from tblhallseat_view where hallid='+inttostr(hallid)+' order by rownum,colnum');
end;
procedure Tfrmseatset.BtnSameClick(Sender: TObject);
begin
inherited;
frmseatsame :=tfrmseatsame.Create(Application);
try
frmseatsame.Hallid :=hallid;
if frmseatsame.ShowModal =mrok then
begin
BitBtn1Click(nil);
end;
finally
frmseatsame.Free ;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -