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

📄 u_main.pas

📁 SQL的应用
💻 PAS
字号:
unit U_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Grids, DBGrids,INIFiles, StdCtrls,ADODB, DB, Buttons, DBCtrls,
  Mask, ComCtrls, Menus, ExtCtrls, ToolWin, ImgList,ShellAPI, DBClient;

type
  TF_Main = class(TForm)
    DBGrid_DB: TDBGrid;
    Edit_Content: TEdit;
    BitBtn_Jingque: TBitBtn;
    BitBtn_Mohu: TBitBtn;
    ComboBox_Condition: TComboBox;
    BitBtn_Add: TBitBtn;
    BitBtn_Delete: TBitBtn;
    BitBtn_Edit: TBitBtn;
    BitBtn_Cancle: TBitBtn;
    BitBtn_Confirm: TBitBtn;
    Label_Condition: TLabel;
    Label_Content: TLabel;
    TreeView_DB: TTreeView;
    MainMenu_All: TMainMenu;
    N_SysManger: TMenuItem;
    ToolBar_DB: TToolBar;
    SpeedButton_First: TSpeedButton;
    SpeedButton_Prior: TSpeedButton;
    SpeedButton_Next: TSpeedButton;
    SpeedButton_Last: TSpeedButton;
    N_DataBackup: TMenuItem;
    N_DataRestore: TMenuItem;
    SpeedButton_Leave: TSpeedButton;
    N_Spilier: TMenuItem;
    N_Close: TMenuItem;
    N_Help: TMenuItem;
    N_HelpInfo: TMenuItem;
    N_HelpAbout: TMenuItem;
    ImageList_DB: TImageList;
    StatusBar_DB: TStatusBar;
    Timer_DB: TTimer;
    Label_TableName: TLabel;
    SpeedButton_About: TSpeedButton;
    N_DataManger: TMenuItem;
    N_ToReport: TMenuItem;
    N_ToExcel: TMenuItem;
    SpeedButton_ToExcel: TSpeedButton;
    SpeedButton_ToReport: TSpeedButton;
    BitBtn_All: TBitBtn;
    BitBtn_Chart: TBitBtn;
    N_Online: TMenuItem;
    N_Email: TMenuItem;
    N_XML: TMenuItem;
    ADOQry_XML: TADOQuery;
    ClientDS: TClientDataSet;
    ADOCnt_XML: TADOConnection;
    SpeedButton_XML: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn_JingqueClick(Sender: TObject);
    procedure BitBtn_MohuClick(Sender: TObject);
    procedure DBGrid_DBDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure BitBtn_AddClick(Sender: TObject);
    procedure BitBtn_DeleteClick(Sender: TObject);
    procedure BitBtn_EditClick(Sender: TObject);
    procedure BitBtn_ConfirmClick(Sender: TObject);
    procedure BitBtn_CancleClick(Sender: TObject);
    procedure TreeView_DBClick(Sender: TObject);
    procedure SpeedButton_PriorClick(Sender: TObject);
    procedure SpeedButton_NextClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButton_LeaveClick(Sender: TObject);
    procedure SpeedButton_LastClick(Sender: TObject);
    procedure SpeedButton_FirstClick(Sender: TObject);
    procedure N_CloseClick(Sender: TObject);
    procedure Timer_DBTimer(Sender: TObject);
    procedure DBGrid_DBCellClick(Column: TColumn);
    procedure N_HelpAboutClick(Sender: TObject);
    procedure N_HelpInfoClick(Sender: TObject);
    procedure N_DataBackupClick(Sender: TObject);
    procedure N_DataRestoreClick(Sender: TObject);
    procedure SpeedButton_AboutClick(Sender: TObject);
    procedure N_ToReportClick(Sender: TObject);
    procedure N_ToExcelClick(Sender: TObject);
    procedure SpeedButton_ToExcelClick(Sender: TObject);
    procedure SpeedButton_ToReportClick(Sender: TObject);
    procedure BitBtn_AllClick(Sender: TObject);
    procedure BitBtn_ChartClick(Sender: TObject);
    procedure N_EmailClick(Sender: TObject);
    procedure N_OnlineClick(Sender: TObject);
    procedure N_XMLClick(Sender: TObject);
    procedure SpeedButton_XMLClick(Sender: TObject);
    
  private
    procedure showhint(sender:tobject);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  F_Main: TF_Main;
  
