📄 sysedit.pas
字号:
unit SysEdit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls,DB,DBTables, MMSystem, MPlayer;
type
TSysEditor = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
GroupBox1: TGroupBox;
Mode_1: TRadioButton;
Mode_2: TRadioButton;
Mode_3: TRadioButton;
Mode_4: TRadioButton;
Mode_5: TRadioButton;
Label1: TLabel;
cmb_Action: TComboBox;
Label2: TLabel;
edt_Hint: TEdit;
GroupBox2: TGroupBox;
Sound_1: TRadioButton;
btn_LoadSound: TButton;
Sound_2: TRadioButton;
cmb_Sound: TComboBox;
edt_SoundFile: TEdit;
Label4: TLabel;
edt_Program: TEdit;
btn_LoadProgram: TButton;
GroupBox3: TGroupBox;
ADate: TDateTimePicker;
ATime: TDateTimePicker;
AWeek: TDateTimePicker;
OpenDialog1: TOpenDialog;
procedure OKBtnClick(Sender: TObject);
procedure ADateChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cmb_SoundClick(Sender: TObject);
procedure btn_LoadSoundClick(Sender: TObject);
procedure Sound_1Click(Sender: TObject);
procedure Sound_2Click(Sender: TObject);
procedure btn_LoadProgramClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
SysEditor: TSysEditor;
implementation
uses Control;
{$R *.DFM}
procedure TSysEditor.OKBtnClick(Sender: TObject);
begin
// 输入合法性校验
if edt_Hint.Text = '' then
begin
Application.MessageBox('提示信息,请重新输入', '错误', MB_OK or MB_ICONEXCLAMATION);
edt_Hint.SetFocus;
Exit;
end;
Close;
ModalResult := mrOK;
end;
procedure TSysEditor.ADateChange(Sender: TObject);
begin
AWeek.DateTime:=ADate.DateTime;
end;
procedure TSysEditor.FormCreate(Sender: TObject);
var
mem:TMemoryStream;
begin
if ControlModule.SoundTable.RecordCount<1 then
begin
with ControlModule.SoundTable do
begin
Insert;
FieldByName('Name').AsString:='默认声音';
mem:=TMemoryStream.Create();
mem.LoadFromFile('默认声音.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='惊叹号';
mem:=TMemoryStream.Create();
mem.LoadFromFile('惊叹号.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='菜单弹出';
mem:=TMemoryStream.Create();
mem.LoadFromFile('菜单弹出.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='问题';
mem:=TMemoryStream.Create();
mem.LoadFromFile('问题.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='异常停止';
mem:=TMemoryStream.Create();
mem.LoadFromFile('异常停止.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='星号';
mem:=TMemoryStream.Create();
mem.LoadFromFile('星号.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='嘟嘟声';
mem:=TMemoryStream.Create();
mem.LoadFromFile('嘟嘟声.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='清空回收站';
mem:=TMemoryStream.Create();
mem.LoadFromFile('清空回收站.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='程序错误';
mem:=TMemoryStream.Create();
mem.LoadFromFile('程序错误.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
Insert;
FieldByName('Name').AsString:='退出Windows';
mem:=TMemoryStream.Create();
mem.LoadFromFile('退出Windows.wav');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Post;
mem.Free;
end;
end;
with ControlModule.SoundTable do
begin
First;
while not eof do
begin
cmb_Sound.Items.Add(FieldByName('Name').AsString);
Next;
end;
end;
end;
procedure TSysEditor.cmb_SoundClick(Sender: TObject);
var
filename:string;
//这里是从系统中取得一个临时文件
function gettemporyfilename:string;
const max_path=144;
var
lppathbuffer:pchar;
lpbuffer:pchar;
begin
getmem(lpbuffer,max_path);
getmem(lppathbuffer,max_path);
gettemppath(max_path,lppathbuffer);
gettempfilename(lppathbuffer,'tem',0,lpbuffer);
freemem(lppathbuffer,max_path);
gettempfilename(PChar(ExtractFilePath(Paramstr(0))),'tem',0,lpbuffer);
result:=strpas(lpbuffer);
freemem(lpbuffer,max_path);
end;
var
filestream:tfilestream;//a temp file
blobstream:tstream;//the WAVE blob
begin
with ControlModule.SoundTable do
begin
First;
while not eof do
begin
if FieldByName('Name').AsString=cmb_Sound.Text then
break;
Next;
end;
//为字段创建BLOB数据流
blobstream:=CreateBlobStream(FieldByName('Data'),bmRead);
if blobstream.size=0 then
begin
blobstream.free;
exit;
end;
blobstream.Position:=0;
//创建前删除同名的临时文件
if filename<>'' then
deletefile(filename);
//设置临时文件名
filename:=gettemporyfilename;
//为临时文件创建文件流
filestream:=tfilestream.create(filename,fmcreate or fmopenwrite);
//拷贝blob到临时文件中
filestream.copyfrom(blobstream,blobstream.size);
//释放流
filestream.free;
blobstream.free;
//播放WAVE文件
PlaySound(PChar(filename),0,SND_FILENAME + SND_ASYNC);
//删除临时文件
if filename<>'' then
deletefile(filename);
end;
end;
procedure TSysEditor.btn_LoadSoundClick(Sender: TObject);
begin
with self.OpenDialog1 do
begin
Title:='请选择声音文件所在的位置和文件名:';
InitialDir:=ExtractFilePath(Paramstr(0));
Filter := '声音文件(*.wav)|*.wav';
DefaultExt:= 'wav';
if Execute then
begin
edt_SoundFile.Text:=Filename;
PlaySound(PChar(FileName),0,SND_FILENAME + SND_ASYNC);
end;
end;
end;
procedure TSysEditor.Sound_1Click(Sender: TObject);
begin
self.btn_LoadSound.Enabled:=true;
self.edt_SoundFile.Enabled:=true;
self.cmb_Sound.Enabled:=false;
end;
procedure TSysEditor.Sound_2Click(Sender: TObject);
begin
self.btn_LoadSound.Enabled:=false;
self.edt_SoundFile.Enabled:=false;
self.cmb_Sound.Enabled:=true;
end;
procedure TSysEditor.btn_LoadProgramClick(Sender: TObject);
begin
with self.OpenDialog1 do
begin
Title:='请选择程序文件所在的位置和文件名:';
InitialDir:=ExtractFilePath(Paramstr(0));
Filter := '声音文件(*.exe)|*.exe';
DefaultExt:= 'exe';
if Execute then
begin
edt_Program.Text:=Filename;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -