Project source
Form header (C++)
Form source (C++)
Form source (DFM)
Project source: CPPFileTest.cpp |
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop USERES("CPPFileTest.res"); USEFORM("fmCPPFileTest.cpp", Form1); //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; } //---------------------------------------------------------------------------Back to top |
Form header: fmCPPFileTest.h |
//--------------------------------------------------------------------------- #ifndef fmCPPFileTestH #define fmCPPFileTestH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "uoole.hpp" #include <ComCtrls.hpp> #include <ExtCtrls.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TPanel *Panel1; TListView *ListView1; TUOTextTarget *UOTextTarget1; TPanel *Panel2; TPanel *Panel3; TButton *Button1; void __fastcall UOTextTarget1Drop(TObject *Sender, TWinControl *Acceptor, const AnsiString dropText, int X, int Y); void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endifBack to top |
Form source: fmCPPFileTest.cpp |
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "fmCPPFileTest.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "uoole" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- // long __fastcall GetFileSize(const AnsiString FileName) { // Utility function to get the size of any given file. // Fixed version of one in fmxUtils - you have to call FindClose() // or you can get problems in NTFS long aLong; TSearchRec SearchRec; if (FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec)==0) { aLong = SearchRec.Size; FindClose(SearchRec); } else aLong = -1; return aLong; } void __fastcall TForm1::UOTextTarget1Drop(TObject *Sender, TWinControl *Acceptor, const AnsiString dropText, int X, int Y) { // A list of files (maybe containing only a single file) has been dropped // on us. Add the files to the list view. TUOTextTarget* uott = (TUOTextTarget*) Sender; int j; TListItem* aLi; int attr; AnsiString s; TDateTime fileDate; double fileSize; ListView1->Items->BeginUpdate(); // Efficiency // The list is in uott->DroppedLines, a TStringList for (j = 0; j < uott->DroppedLines->Count; j++) { // Get the name of the current file s = uott->DroppedLines->Strings[j]; // Add an item to the list aLi = ListView1->Items->Add(); // Its caption should be the file name aLi->Caption = s; // Get the file attributes for the file attr = FileGetAttr(s); // Is it a folder or a regular file? If you want more info, e.g., the // registration info, icon, etc. for this file type, then you can use // the function SHGetFileInfo() instead attr = FileGetAttr(s); if ((attr & faDirectory) == faDirectory) { // It's a directory aLi->SubItems->Add(""); // No size entry aLi->SubItems->Add("File Folder"); } else { // It's a regular file fileDate = FileDateToDateTime(FileAge(s)); // Date as a TDateTime fileSize = GetFileSize(s); // Size in bytes aLi->SubItems->Add(Format("%0.0n bytes", ARRAYOFCONST((fileSize)))); aLi->SubItems->Add("Regular File"); aLi->SubItems->Add(DateTimeToStr(fileDate)); }; } ListView1->Items->EndUpdate(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // Clear the list view ListView1->Items->BeginUpdate(); ListView1->Items->Clear(); ListView1->Items->EndUpdate(); } //---------------------------------------------------------------------------Back to top |
Form source: fmCPPFileTest.dfm |
object Form1: TForm1 Left = 165 Top = 199 Width = 570 Height = 319 Caption = 'Drag files onto this list view' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] PixelsPerInch = 96 TextHeight = 13 object Panel1: TPanel Left = 0 Top = 0 Width = 562 Height = 256 Align = alClient BevelOuter = bvNone BorderWidth = 3 Caption = 'Panel1' TabOrder = 0 object ListView1: TListView Left = 3 Top = 3 Width = 556 Height = 250 Align = alClient ColumnClick = False Columns = < item Caption = 'Name' Width = 225 end item Alignment = taRightJustify Caption = 'Size' Width = 125 end item Caption = 'Type' Width = 80 end item Caption = 'Modified' Width = 120 end> TabOrder = 0 ViewStyle = vsReport end end object Panel2: TPanel Left = 0 Top = 256 Width = 562 Height = 36 Align = alBottom BevelOuter = bvNone TabOrder = 1 object Panel3: TPanel Left = 431 Top = 0 Width = 131 Height = 36 Align = alRight BevelOuter = bvNone TabOrder = 0 object Button1: TButton Left = 29 Top = 6 Width = 97 Height = 25 Caption = 'Clear file list' TabOrder = 0 OnClick = Button1Click end end end object UOTextTarget1: TUOTextTarget AcceptorControl = ListView1 AcceptTextFormats = [dtfFiles] OnDrop = UOTextTarget1Drop Left = 64 Top = 64 end endBack to top |