implementation

  Uses U_DBPublicPack,U_RecordStruct,U_Report,U_Logon,U_About,U_Backup,U_Restore,U_Chart;
{$R *.dfm}

procedure TF_Main.FormCreate(Sender: TObject);
//Var
//  FWidth:integer;
begin
  ShowTableDB;
  DBTableName:=TreeView_DB.Items.Item[1].Text;
  GetDBTableInfo(DBTableName);
  RecordConut:=IntTostr(ADOQry.RecordCount);
  Label_TableName.Caption:=TreeView_DB.Items.Item[1].Text+'    总共有 '+RecordConut+' 条记录';
  DestroyDBEditAndDBText(DBGrid_DB);
  CreateDBEditAndDBText(DBGrid_DB);
  Application.OnHint:=ShowHint;
  TreeView_DB.FullExpand;
  StatusBar_DB.Panels[4].Text:='登陆时间:'+DateTimeToStr(Now);

{  if(Screen.width<> 800)then
    begin
    FWidth:=Width;
    Scaled:=TRUE;
    Font.Size:=(Width DIV FWidth)*Font.Size;//字体大小调整
    ScaleBy(Screen.Width,800); //控件大小调整
    Height:=longint(Height)*longint(Screen.Height)DIV 600;
    Width:=longint(Width)*longint(Screen.Width)DIV 800;//窗口大小调整
    end;
}
End;

//精确查询
procedure TF_Main.BitBtn_JingqueClick(Sender: TObject);
begin
  If Edit_Content.Text='' Then
    Begin
      MessageDlg('请输入查值',MTConfirmation ,[MBOK],0);
    End
    Else
      Begin
       Jingque_Qry(DBTableName);
     End;
End;

//模糊查询
procedure TF_Main.BitBtn_MohuClick(Sender: TObject);
begin
  If Edit_Content.Text='' Then
    Begin
      MessageDlg('请输入查询值',MTConfirmation ,[MBOK],0);
    End
    Else
      Begin
       Mohu_Qry(DBTableName);
     End;
End;

//所有记录
procedure TF_Main.BitBtn_AllClick(Sender: TObject);
begin
  All_Qry(DBTableName);
end;

// DBGrid_DB 相应事件
procedure TF_Main.DBGrid_DBDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
Var
  i:Integer;
begin
  For i:=0 To DBGrid_DB.FieldCount-1 Do
    Begin
      DBGrid_DB.Columns.Items[i].Alignment:=TaLeftJustify;  //使筐中的内容左对齐
      If (i Mod 2)=0 Then DBGrid_DB.Columns.Items[i].Color:=clMoneyGreen  //使奇数列和偶数列的颜色不一样
      Else  DBGrid_DB.Columns.Items[i].Color:=ClTeal;
    End;
  if GdSelected  in State then
    DBGrid_DB.Canvas.Font.Color:=clAqua;
    DBGrid_DB.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

// TreeView_DB 单击事件
procedure TF_Main.TreeView_DBClick(Sender: TObject);
Var
  SelectStr:String;     //定义选择的表名和总记录数
begin
  SelectStr:=TreeView_DB.Selected.Text;
  RecordConut:=IntTostr(ADOQry.RecordCount);
  If (SelectStr='基本信息表') Or (SelectStr='客户表') Then
  Begin
    Exit;
  End
  Else
  Begin
    DestroyDBEditAndDBText(DBGrid_DB);
    DBTableName:=TreeView_DB.Selected.Text;
    GetDBTableInfo(DBTableName);
    RecordConut:=IntTostr(ADOQry.RecordCount);
    Label_TableName.Caption:=SelectStr+'    总共有 '+RecordConut+' 条记录';
    CreateDBEditAndDBText(DBGrid_DB);//创建DBEdit,DBText
  End;
