【delphi开源代码栏目提醒】:本文主要为网学会员提供FMXWin.pas,希望对需要FMXWin.pas网友有所帮助,学习一下!
unit FMXWin;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, FileCtrl, Grids, Outline, DirOutln, Tabs, ExtCtrls, Menus;
type
TFMForm = class(TForm)
StatusBar: TPanel;
DirectoryPanel: TPanel;
FilePanel: TPanel;
DriveTabSet: TTabSet;
DirectoryOutline: TDirectoryOutline;
FileList: TFileListBox;
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
Move1: TMenuItem;
Copy1: TMenuItem;
Delete1: TMenuItem;
Rename1: TMenuItem;
Properties1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Floppy: TImage;
Fixed: TImage;
Network: TImage;
CDRom: TImage;
RamDisk: TImage;
procedure Exit1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DirectoryOutlineChange(Sender: TObject);
procedure FileListChange(Sender: TObject);
procedure DriveTabSetMeasureTab(Sender: TObject; Index: Integer;
var TabWidth: Integer);
procedure DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas;
R: TRect; Index: Integer; Selected: Boolean);
procedure File1Click(Sender: TObject);
procedure Delete1Click(Sender: TObject);
procedure Properties1Click(Sender: TObject);
procedure FileChange(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure FileListMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DirectoryOutlineDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
procedure DirectoryOutlineDragDrop(Sender, Source: TObject; X,
Y: Integer);
procedure FileListEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure DriveTabSetChange(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
private
procedure ConfirmChange(const ACaption, FromFile, ToFile: string);
public
{ Public declarations }
end;
var
FMForm: TFMForm;
implementation
uses FmxUtils, FAttrDlg, FChngDlg;
{$R *.dfm}
procedure TFMForm.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TFMForm.FormCreate(Sender: TObject);
var
Drive: Char;
AddedIndex: Integer;
begin
for Drive := 'a' to 'z' do
begin
case GetDriveType(PChar(Drive + ':\')) of
DRIVE_REMOVABLE:
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Floppy.Picture.Graphic);
DRIVE_FIXED:
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Fixed.Picture.Graphic);
DRIVE_CDROM:
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, CDRom.Picture.Graphic);
DRIVE_RAMDISK:
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, RamDisk.Picture.Graphic);
DRIVE_REMOTE:
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Network.Picture.Graphic);
else
AddedIndex := 0;
end;
if UpCase(Drive) = FileList.Drive then
DriveTabSet.TabIndex := AddedIndex;
end;
end;
procedure TFMForm.DriveTabSetChange(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
begin
if not (csDesigning in ComponentState) then
begin
AllowChange := True;
try
with DriveTabSet do
DirectoryOutline.Drive := Tabs[NewTab][1];
except
on EInOutError do
begin
AllowChange := False;
with DriveTabSet do
DirectoryOutline.Drive := Tabs[TabIndex][1];
raise;
end;
end;
end;
end;
procedure TFMForm.DirectoryOutlineChange(Sender: TObject);
begin
FileList.Directory := DirectoryOutline.Directory;
DirectoryPanel.Caption := DirectoryOutline.Directory;
end;
procedure TFMForm.FileListChange(Sender: TObject);
var
TheFileName: string;
begin
with FileList do
begin
if ItemIndex >= 0 then
begin
TheFileName := Items[ItemIndex];
FilePanel.Caption := Format('%s, %d bytes', [TheFileName, GetFileSize(TheFileName)]);
end
else FilePanel.Caption := '';
end;
end;
procedure TFMForm.DriveTabSetMeasureTab(Sender: TObject; Index: Integer;
var TabWidth: Integer);
var
BitmapWidth: Integer;
begin
BitmapWidth := TBitmap(DriveTabSet.Tabs.Objects[Index]).Width;
Inc(TabWidth, 2 + BitmapWidth);
end;
procedure TFMForm.DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas;
R: TRect; Index: Integer; Selected: Boolean);
var
Bitmap: TBitmap;
begin
Bitmap := TBitmap(DriveTabSet.Tabs.Objects[Index]);
with TabCanvas do
begin
Draw(R.Left, R.Top + 4, Bitmap);
TextOut(R.Left + 2 + Bitmap.Width, R.Top + 2, DriveTabSet.Tabs[Index]);
end;
end;
procedure TFMForm.File1Click(Sender: TObject);
var
FileSelected: Boolean;
begin
FileSelected := FileList.ItemIndex >= 0;
Open1.Enabled := FileSelected;
Dele