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

📄 falterdata.pas

📁 delphi的一个歌词管理程序
💻 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 + -