📄 falterdata.pas
字号:
unit fAlterData;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,uFunctions, StdCtrls, Buttons, Mask, DBCtrls,dMain,ShellApi;
type
TfrmAlterData = class(TForm)
btnOk: TBitBtn;
btnCancel: TBitBtn;
Label1: TLabel;
dbedtAlbum: TDBEdit;
Label2: TLabel;
dbedtTitle: TDBEdit;
Label3: TLabel;
dbedtArtist: TDBEdit;
Label5: TLabel;
GroupBox1: TGroupBox;
Label4: TLabel;
dbedtSongFileName: TDBEdit;
dbmLyric: TDBMemo;
procedure FormShow(Sender: TObject);
procedure dbedtsOnKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dbedtOnExit(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
{ Private declarations }
procedure DrawButtons;
function CheckBeforeSave : Boolean;
protected
procedure WMDropFiles(var Msg: TMessage);message wm_DropFiles;
public
{ Public declarations }
constructor Create(aAction : TFrmAlterDataAction);reintroduce;
end;
var
frmAlterData: TfrmAlterData;
implementation
{$R *.dfm}
{ TForm1 }
constructor TfrmAlterData.Create(aAction: TFrmAlterDataAction);
begin
inherited Create(nil);
DragAcceptFiles(Handle, True);
case aAction of
faInsert : begin
dModule.cdsMain.Append;
Caption := 'Inserting new lyric';
end;
faEdit : begin
if dModule.cdsMain.RecordCount > 0 then
begin
dModule.cdsMain.Edit;
Caption := 'Editing lyric';
end
else
begin
dModule.cdsMain.Append;
Caption := 'Inserting new lyric';
end;
end;
end;
if ShowModal = mrOk then dModule.cdsMain.Post
else dModule.cdsMain.Cancel;
end;
procedure TfrmAlterData.DrawButtons;
var
bmOk: TBitmap;
bmCancel: TBitmap;
begin
bmOk := TBitmap.Create;
bmCancel := TBitmap.Create;
try
bmCancel.Width := 15;
bmCancel.Height := 15;
DrawFrameControl(bmCancel.Canvas.Handle, Rect(0, 0, bmCancel.Width, bmCancel.Height), DFC_CAPTION, DFCS_CAPTIONCLOSE + DFCS_FLAT);
btnCancel.Glyph := bmCancel;
bmOk.Width := 15;
bmOk.Height := 15;
DrawFrameControl(bmOk.Canvas.Handle, Rect(0, 0, bmOk.Width, bmOk.Height), DFC_MENU, DFCS_MENUCHECK);
btnOk.Glyph := bmOk;
finally
bmOk.Free;
bmCancel.Free;
end;
end;
procedure TfrmAlterData.FormShow(Sender: TObject);
begin
DrawButtons;
end;
procedure TfrmAlterData.WMDropFiles(var Msg: TMessage);
var
hDrop : THandle ;
FName: array[0 .. 502] of AnsiChar;
FCount: integer;
begin
Screen.Cursor := crHourglass;
try
hDrop := THandle(Msg.WParam);
FCount := DragQueryFile(hDrop, $FFFFFFFF, FName, 500);
if fCount > 1 then
ShowMsgDialog('Lyrics Organizer','Only one file can be dropped',mtError,[mbOK])
else
begin
DragQueryFile( hDrop, 0, FName, 500 );
dbedtSongFileName.Text := StrPas(FName);
dbedtSongFileName.Field.Value := StrPas(FName);
if not FileExists(dbedtSongFileName.Text) then
begin
dbedtSongFileName.Text := '';
dbedtSongFileName.Field.Value := '';
ShowMsgDialog('Lyrics Organizer','Only file can be dropped',mtError,[mbOK])
end;
end;
DragFinish ( hDrop);
finally
Screen.Cursor := crDefault;
end;
end;
procedure TfrmAlterData.dbedtsOnKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_RETURN : begin
Key := 0;
if ActiveControl = dbedtSongFileName then dbedtAlbum.SetFocus
else
if ActiveControl = dbmLyric then
begin
if (dbmLyric.Lines.Count = 0) and (dbmLyric.Text = '') then
begin
dbmLyric.Clear;
SelectNext(ActiveControl,true,true);
end;
end
else SelectNext(ActiveControl,true,true);
end;
end;
end;
procedure TfrmAlterData.dbedtOnExit(Sender: TObject);
begin
if Sender is TDBEdit then TDBEdit(Sender).Field.Value := TDBEdit(Sender).Text
else
if Sender is TDBMemo then TDBMemo(Sender).Field.Value := TDBMemo(Sender).Text
end;
procedure TfrmAlterData.btnOkClick(Sender: TObject);
begin
if CheckBeforeSave then ModalResult := mrOk;
end;
function TfrmAlterData.CheckBeforeSave: Boolean;
begin
Result := True;
if dbedtArtist.Text = '' then
begin
ShowMsgDialog('Lyrics Organizer','The ARTIST field must not be empty',mtError,[mbOK]);
dbedtArtist.SetFocus;
Result := False;
Exit;
end;
if dbedtTitle.Text = '' then
begin
ShowMsgDialog('Lyrics Organizer','The TITLE field must not be empty',mtError,[mbOK]);
dbedtTitle.SetFocus;
Result := False;
Exit;
end;
end;
procedure TfrmAlterData.btnCancelClick(Sender: TObject);
begin
if ShowMsgDialog('Lyrics Organizer','Cancel lyric changes?',mtConfirmation,[mbYes,mbCancel]) = mrYes then
ModalResult := mrCancel;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -