PDA

View Full Version : سوال: نمایش مشخصات فایل ها و فولدر ها در یک عنصر لیست



E power
شنبه 28 بهمن 1391, 22:24 عصر
سلام دوستان و اساتید
عکسی که ضمیمه کردم رو ببینید
میخام با اون دکمه ی Open File یک یا چند فایل رو انتخاب کنم بعد مشخصاتشون رو توی اون عنصر GestureListView نشون بده
مثلا توی اون قسمت Name نام فایل رو - یا مثلا توی قسمت Type نوع فایل ( مثلا MP3 Format Sound ) همون چیزی که توی Tooltip فایل ها نشون میده...
ممنون میشم اگه کمک کنید
یه مقداری مث قسمت انتخاب فایل و فولدر برای نرم افزار Nero هستش...!
یه سؤال هم دارم : کار درستی کردم که برای این کار از عنصر TGestureListView استفاده کردم ؟
ممنون از لطفتون.

100166

BORHAN TEC
دوشنبه 30 بهمن 1391, 09:48 صبح
سلام

به جای TGestureListView از TListView استفاده کنید.
- برای بدست آوردن نام فایل:
FName := ExtractFileName(myFile);
- برای بدست آوردن نوع فایل:
uses
Winapi.ShellAPI;

function TForm1.GetFileType(Path: String): String;
var
FL: SHFILEINFO;
begin
if shGetFileInfo(PWideChar(Path), 0, FL, Sizeof(FL), SHGFI_TYPENAME) <> 0 then
Result := FL.szTypeName
else
Result := 'Unknown';
end;
- برای بدست آوردن اندازه:
function TMainWindow.Get_File_Size(Path: string): Int64;
var
rec: TSearchRec;
found: Integer;
begin
Result := 0;
found := FindFirst(Path, faAnyFile, rec);
if found = 0 then
Inc(Result, rec.Size);

FindClose(rec);
end;
- برای بدست آوردن ویژگی ها از TFile.GetAttribute از یونیت IOUtils استفاده کنید.
- برای بدست آوردن Path از ExtractFilePath استفاده کنید.

موفق باشید...

E power
دوشنبه 30 بهمن 1391, 15:34 عصر
خیلی ممنون از پاسختون
حالا اگه بخوام مثلا اون Attribute رو که به دست آوردم بریزم توی ستون مربوط به خودش باید چیکار کنم ؟ الان میخوام آیتم اضافه کنم ولی فقط به ستون اول اضافه میکنه...
از کد زیر استفاده کردم

lv1.Items.Add.Caption:='Test';

BORHAN TEC
دوشنبه 30 بهمن 1391, 20:53 عصر
باید از کدی مثل این استفاده کنید:
procedure TForm1.Button1Click(Sender: TObject);
var
ListItem: TListItem;
begin
ListItem := ListView1.Items.Add;
ListItem.Caption := 'سطر اول و ستون اول';
ListItem.SubItems.Add('سطر اول و ستون دوم');
ListItem.SubItems.Add('سطر اول و ستون سوم');

ListItem := ListView1.Items.Add;
ListItem.Caption := 'سطر دوم و ستون اول';
ListItem.SubItems.Add('سطر دوم و ستون دوم');
ListItem.SubItems.Add('سطر دوم و ستون سوم');
end;

E power
سه شنبه 01 اسفند 1391, 13:36 عصر
ببینید .. من مبتدی هستم سر در نمیارم که این Function ها رو دقیقا کجا باید اضافه کنم .. شاید اشتباهم به خاطر همینه
ولی تصویرشو گذاشتم ... الان Function مربوط به نوع فایل رو اضافه کردم .. خطا میده ... که توی تصویر می تونید ببینید!
خداوکیلی الان حتما این پست هم به خاطر گذاشتن تصویر خطا پاک میکنن :ناراحت:
100249