end;

//增加记录
procedure TF_Main.BitBtn_AddClick(Sender: TObject);
begin
  BitBtn_Cancle.Enabled:=True;
  BitBtn_Confirm.Enabled:=True;
  ADOQry.Append;
  DBEdit[0].SetFocus;
end;

//删除记录
procedure TF_Main.BitBtn_DeleteClick(Sender: TObject);
begin
if Messagedlg('确定要删除这条记录吗?',MtWarning,MbOKCancel,0)=MrOk then
   ADOQry.Delete;
   BitBtn_Cancle.Enabled:=False;
   BitBtn_Confirm.Enabled:=False;
end;

//修改记录
procedure TF_Main.BitBtn_EditClick(Sender: TObject);
begin
  BitBtn_Cancle.Enabled:=True;
  BitBtn_Confirm.Enabled:=True;
  ADOQry.Edit;
  DBEdit[0].SetFocus;
end;

//提交修改
procedure TF_Main.BitBtn_ConfirmClick(Sender: TObject);
Var
  i:Integer;
begin
  For i:=0 To 3 Do
  Begin
    If DBEdit[i].Text='' Then Begin ShowMessage(DBGrid_DB.Fields[i].FieldName+'不能为空,请重新输入');Exit;End;
  End;
  Try ADOQry.Post;  Except Exit;End;
  BitBtn_Confirm.Enabled:=False;
  BitBtn_Cancle.Enabled:=False;
end;

//取消修改
procedure TF_Main.BitBtn_CancleClick(Sender: TObject);
begin
  ADOQry.Cancel;
  BitBtn_Confirm.Enabled:=False;
  BitBtn_Cancle.Enabled:=False;
end;

//第一条一条记录
procedure TF_Main.SpeedButton_FirstClick(Sender: TObject);
begin
  ADOQry.First;
end;

//前一条记录
procedure TF_Main.SpeedButton_PriorClick(Sender: TObject);
begin
  ADOQry.Prior;
end;

//下一条一条记录
procedure TF_Main.SpeedButton_NextClick(Sender: TObject);
begin
  ADOQry.Next;
end;

//最后一条记录
procedure TF_Main.SpeedButton_LastClick(Sender: TObject);
begin
  ADOQry.Last;
end;

//退出菜单
procedure TF_Main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Application.Terminate;
end;

//退出菜单
procedure TF_Main.SpeedButton_LeaveClick(Sender: TObject);
begin
  if Messagedlg('确定要退出吗?',MTConfirmation,[MBYes,MBNO],0)=MrYes then
    Application.Terminate;
end;

//使 statusbar_DB.Panels[1].text 能跟随着 系统的 Hint 而动态的改变 Hint。
procedure TF_main.showhint(sender:tobject);
begin
  StatusBar_DB.Panels[1].Text:=Application.Hint;
end;

//退出菜单
procedure TF_Main.N_CloseClick(Sender: TObject);
begin
  Application.Terminate;
end;

//状态栏当前时间
procedure TF_Main.Timer_DBTimer(Sender: TObject);
begin
  StatusBar_DB.Panels[5].Text:='当前时间:'+DateTimeToStr(Now);
end;

procedure TF_Main.DBGrid_DBCellClick(Column: TColumn);
Var
  i:integer;
begin
    With DBGrid_DB DO
    Begin
      If DBGrid_DB.FieldCount<1 Then Exit;
      For i:=0 To FieldCount-1 Do
        Begin
          DBedit[i].Text:=Fields[i].AsString;
        End;
    End;
end;

procedure TF_Main.N_HelpInfoClick(Sender: TObject);
var
  Txt:string;
