Delphi 7. Нужно перетащить файл в TListBox так, чтобы загорелось только имя файла, а не полный путь (см. код программы)
Вот весь код программы.
=========================================
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer,activeX, comobj,
ComCtrls;
type
TForm1 = class(TForm)
BurnButton: TButton;
FilesListBox: TListBox;
UpdateRecordersButton: TButton;
RecordersComboBox: TComboBox;
DiscVolumeNameEdit: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
ProgressBar1: TProgressBar;
LogListBox: TListBox;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure WMDropFiles(var msg: TMessage); message WM_DROPFILES;
public
{ Public declarations }
end;
var
Form1: TForm1;
=
implementation
{$R *.dfm}
uses shellapi;
///-----------------------------------------------------------------------------
Function SHCreateStreamOnFileEx( pszFile: PWChar; grfMode:DWORD; dwAttributes:DWORD;
fCreate:BOOL; pstmTemplate:IStream; var ppstm:IStream):DWORD;stdcall;
external 'shlwapi.dll' name 'SHCreateStreamOnFileEx';
//------------------------------------------------------------------------------
var
cfile:array[0..999] of char;
procedure TForm1.WMDropFiles(var msg : TMessage);
var
i, n : word;
hdrop : dword;
begin
hdrop := msg.WParam;
n := DragQueryFile(hdrop, $ffffffff, nil, 0);
for i := 0 to n-1 do
begin
DragQueryFile(hdrop, i, @cfile, 1000);
FilesListBox.Items.Add(cfile);
end;
msg.Result := 0;
inherited;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FilesListBox.Clear;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle,true);
end;
end.
====================================
Что изменить после "procedure TForm1.WMDropFiles(var msg : TMessage);", чтобы в FilesListBox попало ТОЛЬКО имя файла ?
Спасибо за подсказку. Нашел решение следующим кодом:
FilesListBox.Items.Add(ExtractFileName(cfile));