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

📄 card.pas

📁 一个基本的数据库开发示例
💻 PAS
字号:
unit Card;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Menus, ExtCtrls, Buttons, DB, DBTables, Grids, DBGrids, Printers;

type
  TCardForm = class(TForm)
    CardMenu: TMainMenu;
    CardManage: TMenuItem;
    New: TMenuItem;
    Open: TMenuItem;
    Save: TMenuItem;
    SaveAs: TMenuItem;
    Separator1: TMenuItem;
    Print: TMenuItem;
    Separator2: TMenuItem;
    Exit: TMenuItem;
    Edit: TMenuItem;
    Insert: TMenuItem;
    Delete: TMenuItem;
    Separator3: TMenuItem;
    Find: TMenuItem;
    Help: TMenuItem;
    Content: TMenuItem;
    UseHelp: TMenuItem;
    Separator4: TMenuItem;
    About: TMenuItem;
    SpeedBarPanel: TPanel;
    SpeedBtnOpen: TSpeedButton;
    SpeedBtnSave: TSpeedButton;
    SpeedBtnPrint: TSpeedButton;
    SpeedBtnExit: TSpeedButton;
    SpeedBtnInsert: TSpeedButton;
    SpeedBtnDelete: TSpeedButton;
    SpeedBtnFind: TSpeedButton;
    SpeedBtnContent: TSpeedButton;
    SpeedBtnAbout: TSpeedButton;
    StatusBarPanel: TPanel;
    StatusBarTitle: TPanel;
    StatusBarTime: TPanel;
    CardTimer: TTimer;
    CardTable: TTable;
    CardDataSource: TDataSource;
    CardDBGrid: TDBGrid;
    TempTable: TTable;
    NewTable: TTable;
    CardBatchMove: TBatchMove;
    OpenCardDialog: TOpenDialog;
    SaveCardDialog: TSaveDialog;
    procedure FormCreate(Sender: TObject);
    procedure ExitClick(Sender: TObject);
    procedure NewClick(Sender: TObject);
    procedure OpenClick(Sender: TObject);
    procedure SaveClick(Sender: TObject);
    procedure SaveAsClick(Sender: TObject);
    procedure PrintClick(Sender: TObject);
    procedure InsertClick(Sender: TObject);
    procedure DeleteClick(Sender: TObject);
    procedure FindClick(Sender: TObject);
    procedure ContentClick(Sender: TObject);
    procedure UseHelpClick(Sender: TObject);
    procedure AboutClick(Sender: TObject);
    procedure CardTimerTimer(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Procedure DisplayHint(Sender: TObject);
  end;

var
  CardForm: TCardForm;
  SaveFileName : String;
  NewOldCard: String;

implementation

uses
    NewCard, DelCard, About;
{$R *.DFM}
Procedure TCardForm.DisplayHint(Sender: TObject);
begin
     StatusBarTitle.Caption := Application.Hint;
end;

procedure TCardForm.FormCreate(Sender: TObject);
begin
     Application.OnHint := DisplayHint;
     try
        Application.HelpFile := ExtractFilePath (Application.ExeName) + 'Card.Hlp';
     except
        if MessageDlg ('帮助文件路径或帮助文件名错误!', mtError, [mbOk], 0) = mrOk then
           CardForm.Close;
     end;
end;

procedure TCardForm.ExitClick(Sender: TObject);
begin
     Close;
end;

procedure TCardForm.NewClick(Sender: TObject);
begin
     Save.Enabled := False;
     SaveAs.Enabled := False;
     Print.Enabled := False;
     Delete.Enabled := False;
     Find.Enabled := False;

     SpeedBtnSave.Enabled := False;
     SpeedBtnPrint.Enabled := False;
     SpeedBtnDelete.Enabled := False;
     SpeedBtnFind.Enabled := False;

     try
        TempTable.DatabaseName := ExtractFilePath (Application.ExeName);
        TempTable.TableName := 'Temp.db';
        NewTable.Close;
        NewTable.DatabaseName := ExtractFilePath (Application.ExeName);
        NewTable.TableName := 'Untitled.db';
        SaveFileName := 'Untitled.db';
        CardForm.Caption := '大师名片--'+NewTable.DatabaseName+NewTable.TableName;
        CardBatchMove.Execute;
        CardDataSource.DataSet := NewTable;
        NewTable.Open;
     except
        if MessageDlg ('数据库路径或数据表文件错误!', mtError, [mbOk], 0) = mrOk then
           CardForm.Close;
     end;
end;

procedure TCardForm.OpenClick(Sender: TObject);
begin
  if OpenCardDialog.Execute then
  begin
    CardTable.Close;
    CardTable.TableName := OpenCardDialog.FileName;
    CardForm.Caption := '大师名片--' + OpenCardDialog.FileName;
    SaveFileName := CardTable.TableName;
    CardDataSource.DataSet := CardTable;
    CardTable.Open;

    Save.Enabled := True;
    SaveAs.Enabled := True;
    Print.Enabled := True;
    Delete.Enabled := True;
    Find.Enabled := True;

    SpeedBtnSave.Enabled := True;
    SpeedBtnPrint.Enabled := True;
    SpeedBtnDelete.Enabled := True;
    SpeedBtnFind.Enabled := True;
  end;
end;

procedure TCardForm.SaveClick(Sender: TObject);
begin
     if SaveFileName = 'Untitled.db' then
        SaveAsClick(Sender);
end;

procedure TCardForm.SaveAsClick(Sender: TObject);
begin
  SaveCardDialog.FileName := SaveFileName;
  if SaveCardDialog.Execute then
  begin
    if SaveFileName = 'Untitled.db' then
       Begin
            NewTable.Close;
            CardTable.Close;
            RenameFile(SaveFileName, SaveCardDialog.Filename);
       end
    else
       Begin
            CardTable.Close;
            RenameFile(SaveFileName, SaveCardDialog.Filename);
       end;
       CardTable.TableName := SaveCardDialog.Filename;
       CardForm.Caption := '大师名片--' + CardTable.DataBaseName
                                       + ExtractFileName(CardTable.TableName);
       CardDataSource.DataSet := CardTable;
       CardTable.Open;
  end;
end;

procedure TCardForm.PrintClick(Sender: TObject);
var
   I : Integer;
begin
  Printer.BeginDoc;
  CardDataSource.DataSet.First;
  I := 0;
  while not CardDataSource.DataSet.EOF do
        begin
             Printer.Canvas.TextOut(100,100 + 60*I, CardDataSource.DataSet.FieldByName('Name').AsString);
             Printer.Canvas.TextOut(280,100 + 60*I, CardDataSource.DataSet.FieldByName('OfficeTel').AsString);
             Printer.Canvas.TextOut(640,100 + 60*I, CardDataSource.DataSet.FieldByName('HomeTel').AsString);
             Printer.Canvas.TextOut(1000,100 + 60*I, CardDataSource.DataSet.FieldByName('BP').AsString);
             CardDataSource.DataSet.Next;
             I := I + 1;
        end;
  Printer.EndDoc;
end;

procedure TCardForm.InsertClick(Sender: TObject);
begin
     NewOldCard := 'New';
     NewCardForm.ShowModal;
end;

procedure TCardForm.DeleteClick(Sender: TObject);
begin
     DelCardForm.ShowModal;
end;

procedure TCardForm.FindClick(Sender: TObject);
begin
     NewOldCard := 'Old';
     NewCardForm.ShowModal;
end;

procedure TCardForm.ContentClick(Sender: TObject);
begin
     Application.HelpCommand (HELP_CONTENTS, 0);
end;

procedure TCardForm.UseHelpClick(Sender: TObject);
begin
     Application.HelpCommand (HELP_HELPONHELP, 0);
end;

procedure TCardForm.AboutClick(Sender: TObject);
begin
     AboutBox.ShowModal;
end;

procedure TCardForm.CardTimerTimer(Sender: TObject);
begin
     StatusBarTime.Caption := TimeToStr(Time);
end;

procedure TCardForm.FormShow(Sender: TObject);
begin
     try
        CardTable.DatabaseName := ExtractFilePath (Application.ExeName);
        CardTable.TableName := 'Demo.db';
        SaveFileName := CardTable.TableName;
        CardTable.Open;
     except
        if MessageDlg ('数据库路径或数据表文件错误!', mtError, [mbOk], 0) = mrOk then
           CardForm.Close;
     end;
end;

end.
 

⌨️ 快捷键说明

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