begin
  Txt:=ExtractFilePath(Paramstr(0))+'Help.html';
  ShellExecute(Handle,'Open',Pchar(Txt),nil,nil,SW_Normal);
end;

//备份数据库
procedure TF_Main.N_DataBackupClick(Sender: TObject);
begin
//  Application.CreateForm(TF_Backup,F_Backup);
  F_Backup.Show;
end;

//还原数据库
procedure TF_Main.N_DataRestoreClick(Sender: TObject);
begin
//  Application.CreateForm(TF_Restore,F_Restore);
  F_Restore.Show;
end;

//关于 > > >
procedure TF_Main.N_HelpAboutClick(Sender: TObject);
begin
  Application.CreateForm(TF_About,F_About);
//  F_About.Show;
end;

procedure TF_Main.SpeedButton_AboutClick(Sender: TObject);
begin
  N_HelpAbout.Click;
end;

//生成报表
procedure TF_Main.N_ToReportClick(Sender: TObject);
begin
  If ADOQry.RecordCount=0 Then
  Begin
    ShowMessage('对不起,表中没有任何记录');
    Exit;
  End
  Else
    Begin
      CreateQRLabelAndQRDBText(F_Main.DBGrid_DB);
      F_Report.QuickRep_DB.Preview;
//      F_Report.Show;
//      F_Report.Free;
      Application.CreateForm(TF_Report,F_Report);
//      DestroyDBEditAndDBText(DBGrid_DB);
    End;
end;

//导出到 Excel
procedure TF_Main.N_ToExcelClick(Sender: TObject);
begin
  ToExcel(DBGrid_DB);
end;

procedure TF_Main.SpeedButton_ToExcelClick(Sender: TObject);
begin
  N_ToExcel.Click;
end;

procedure TF_Main.SpeedButton_ToReportClick(Sender: TObject);
begin
  N_ToReport.Click;
end;

//图表分析
procedure TF_Main.BitBtn_ChartClick(Sender: TObject);
begin
  F_Chart.Show;
//  F_Chart.DecisionGraph.:=;  DS;
//  ADOQry.DataSource:=F_Chart.DecisionGraph.DecisionSource;
end;

//给我写信
procedure TF_Main.N_EmailClick(Sender: TObject);
var
  Url:string;
begin
  Url:='Mailto:0809601@163.com';
  ShellExecute(Handle,'Open',Pchar(Url),nil,nil,sw_normal);
end;

//在线帮助
procedure TF_Main.N_OnlineClick(Sender: TObject);
var
  Url:string;
begin
  Url:='http://endo.533.net/';
  ShellExecute(Handle,'Open',Pchar(Url),nil,nil,sw_normal);
end;

procedure TF_Main.N_XMLClick(Sender: TObject);
Var
  XMLName:String;
begin
{If TreeView_DB.Selected.Selected=True Then
  XMLName:=TreeView_DB.Selected.Text
Else
  XMLName:=DBTableName;  }
If Connect_XML()=True Then
  Begin
  Try
  With ADOQry_XML Do
    Begin
//      DBTableName:=TreeView_DB.Selected.Text;
      XMLName:=DBTableName;//TreeView_DB.Selected.Text;
      Close;SQL.Clear;SQL.Add('Select * From Logon');//+DBTableName);Open;
      ADOQry_XML.Active:=True;
    End;
    ClientDS.SetProvider(ADOQry_XML);
//    ClientDS
    ClientDS.Active:=True;
    ClientDS.SaveToFile('XML\'+DBTableName+'.XML'); //.FileName:=TreeView_DB.Selected.Text
    ShowMessage('恭喜您!'+DBTableName+'导出数据成功');
  Except
    MessageDlg('对不起!导出失败',MTError,MbOKCancel,0);
  End;
End;
ADOCnt_XML.Connected:=False;
ClientDS.Active:=False;
End;

procedure TF_Main.SpeedButton_XMLClick(Sender: TObject);
begin
  N_XMLClick(Sender);
end;

End.

⌨️ 快捷键说明

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