⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inherit.~pas

📁 用delphi实现的一个酒店管理系统框架
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit Inherit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ToolWin, ComCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls,
  DBCtrls, StdCtrls, Buttons,math, RpCon, RpConDS, RpDefine,RpRave,
  RVClass,RVProj,RvCsRpt,RvDirectDataView,Excel2000,OleServer,ComObj,JPEG,
  ExtDlgs,imm,Menus,strUtils;//NDCsJPEG,//****Rave报表引用Jpeg组件运行库****
type//imm输入法引用
//  TShowDllForm=Procedure(DBGrid:TDBGrid;SheetName:pchar;pHandle:THandle);
  TTInherit = class(TForm)
    ToolBar1: TToolBar;
    ImageList1: TImageList;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    DBGrid1: TDBGrid;
    ToolButton13: TToolButton;
    BB: TRvProject;
    BBDS: TADODataSet;
    Rav: TEdit;
    RavCN: TEdit;
    ToolButton14: TToolButton;
    SB1: TStatusBar;
    ToolButton15: TToolButton;
    SaveDialog1: TSaveDialog;
    ToolButton16: TToolButton;
    OpenDialog1: TOpenDialog;
    ToolButton17: TToolButton;
    ReplaceDialog1: TReplaceDialog;
    FindDialog1: TFindDialog;
    FFn1: TComboBox;
    FFv1: TEdit;
    Panel3: TPanel;
    YSF: TComboBox;
    RTF: TRichEdit;
    Image1: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    Timer1: TTimer;
    SavePictureDialog1: TSavePictureDialog;
    TPopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    TPsize1: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ToolButton6Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure ToolButton9Click(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure ToolButton12Click(Sender: TObject);
    procedure ToolButton11Click(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure FormCreate(Sender: TObject);
    procedure Enables();
    procedure ADODataSet1AfterScroll(DataSet: TDataSet);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure FormResize(Sender: TObject);
    procedure DBGrid1ColExit(Sender: TObject);
    procedure ToolButton15Click(Sender: TObject);
//    function ExportDBGrid(DBGrid:TDBGrid;SheetName:string;SaveDialog:TSaveDialog):boolean;
    procedure ToolButton16Click(Sender: TObject);
    procedure ToolButton17Click(Sender: TObject);
    procedure ReplaceDialog1Find(Sender: TObject);
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure FFn1Change(Sender: TObject);
    procedure ADODataSet1AfterOpen(DataSet: TDataSet);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure Image1DblClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ADODataSet1BeforeInsert(DataSet: TDataSet);
    procedure ADODataSet1AfterInsert(DataSet: TDataSet);
    procedure ADODataSet1AfterEdit(DataSet: TDataSet);
    procedure FormActivate(Sender: TObject);
    procedure BBCreate(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure DBGrid1Exit(Sender: TObject);
    procedure DBGrid1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
//Procedure CallDllForm(DBGrid:TDBGrid;SheetName:pchar;pHandle:Thandle);
//    Procedure ReleaseCall;
  private//直接保存,不显示EXCEL
    { Private declarations }
  public
    msg,searchstr,SRBFL,F1TP:string;j:tjpegimage;b:Tbitmap;
    vsb:array of boolean;ColW:array of integer;
    IMEopen:boolean;MyHKL:HKL;Fhandle1:integer;
  end;

var
  TInherit: TTInherit;// stdcall;//HandleCall:THandle;//BoolCall:Boolean;
//function ExportDBGrid(DBGrid:TDBGrid;SheetName:string):boolean;External 'F:\ExDLL\FN.dll';

implementation
uses Unit4, Unit3;
{$R *.dfm}
Function Msg1(Txt:string;Cap:string='警告!';uType:UINT=MB_OK):integer;
Begin
Msg1:=Application.MessageBox(PChar(Txt),PChar(Cap),uType);
End;

procedure TTInherit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if (ADODataSet1.State=dsEdit)or(ADODataSet1.State=dsInsert) then
 Try ADODataSet1.Post;Except;End;
 action:=cafree;
end;

procedure TTInherit.ToolButton1Click(Sender: TObject);//追加记录
begin ADODataSet1.Append;end;//DBNavigator1.BtnClick(nbInsert);
procedure TTInherit.ToolButton2Click(Sender: TObject);//编辑当前记录
begin DBNavigator1.BtnClick(nbEdit);end;
procedure TTInherit.ToolButton3Click(Sender: TObject);//删除当前记录
begin
 if Form3.dj>='R' then  exit;
if Msg1('确实要'+ToolButton3.Caption+'吗?','警告!',MB_OKCANCEL)<>MrOk
 then exit;
DBNavigator1.BtnClick(nbDelete);
end;
procedure TTInherit.ToolButton4Click(Sender: TObject); //保存当前记录
begin DBNavigator1.BtnClick(nbPost);end;
procedure TTInherit.ToolButton5Click(Sender: TObject);//取消当前记录的修改
begin DBNavigator1.BtnClick(nbCancel);end;
procedure TTInherit.ToolButton6Click(Sender: TObject);//到首记录
begin DBNavigator1.BtnClick(nbFirst);end;
procedure TTInherit.ToolButton7Click(Sender: TObject);//上一条记录
begin DBNavigator1.BtnClick(nbPrior);end;
procedure TTInherit.ToolButton8Click(Sender: TObject);//下一条记录
begin DBNavigator1.BtnClick(nbNext);end;
procedure TTInherit.ToolButton9Click(Sender: TObject);//到最后一条记录
begin DBNavigator1.BtnClick(nbLast);end;

procedure TTInherit.ToolButton13Click(Sender: TObject);//刷新操作
Var Bm:TBookmarKstr;//i:integer;
begin   //DBNavigator1.BtnClick(nbRefresh);//???
Bm:=ADODataSet1.Bookmark;//ADODataSet1.DisableControls;
ADODataSet1.Close;ADODataSet1.Open;
try ADODataSet1.Bookmark:=Bm;except;end;
Timer1.Enabled:=True;
//try ADODataSet1.EnableControls;except;end;//刷新后定位异常
end;

procedure TTInherit.ToolButton12Click(Sender: TObject);//关闭按钮
begin close;end;

procedure TTInherit.ToolButton11Click(Sender: TObject);//打印报表,不可用
var  MyPage:TRavePage;MyRegion:TRaveRegion;myDataView:TRaveDataView;
begin  BB.Close;
BB.ProjectFile:=ExtractFilePath(application.ExeName)+Rav.Text;
BB.Open;//myDataView:=BB.ProjMan.FindRaveComponent('Ts',nil) as TRaveDataView;
myDataView:=TRaveDataView(BB.ProjMan.Components[0]);
myDataView.ConnectionName:=RavCN.text;
With  BB.ProjMan  do
begin
MyPage:=FindRaveComponent('Report2.mainPage',nil) as TRavePage;//找页面对象
MyRegion:=FindRaveComponent('Region',MyPage) as TRaveRegion;//找页面区域对象
MyRegion.Left:=DM.ymleft+IfThen(RavCN.text='CZRKds',0.866,0);
MyRegion.Top:=DM.ymTop;Try//设置页面区域的左上角坐标
MyPage:=FindRaveComponent('Report2.Page1',nil) as TRavePage;//找页面对象
MyRegion:=FindRaveComponent('Region',MyPage) as TRaveRegion;//找页面区域对象
MyRegion.Left:=DM.ymleft;//设置页面区域的左上角坐标
MyRegion.Top:=DM.ymTop;Except;end;
end;
BB.Execute;BB.Close;
end;

procedure TTInherit.ToolButton10Click(Sender: TObject); //查找操作
begin FindDialog1.Execute;FHandle1:=findwindow(nil,'查找');
SetWindowText(FHandle1,PChar('查找"'+DBGrid1.SelectedField.DisplayName+'"列的内容'));
end;

procedure TTInherit.DBGrid1TitleClick(Column: TColumn);
var KS:TKeyboardState;DESC:boolean;
begin//单击列标题后按相应列递增排序
GetKeyboardState(KS);Desc:=KS[vk_shift]<128;//获得键盘状态
try//如何按Ctrl键则累加索引字段
if (KS[vk_Control]<128)or(ADODataSet1.IndexFieldNames='') then
 ADODataSet1.IndexFieldNames:=Column.FieldName+ifThen(Desc,' DESC') else
 ADODataSet1.IndexFieldNames:=ADODataSet1.IndexFieldNames+';'+Column.FieldName+ifThen(Desc,' DESC');
except
showmessage(ADODataSet1.IndexFieldNames+':无法排序!');
end;
end;

procedure TTInherit.FormCreate(Sender: TObject);
begin
if j=nil then j:=tjpegimage.Create;if b=nil then b:=TBitmap.Create;
Screen.Cursor:=crHourGlass;N2.Visible:=Form3.dj='A';
ADODataSet1.Close;
if ADODataSet1.CommandText<>'' then begin ADODataSet1.Open;Enables();end;
FormResize(Sender);
ToolBar1.ShowCaptions:=Form3.N51.Checked;
ToolBar1.ButtonWidth:=20+ord(Form3.N51.Checked)*11;
ToolBar1.ButtonHeight:=20+ord(Form3.N51.Checked)*16;
ToolBar1.Height:=22+ord(Form3.N51.Checked)*16;
FFn1.Top:=ord(Form3.N51.Checked)*7;FFv1.Top:=FFn1.Top;YSF.Top:=FFn1.Top;
end;
procedure TTInherit.Enables();
begin//控制哪些按钮可以操作
ToolButton2.Enabled:=ADODataSet1.State<>dsEdit;//编辑
ToolButton3.Enabled:=not ADODataSet1.IsEmpty;//删除
ToolButton4.Enabled:=(ADODataSet1.State=dsEdit)or(ADODataSet1.State=dsInsert);//保存
ToolButton5.Enabled:=(ADODataSet1.State=dsEdit)or(ADODataSet1.State=dsInsert);//取消
ToolButton13.Enabled:=not ADODataSet1.IsEmpty;//刷新
ToolButton6.Enabled:=not ADODataSet1.Bof;//最前
ToolButton7.Enabled:=not ADODataSet1.Bof;//向前
ToolButton8.Enabled:=not ADODataSet1.Eof;//向后
ToolButton9.Enabled:=not ADODataSet1.Eof;//最后
ToolButton10.Enabled:=(not ADODataSet1.IsEmpty)and(ADODataSet1.State=dsBrowse);//查找
ToolButton17.Enabled:=(not ADODataSet1.IsEmpty)and(ADODataSet1.State=dsBrowse);//替换
ToolButton15.Enabled:=ADODataSet1.State=dsBrowse;//导出
ToolButton16.Enabled:=ADODataSet1.State=dsBrowse;//导入
DBGrid1.Enabled:=not ADODataSet1.IsEmpty;//
case ADODataSet1.State of
dsBrowse:SB1.Panels[3].Text:='浏览状态';
dsEdit:SB1.Panels[3].Text:='编辑状态';
dsInsert:SB1.Panels[3].Text:='插入记录状态';
dsInactive:SB1.Panels[3].Text:='已关闭状态';
dsCalcFields:SB1.Panels[3].Text:='处理计算字段状态';
dsFilter:SB1.Panels[3].Text:='设置过滤器时的状态';
End;
end;

procedure TTInherit.ADODataSet1AfterScroll(DataSet: TDataSet);
var bF1TP:boolean;
begin
if not ADODataSet1.Active then exit;Enables();
SB1.Panels[1].Text:=Format('%d/%d',[ADODataSet1.RecNo,ADODataSet1.RecordCount]);
bF1TP:=ADODataSet1.FieldList.IndexOf(F1TP)>=0;
ToolButton14.Visible:=bF1TP;Image1.Enabled:=bF1TP;if not bF1TP then exit;
try
if j=nil then j:=tjpegimage.Create;//对象不存在时创建
if ADODataSet1.fieldbyname(F1TP).Value='' then
Begin image1.Picture.Graphic:=nil;
ToolButton14.Caption:=IfThen(F1TP='文件','程序','加图');
N3.Enabled:=false;TPsize1.Caption:='无图';exit;end;
try j.Assign(ADODataSet1.fieldbyname(F1TP));//读图片内容到tjpegimage对象
image1.Picture.Graphic:=j;except;end;
ToolButton14.Caption:='清除';N3.Enabled:=true;
TPsize1.Caption:=Format('%.0nB',[0.0+length(ADODataSet1.fieldbyname(F1TP).AsString)]);
except;end;//将图片内容送Image1组件显示//带千分位格式图片字节
end;

procedure TTInherit.DataSource1DataChange(Sender: TObject; Field: TField);
begin
Enables();
end;

procedure TTInherit.FormResize(Sender: TObject);
begin
DBGrid1.Width:=ClientWidth-DBGrid1.Left-8;
DBGrid1.Height:=ClientHeight-DBGrid1.Top-10-23;
end;

procedure TTInherit.DBGrid1ColExit(Sender: TObject);
begin //ToolButton14.Visible:=False;
end;

function ExportDBGrid0(DBGrid:TDBGrid;SheetName:string):boolean;//直接保存,不显示EXCEL
var c,r,i,j:integer;app:Olevariant;TempFN:string;BM:TBookMarkStr;RE:TRichEdit;
begin//Txt:TDBRichEdit;//引用:ComObj  //改成DLL出问题
TempFN:=SheetName;
 try
  result:=True;app:=CreateOLEObject('Excel.application');
  app.WorkBooks.Add(xlWBatWorkSheet);
 except
  Msg1('Excel没有正确安装!');result:=False;exit;
 end;////若没有输入扩展名xls会自动补上,以便删除    
 app.Workbooks.add;app.Visible:=false;
 BM:=DBGrid.DataSource.DataSet.Bookmark;
 DBGrid.DataSource.DataSet.DisableControls;
 DBGrid.DataSource.DataSet.First;c:=DBGrid.Columns.Count;
 r:=DBGrid.DataSource.DataSet.RecordCount;
 RE:=TRichEdit.Create(Application.MainForm);RE.Parent:=Application.MainForm;Re.Visible:=false;
// Txt:=TDBRichEdit.Create(Application.MainForm);Txt.Parent:=Application.MainForm;Txt.Visible:=false;
 Application.ProcessMessages;//DBGrid.DataSource.DataSet.Fields[i].DisplayLabel;
try
 for i:=0 to c-1 do Begin
 app.cells(1,1+i):=DBGrid.Columns[i].Title.caption;//表头导出
 app.WorkSheets[1].Columns[i+1].ColumnWidth:=dbGrid.Columns.Items[i].Width div 6;
 if (DBGrid.Fields[i].DataType=ftWideString)or(DBGrid.Fields[i].DataType=ftString) then //ftSmallint

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -