ToDoForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ToDoForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   Grids, DBGrids, Db, DBTables, StdCtrls, DBCtrls, ExtCtrls;
  6. type
  7.   TToDoFileForm = class(TForm)
  8.     Splitter1: TSplitter;
  9.     Panel1: TPanel;
  10.     DBNavigator1: TDBNavigator;
  11.     DBMemo1: TDBMemo;
  12.     Table1: TTable;
  13.     DataSource1: TDataSource;
  14.     DBGrid1: TDBGrid;
  15.     procedure FormCreate(Sender: TObject);
  16.   private
  17.     { Private declarations }
  18.   public
  19.     procedure DropFiles (var Msg: TWmDropFiles);
  20.       message wm_DropFiles;
  21.     procedure CopyData (var Msg: TWmCopyData);
  22.       message wm_CopyData;
  23.   end;
  24. var
  25.   ToDoFileForm: TToDoFileForm;
  26. implementation
  27. {$R *.DFM}
  28. uses
  29.   ShellApi;
  30. procedure TToDoFileForm.FormCreate(Sender: TObject);
  31. begin
  32.   // eventually create the table
  33.   if not Table1.Exists then
  34.     Table1.CreateTable;
  35.   // activate the table
  36.   Table1.Open;
  37.   // accept dragging to the form
  38.   DragAcceptFiles (Handle, True);
  39. end;
  40. procedure TToDoFileForm.DropFiles(var Msg: TWmDropFiles);
  41. var
  42.   nFiles, I: Integer;
  43.   Filename: string;
  44. begin
  45.   // get the number of dropped files
  46.   nFiles := DragQueryFile (Msg.Drop, $FFFFFFFF, nil, 0);
  47.   // for each file
  48.   try
  49.     for I := 0 to nFiles - 1 do
  50.     begin
  51.       // allocate memory
  52.       SetLength (Filename, 80);
  53.       // read the file name
  54.       DragQueryFile (Msg.Drop, I, PChar (Filename), 80);
  55.       // normalize file
  56.       Filename := PChar (Filename);
  57.       // add a new record
  58.       Table1.InsertRecord ([Filename, '']);
  59.     end;
  60.   finally
  61.     DragFinish (Msg.Drop);
  62.   end;
  63.   // open the (last) record in edit mode
  64.   Table1.Edit;
  65.   // move the input focus to the memo
  66.   DBMemo1.SetFocus;
  67. end;
  68. procedure TToDoFileForm.CopyData(var Msg: TWmCopyData);
  69. var
  70.   Filename: string;
  71. begin
  72.   // restore the window if minimized
  73.   if IsIconic (Application.Handle) then
  74.     Application.Restore;
  75.   // extract the filename from the data
  76.   Filename := PChar (Msg.CopyDataStruct.lpData);
  77.   // insert a new record
  78.   Table1.Insert;
  79.   // set up the file name
  80.   Table1.FieldByName ('Filename').AsString := Filename;
  81.   // move the input focus to the memo
  82.   DBMemo1.SetFocus;
  83. end;
  84. end.