-
xml
L مي تواند دقيقا همچون يك Table براي شما عمل نمايد. در واقع شما مي توانيد با استفاده از XML اطلاعات خودتان را در قالب يك جدول ذخيره كنيد.
براي اين كار مي توانيد از كمپوننت ClientDataSet استفاده كنيد. (اين كمپوننت را مي توانيد در تب DataAccess بيابيد). در واقع اين كمپوننت يك In-Memory Table است. يعني اطلاعات خود را در حافظه نگهداري مي كند و به همين علت نيز فوق العاده سريع است.
نگاهي به كد زير بيانداريد و با Load كردن يك XML و درست كردن آن آشنا شويد:
ClientDataSet1.FileName := ExtractFilePath(
Application.ExeName) +
'test.xml';
if FileExists(ClientDataSet1.FileName) then
ClientDataSet1.Open
else
begin
//AddFieldDef version
with ClientDataSet1.FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name := 'ID';
DataType := ftAutoInc;
end; //with AddFieldDef do
with AddFieldDef do
begin
Name := 'First Name';
DataType := ftString;
Size := 20;
end; //with AddFieldDef do
with AddFieldDef do
begin
Name := 'Last Name';
DataType := ftString;
Size := 20;
end; //with AddFieldDef do
end; //with ClientDataSet1.FieldDefs
ClientDataSet1.CreateDataSet;
end; //else
همان طور كه در اين كد مشاهده مي كنيد در ابتدا سعي شده است كه فايل test.xml را كه در شاخه خود برنامه قرار دارد Load كنيم و در صورتي كه اين فايل پيدا نشد. آنگاه مي توان به سادگي (همان طور كه مي بينيد) اين فايل را از ابتدا تعريف كرد. فيلدهاي مورد نظر و مشخصات مورد نياز خود را وارد كنيم و همچنين در صورتي كه نياز بود با استفاده از IndexDefs يك يا چند Index جديد ساخت.
به چند نكته راجع به اين كد توجه كنيد:
1- با استفاده از متد FieldDefs.AddFieldDef مربوط به ClientDataSet مي توانيد يك فيلد جديد درست كنيد.
2- براي ساخت Index نيز مي توانيد از متد IndexDefs.AddIndexDef مربوط به ClientDataSet استفاده كرد.
2- هر فيلد مي توانيد شامل انواع زير باشد:
type TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd);
بنابراين شما به جاي ftString و يا ftAutoInc مي توانيد از هر كدام از اين ثابت ها استفاده كنيد.
همان طور كه مستحضريد به راحتي مي توانيد در XML حتي از BLOB هم استفاده كرده و در آن صدا يا تصوير ذخيره كنيد.
3- از متد CreateDataSet پس از ساخت فيلدهاي مورد نظرتون استفاده كنيد تا اين تغييرات تثبيت بشود.
4- يك ClientDataSet را مي توانيد به سادگي به يك كمپوننت DataSource وصل كنيد. پس از آن مي توانيد از هر كمپوننت Data-Aware مثل DBGrid براي Browse يا ويرايش اطلاعات استفاده كنيد.
5- با استفاده از Filter و Filtered مي توانيد به سادگي اطلاعات رو ----- كنيد و به علاوه به سادگي مي توانيد از Locate و FindKey و FindNearest براي جستجو در Tableتون استفاده كنيد.
6- در ClientDataSet هم مي توانيد از Lookupها و فيلدهاي محاسباتي استفاده كنيد. همچنين مي توانيد دو نوع فيلد ديگه به اسم InternalCalc و Aggregate رو هم استفاده كنيد. راهنماي مربوط به InternalCalc و Aggregate دلفي رو در اين جا آورده ام:
InternalCalc:
Retrieves values calculated at runtime by a client dataset and stored with its data (instead of being dynamically calculated in an OnCalcFields event handler). InternalCalc is only available if you are working with a client dataset. Values calculated for an InternalCalc field are stored and retrieved as part of the client dataset’s data.
Aggregate:
Retrieves a value summarizing the data in a set of records from a client dataset.
-
*** دو کد زير در دلفي 7 تحت ويندوزهاي 98، 2K و XP تست شده اند ***
يک روش ساده براي نمايش فايلهاي داخل يک folder همراه با Icon آنها و اعلام نوع فايل (استفاده از API)
يک ListView، يک ImageList و يک Buttonروي فرم قرار دهيد.
کد از نايتي
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ImgList, ShellAPI;
type
TForm1 = class(TForm)
ImageList1: TImageList;
Button1: TButton;
ListView1: TListView;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure InsertFilesInList( strPath: String; ListView: TListView; ImageList: TImageList);
var
pFile: Integer;
Icon: TIcon;
SearchRec: TSearchRec;
ListItem: TListItem;
FileInfo: SHFILEINFO;
begin
// Create a temporary TIcon
Icon := TIcon.Create;
ListView.Items.BeginUpdate;
try
// search for the first file
pFile := FindFirst(strPath + '*.*', faAnyFile, SearchRec);
while pFile = 0 do
begin
with ListView do
begin
// On directories and volumes
if ((SearchRec.Attr and FaDirectory <> FaDirectory) and
(SearchRec.Attr and FaVolumeId <> FaVolumeID)) then
begin
ListItem := ListView.Items.Add;
//Get The DisplayName
SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
SizeOf(FileInfo), SHGFI_DISPLAYNAME);
Listitem.Caption := FileInfo.szDisplayName;
// Get The TypeName
SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
SizeOf(FileInfo), SHGFI_TYPENAME);
ListItem.SubItems.Add(FileInfo.szTypeName);
//Get The Icon That Represents The File
SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,
SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
Icon.Handle := FileInfo.hIcon;
ListItem.ImageIndex := ImageList.AddIcon(Icon);
// Destroy the Icon
DestroyIcon(FileInfo.hIcon);
end;
end;
pFile := FindNext(SearchRec);
end;
finally
Icon.Free;
ListView.Items.EndUpdate;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Assign a Imagelist to the ListView
ListView1.SmallImages := ImageList1;
// Show Listview in Report Style and add 2 Columns
ListView1.ViewStyle := vsReport;
ListView1.Columns.Add;
ListView1.Columns.Add;
InsertFilesInList('C:\', ListView1, ImageList1);
end;
end.
گاهي بد نيست براي انجام بعضي کارها از خود سيستم کمک بگيريم. کد زير اندازه فايلي که انتخاب ميشود را بر ميگرداند. بد نيست، به درد Text-fileها ميخوره .
يک Button، يک Label، يک OpenDialog روي فرم قرار دهيد.
کد از کريس بري
procedure TForm1.Button1Click(Sender: TObject);
var
SearchRec: TSearchRec;
begin
if OpenDialog1.Execute then
if FindFirst(OpenDialog1.FileName, faAnyFile, SearchRec) = 0 then
Label1.Caption := FloatToStrF(SearchRec.Size/1048576, ffFixed, 7, 2)+' MB';
FindClose(SearchRec);
end;
-
جناب کارلوس عزیز
من بتازگی یک پک دلفی خریده ام که روش نوشته دلفی 8 ایا این درسته
ضمنا یه کتاب آموزشی و یک کتاب مرجع واسه این دلفی معرفی کنین که خیلی باحاله
من که کف کردم :o :o :wink:
ممنون از آموزشهای خوبتون :wink:
-
سلام دوست من
آره دلفی نسخه 8 را شما خریدی ولی اون یه کم پیشرفت هست و asp هم پشتیبانی میکنه ولی برای شروع کار من به شما نسخه 7 رو پیشنهاد میکنم که بیشتر برای برنامه نویسی windows application
هست نه کار های .net بهترین کتابی که من طی این مدت قبولش دارم .
کتاب برنامه نویسی با دلفی ویراست دوم یا حالا بالاتر
نویسنده:مهندس عین الله جعفر نژاد قمی و مهندس رمضان عباس نژاد
هستش که خیلی برای کار با شروع خوبه و پیچیده توضیح نداده .قیمت هم 4000 تومن هستش/
-
-
سلام راستی در بخش انجمن پیشنهادات در رابطه با مدیریت برای سایت نظر بدید یادتون نر که داره دیر میشه .متشکر.
-
-
سلام
دستت درد نکنه داداشی .متشکر.
-
-
سلام
دوست عزیز خوش آمدید لطفا فونت رو درست کن متشکر.