hossein_h62
سه شنبه 01 اسفند 1391, 15:14 عصر
ببینید .. من مبتدی هستم سر در نمیارم که این Function ها رو دقیقا کجا باید اضافه کنم .. شاید اشتباهم به خاطر همینه
ولی تصویرشو گذاشتم ... الان Function مربوط به نوع فایل رو اضافه کردم .. خطا میده ... که توی تصویر می تونید ببینید!
خداوکیلی الان حتما این پست هم به خاطر گذاشتن تصویر خطا پاک میکنن :ناراحت:
100249
شما کد رو فقط کپی کردین! اسم فرم شما با اونی که تو مثال دوستان گفتن فرق میکنه، پس برای شما اینجوری میشه :
function TFrmmain.GetFileType(Path: String): String;
var...

E power
سه شنبه 01 اسفند 1391, 16:19 عصر
خیلی ممنون .. لطف کردید پاسخ دادید...
ولی بازم خطا میده

[DCC Error] F_main.pas(27): E2003 Undeclared identifier: 'GetFileType'
[DCC Error] F_main.pas(27): E2029 ';' expected but '(' found
[DCC Error] F_main.pas(31): E2003 Undeclared identifier: 'Path'
[DCC Error] F_main.pas(32): E2003 Undeclared identifier: 'Result'
[DCC Fatal Error] ShowFiles.dpr(5): F2063 Could not compile used unit 'F_main.pas'

developing
چهارشنبه 02 اسفند 1391, 09:20 صبح
با سلام

برای اینکه بتونی یک تابع رو به عنوان بخشی از یک کلاس(در اینجا کلاس فرم) معرفی کنی باید در یکی از بخشهای public یا protected یا private اعلان تابع رو بیاری.

در این مورد خاص شما باید دستور زیر را در یکی از قسمت های بالا که گفته شد اضافه کنید.(مثلا من در قسمت private وارد می کنمش)
TFrmmain = class(TForm)

.
.


private

function GetFileType(Path: String): String;

E power
پنج شنبه 03 اسفند 1391, 17:37 عصر
با سلام

برای اینکه بتونی یک تابع رو به عنوان بخشی از یک کلاس(در اینجا کلاس فرم) معرفی کنی باید در یکی از بخشهای public یا protected یا private اعلان تابع رو بیاری.

در این مورد خاص شما باید دستور زیر را در یکی از قسمت های بالا که گفته شد اضافه کنید.(مثلا من در قسمت private وارد می کنمش)
TFrmmain = class(TForm)

.
.


private

function GetFileType(Path: String): String;

آقا ما اینم انجام دادیم و خطا داد ...
اصن سورس رو میزارم که خودتون هم ببینید

hossein_h62
یک شنبه 06 اسفند 1391, 09:59 صبح
سلام
فایل ضمیمه رو ببینید.

E power
یک شنبه 06 اسفند 1391, 19:59 عصر
دوستان شرمنده من چون مبتدی هستم سوالای زیادی دارم .. فعلا هم چون دارم روی همین برنامه کار میکنم ، همه ی سوالاتم رو ( که مربوط به همین برنامه میشن ) همینجا می پرسم
جناب Object Pascal (http://barnamenevis.org/member.php?75214-Object-Pascal) لطف کردند و کدهای درخواستی بنده رو گذاشتند اما اون آخری که مربوط به به دست آوردن Attribute ئه فایل ها میشه رو بنده متوجه نشدم که باید چیکار کنم .. میخام که به شکل حرفی نشون بده .. مثلا فایلی که صفت Archive و Hidden داره رو به صورت "AH" نشون بده...
---
مشکل دیگه که دارم اینه که مثلا چجوری می تونم اون قسمت که اندازه ی فایل رو نشون میده رو برحسب KB یا MB بنویسم؟
ممنون از دوستانی که پاسخ دادن:لبخند:

Felony
دوشنبه 07 اسفند 1391, 06:53 صبح
دلیل نمیشه چون سوالات مربوط به یک برنامه هست همرو یکجا تو یک تاپیک بپرسید !

خودتون هم کمی تلاش و جستجو و مطالعه کنید .