📄 umain.~pas
字号:
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, SUIForm, JvScrollMax, SUIButton, ComCtrls, StdCtrls,
TinyDB, DB, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid, Grids, DBGrids,
dxTLClms, Spin;
type
TForm1 = class(TForm)
suiForm1: TsuiForm;
JvScrollMax1: TJvScrollMax;
JvScrollMaxBand1: TJvScrollMaxBand;
JvScrollMaxBand2: TJvScrollMaxBand;
Splitter1: TSplitter;
Panel1: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
Panel2: TPanel;
suiButton1: TsuiButton;
Label1: TLabel;
FileNameEdit: TEdit;
BrowseButton: TsuiButton;
CreateDatabaseButton: TsuiButton;
GroupBox5: TGroupBox;
Label11: TLabel;
Label14: TLabel;
CompCheckBox: TCheckBox;
CompAlgoComboBox: TComboBox;
CompLevelComboBox: TComboBox;
GroupBox6: TGroupBox;
Label12: TLabel;
Label13: TLabel;
EncryptCheckBox: TCheckBox;
EncAlgoComboBox: TComboBox;
EncPwdEdit: TEdit;
TinyTable1: TTinyTable;
TinyDatabase1: TTinyDatabase;
Label2: TLabel;
DefaultFileNameEdit: TEdit;
suiButton2: TsuiButton;
Label3: TLabel;
suiButton4: TsuiButton;
suiButton5: TsuiButton;
suiButton6: TsuiButton;
suiButton7: TsuiButton;
suiButton8: TsuiButton;
dxDBGrid1: TdxDBGrid;
DataSource1: TDataSource;
Memo1: TMemo;
MobileTollFileNameEdit: TEdit;
suiButton3: TsuiButton;
suiButton9: TsuiButton;
dxDBGrid2: TdxDBGrid;
dxDBGridMaskColumn1: TdxDBGridMaskColumn;
dxDBGridMaskColumn2: TdxDBGridMaskColumn;
dxDBGridMaskColumn3: TdxDBGridMaskColumn;
dxDBGridMaskColumn4: TdxDBGridMaskColumn;
dxDBGridMaskColumn5: TdxDBGridMaskColumn;
dxDBGridMaskColumn6: TdxDBGridMaskColumn;
dxDBGrid3: TdxDBGrid;
TabSheet6: TTabSheet;
dxDBGrid4: TdxDBGrid;
TabSheet7: TTabSheet;
dxDBGrid5: TdxDBGrid;
dxDBGrid3Column1: TdxDBGridMaskColumn;
dxDBGrid3Column2: TdxDBGridMaskColumn;
dxDBGrid3Column3: TdxDBGridMaskColumn;
dxDBGrid3Column4: TdxDBGridMaskColumn;
dxDBGrid3Column5: TdxDBGridMaskColumn;
dxDBGrid3Column6: TdxDBGridMaskColumn;
dxDBGrid4Column1: TdxDBGridMaskColumn;
dxDBGrid4Column2: TdxDBGridMaskColumn;
dxDBGrid4Column3: TdxDBGridMaskColumn;
dxDBGrid4Column4: TdxDBGridMaskColumn;
dxDBGrid4Column5: TdxDBGridMaskColumn;
dxDBGrid4Column6: TdxDBGridMaskColumn;
Panel3: TPanel;
suiButton10: TsuiButton;
SpinEdit1: TSpinEdit;
Label4: TLabel;
Label5: TLabel;
SpinEdit2: TSpinEdit;
dxDBGrid1Column1: TdxDBGridMaskColumn;
dxDBGrid1Column2: TdxDBGridMaskColumn;
dxDBGrid1Column3: TdxDBGridMaskColumn;
dxDBGrid1Column4: TdxDBGridMaskColumn;
dxDBGrid1Column5: TdxDBGridMaskColumn;
dxDBGrid1Column6: TdxDBGridMaskColumn;
suiButton11: TsuiButton;
TabSheet8: TTabSheet;
dxDBGrid5Column1: TdxDBGridMaskColumn;
dxDBGrid5Column2: TdxDBGridMaskColumn;
dxDBGrid5Column3: TdxDBGridMaskColumn;
dxDBGrid5Column4: TdxDBGridMaskColumn;
dxDBGrid5Column5: TdxDBGridMaskColumn;
dxDBGrid5Column6: TdxDBGridMaskColumn;
dxDBGrid5Column7: TdxDBGridMaskColumn;
dxDBGrid5Column8: TdxDBGridMaskColumn;
dxDBGrid6: TdxDBGrid;
dxDBGrid6Column1: TdxDBGridMaskColumn;
dxDBGrid6Column2: TdxDBGridMaskColumn;
dxDBGrid6Column3: TdxDBGridMaskColumn;
dxDBGrid6Column4: TdxDBGridMaskColumn;
dxDBGrid6Column5: TdxDBGridMaskColumn;
dxDBGrid6Column6: TdxDBGridMaskColumn;
dxDBGrid6Column7: TdxDBGridMaskColumn;
dxDBGrid6Column8: TdxDBGridMaskColumn;
TinyTable2: TTinyTable;
suiButton12: TsuiButton;
procedure OpenDataBase;
function ISOpenDataBase:boolean;
procedure FormCreate(Sender: TObject);
procedure CreateDatabaseButtonClick(Sender: TObject);
procedure BrowseButtonClick(Sender: TObject);
procedure suiButton2Click(Sender: TObject);
procedure suiButton3Click(Sender: TObject);
procedure suiButton9Click(Sender: TObject);
procedure suiButton1Click(Sender: TObject);
procedure suiButton4Click(Sender: TObject);
procedure suiButton5Click(Sender: TObject);
procedure suiButton6Click(Sender: TObject);
procedure suiButton7Click(Sender: TObject);
procedure suiButton8Click(Sender: TObject);
procedure suiButton11Click(Sender: TObject);
procedure suiButton10Click(Sender: TObject);
procedure TinyTable2AfterClose(DataSet: TDataSet);
procedure TinyTable2AfterOpen(DataSet: TDataSet);
procedure suiButton12Click(Sender: TObject);
private
ISCloseDataBase:boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TTinyDatabase.GetCompressAlgoNames(CompAlgoComboBox.Items);
TTinyDatabase.GetEncryptAlgoNames(EncAlgoComboBox.Items);
ISCloseDataBase:=True;
end;
function Tform1.ISOpenDataBase:boolean;
begin
if ISCloseDataBase then
Begin
MessageBox(handle,'请先打开数据库文件!','提示',Mb_iconinformation);
Result:=False;
End
else Result:=True;
end;
procedure TForm1.CreateDatabaseButtonClick(Sender: TObject);
var
Ok: Boolean;
begin
if Trim(FileNameEdit.Text)='' then Exit;
//创建数据库
Ok := TinyDatabase1.CreateDatabase(
FileNameEdit.Text, //数据库文件名
CompCheckBox.Checked, //是否压缩
TCompressLevel(CompLevelComboBox.ItemIndex), //压缩程度
CompAlgoComboBox.Text, //压缩算法
EncryptCheckBox.Checked, //是否加密
EncAlgoComboBox.Text, //加密算法
EncPwdEdit.Text, //口令
False //是否CRC32
);
//创建表
TinyDatabase1.DatabaseName := FileNameEdit.Text;
TinyDatabase1.Password := EncPwdEdit.Text;
TinyDatabase1.CreateTable('ChinamobileTable', [
FieldItem('呼叫类型', ftString, 4),
FieldItem('电话号码', ftString, 20),
FieldItem('日期', ftString, 22),
FieldItem('移动费', ftString, 10),
FieldItem('长话费', ftString, 10),
FieldItem('漫游类型', ftString, 4),
FieldItem('年份', ftInteger),
FieldItem('月份', ftInteger)
] );
//创建索引
TinyDatabase1.CreateIndex('ChinamobileTable', 'IDIndex', [], ['电话号码']);
TinyDatabase1.CreateIndex('ChinamobileTable', 'DateIndex', [], ['日期']);
if Ok then
MessageBox(Handle,'创建数据库成功!','提示',Mb_iconinformation)
else
MessageBox(Handle,'创建数据库失败!','提示',Mb_iconinformation);
end;
procedure TForm1.BrowseButtonClick(Sender: TObject);
var
SaveDialog: TSaveDialog;
begin
SaveDialog := TSaveDialog.Create(Self);
SaveDialog.Filter := 'TinyDatabase Files(*.tdb)|*.tdb|Any Files(*.*)|*.*';
SaveDialog.DefaultExt := '.tdb';
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
if SaveDialog.Execute then
FileNameEdit.Text := SaveDialog.FileName;
SaveDialog.Free;
end;
procedure TForm1.suiButton2Click(Sender: TObject);
var
OpenDialog: TOpenDialog;
begin
OpenDialog := TOpenDialog.Create(Self);
OpenDialog.Filter := 'TinyDatabase Files(*.tdb)|*.tdb';
OpenDialog.DefaultExt := '.tdb';
OpenDialog.Options := OpenDialog.Options;
if OpenDialog.Execute then
DefaultFileNameEdit.Text := OpenDialog.FileName;
OpenDialog.Free;
end;
procedure TForm1.suiButton3Click(Sender: TObject);
var
OpenDialog: TOpenDialog;
begin
OpenDialog := TOpenDialog.Create(Self);
OpenDialog.Filter := 'TxT Files(*.TxT)|*.TxT';
OpenDialog.DefaultExt := '.TxT';
OpenDialog.Options := OpenDialog.Options;
if OpenDialog.Execute then
MobileTollFileNameEdit.Text := OpenDialog.FileName;
OpenDialog.Free;
end;
procedure TForm1.OpenDataBase;
begin
TinyTable1.Close;
TinyTable1.DatabaseName := DefaultFileNameEdit.Text;
TinyTable1.Password := EncPwdEdit.Text;
TinyTable1.TableName := 'ChinaMobileTable';
TinyTable1.IndexName := 'IDIndex';
TinyTable1.Open;
end;
procedure TForm1.suiButton9Click(Sender: TObject);
var i,TempPosition:integer;
str1,str2:WideString;
CallType, // 呼叫类型
ID, // 电话号码
date, // 日期
MobilToll, // 移动费
LongDistanceToll, // 长话费
RoveType:WideString; // 漫游类型
begin
if Trim(MobileTollFileNameEdit.Text)='' then
Begin
MessageBox(handle,'请先选择话费文件!','提示',Mb_iconinformation);
Exit;
End;
if Trim(DefaultFileNameEdit.Text)='' then
Begin
MessageBox(handle,'请先选择文件名!','提示',Mb_iconinformation);
Exit;
End;
Memo1.Lines.LoadFromFile(MobileTollFileNameEdit.Text);
//打开数据库
Form1.OpenDatabase;
For i:=0 to Memo1.Lines.Count-1 do
begin
str1:=Memo1.Lines.Strings[i];
TempPosition:=Pos('¥',str1);
if TempPosition=0 then
begin
messageBox(handle,'1','23',Mb_iconinformation);
exit;
end;
end;
For i:=0 to Memo1.Lines.Count-1 do
begin
str1:=Memo1.Lines.Strings[i];
str2:=str1;
CallType:=Copy(str2,1,2); // 呼叫类型
TempPosition:=Pos(' ',str2);
Delete(str2,1,TempPosition);
TempPosition:=Pos(' ',str2);
ID:=Copy(str2,1,TempPosition-1); // 电话号码
Delete(str2,1,TempPosition);
TempPosition:=Pos(' ',str2);
Delete(str2,1,TempPosition);
TempPosition:=Pos(' ',str2);
date:=Copy(str2,1,11); // 日期
str2:=str1;
TempPosition:=Pos('¥',str2);
Delete(str2,1,TempPosition);
TempPosition:=Pos(' ',str2);
MobilToll:=Copy(str2,1,TempPosition-1); // 移动费
TempPosition:=Pos('¥',str2);
Delete(str2,1,TempPosition);
TempPosition:=Pos(' ',str2);
LongDistanceToll:=Copy(str2,1,TempPosition-1); // 长话费
str2:=str1;
RoveType:=Copy(str2,Length(str2)-2,2); // 漫游类型
//添加记录
TinyTable1.AppendRecord([Trim(CallType),Trim(ID),Trim(date),Trim(MobilToll),Trim(LongDistanceToll),Trim(RoveType),strtoint(SpinEdit1.Text),Strtoint(SpinEdit2.Text)]);
end;
TinyTable2.Close;
TinyTable2.Open;
MessageBox(handle,'处理数据成功!','提示',Mb_iconinformation);
end;
procedure TForm1.suiButton1Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=1;
end;
procedure TForm1.suiButton4Click(Sender: TObject);
begin
if not ISOpenDataBase then Exit;
PageControl1.ActivePageIndex:=2;
end;
procedure TForm1.suiButton5Click(Sender: TObject);
begin
if not ISOpenDataBase then Exit;
PageControl1.ActivePageIndex:=3;
end;
procedure TForm1.suiButton6Click(Sender: TObject);
begin
if not ISOpenDataBase then Exit;
PageControl1.ActivePageIndex:=4;
end;
procedure TForm1.suiButton7Click(Sender: TObject);
begin
if not ISOpenDataBase then Exit;
PageControl1.ActivePageIndex:=5;
end;
procedure TForm1.suiButton8Click(Sender: TObject);
begin
if not ISOpenDataBase then Exit;
PageControl1.ActivePageIndex:=6;
end;
procedure TForm1.suiButton11Click(Sender: TObject);
begin
if not ISOpenDataBase then Exit;
PageControl1.ActivePageIndex:=7;
end;
procedure TForm1.suiButton10Click(Sender: TObject);
begin
if Trim(DefaultFileNameEdit.Text)='' then
Begin
MessageBox(handle,'请先选择文件名!','提示',Mb_iconinformation);
PageControl1.ActivePageIndex:=1;
Exit;
End;
TinyTable2.Close;
TinyTable2.DatabaseName := DefaultFileNameEdit.Text;
TinyTable2.Password := EncPwdEdit.Text;
TinyTable2.TableName := 'ChinaMobileTable';
TinyTable2.IndexName := 'IDIndex';
TinyTable2.Open;
MessageBox(handle,'数据库打开成功!','提示',Mb_iconinformation);
end;
procedure TForm1.TinyTable2AfterClose(DataSet: TDataSet);
begin
ISCloseDataBase:=True;
end;
procedure TForm1.TinyTable2AfterOpen(DataSet: TDataSet);
begin
ISCloseDataBase:=False;
end;
procedure TForm1.suiButton12Click(Sender: TObject);
begin
if Trim(DefaultFileNameEdit.Text)='' then
Begin
MessageBox(handle,'请先选择文件名!','提示',Mb_iconinformation);
Exit;
End;
Form1.OpenDatabase;
TinyTable1.Close;
TinyTable1.EmptyTable;
TinyTable1.Open;
MessageBox(handle,'数据库已清空!','提示',Mb_iconinformation);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -