Перевод с Delphi на C++ Builder
Добавлено: 18 ноя 2010, 15:12
Код: Выделить всё
procedure TFormMain.TraiteMessage(var Msg: TMsg; var Handled: Boolean);
var
NombreDeFichiers, Size, i:integer;
NomDuFichierStr:string;
NomDuFichier:array[0..255] of char;
begin
if Msg.message=WM_DROPFILES then
begin
NombreDeFichiers:= DragQueryFile(Msg.wParam, $FFFFFFFF, NomDuFichier, SizeOf(NomDuFichier));
for i:=0 to NombreDeFichiers-1 do
begin
Size:= DragQueryFile(Msg.wParam, i, NomDuFichier, SizeOf(NomDuFichier));
NomDuFichierStr:=NomDuFichier;
if ListFiles.Items.IndexOf(NomDuFichierStr)=-1 then
ListFiles.Items.Add(NomDuFichierstr);
end;
end;
end;
procedure TFormMain.FormCreate(Sender: TObject);
begin
FillChar(F, SizeOf(F), 0);
DragAcceptFiles(ListFiles.handle, True);
Application.OnMessage := TraiteMessage;
if FileExists(ChangeFileExt(Application.ExeName, '.lst')) then
ListFiles.Items.LoadFromFile(ChangeFileExt(Application.ExeName, '.lst'));
end;
procedure TFormMain.ChkLock1Click(Sender: TObject);
var X: Integer;
begin
ChkLock1.Caption:= LblCoche[ChkLock1.Checked];
for X:=0 to ListFiles.Count-1 do
ListFiles.Checked[X]:= ChkLock1.Checked;
ListFilesClickCheck(nil);
end;
procedure TFormMain.ListFilesKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=46) and (ListFiles.ItemIndex>-1) then
begin
try
if ListFiles.Checked[ListFiles.ItemIndex] then
CloseHandle(F[ListFiles.ItemIndex]);
ListFiles.Items.Delete(ListFiles.ItemIndex);
MajStatusBar;
except
on E:Exception do MessageDlg('Impossible de libйrer le fichier '+ListFiles.Items[ListFiles.ItemIndex], mtError, [mbOK], 0);
end;
end;
end;
procedure TFormMain.MajStatusBar;
var X, Nb: Integer;
begin
Nb:= 0;
for X:=0 to ListFiles.Count-1 do
if ListFiles.Checked[X] then
Inc(Nb);
if ListFiles.Count>0 then
StatusBar.SimpleText:= ' '+IntToStr(Nb)+' fichier(s) lockй(s) sur '+IntToStr(ListFiles.Count)+' fichier(s)'
else StatusBar.SimpleText:= StatusBar.Hint;
end;
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SetLength(F, 0);
ListFiles.Items.SaveToFile(ChangeFileExt(Application.ExeName, '.lst'));
end;
procedure TFormMain.ToutsupprimerClick(Sender: TObject);
var X: Integer;
begin
ListFiles.Items.BeginUpdate;
for X:= ListFiles.Count-1 downto 0 do
begin
try
case TMenuItem(Sender).Tag of
1: begin // tout
if ListFiles.Checked[X] then
CloseHandle(F[X]);
ListFiles.Items.Delete(X);
end;
2: begin // coche
if ListFiles.Checked[X] then
begin
CloseHandle(F[X]);
ListFiles.Items.Delete(X);
end;
end;
3: begin // non coche
if not ListFiles.Checked[X] then
ListFiles.Items.Delete(X);
end;
end;
except
on E:Exception do MessageDlg('Impossible de libйrer le fichier '+ListFiles.Items[X], mtError, [mbOK], 0);
end;
end;
ListFiles.Items.EndUpdate;
MajStatusBar;
end;
end.