تبليغاتX
Learning About Computer & Internet
خانهایمیلآرشیوRss
Search

نكات مفيد براي كار در محيط دلفي  

موضوع: DELPHI جمعه یکم دی 1385 22:4

محيط دلفي براي برنامه نويسي يكي از بهترين محيطهاي برنامه نويسي است گذشته از كاركرد داخلي و كمپايلر آن كه بسيار قوي و سريع است، محيط آن يعني IDE آنهم قدرت بسيار زيادي دارد كه باعث شده يكي از بهترين اديتورها باشد. در اين مقاله من سعي بر اين داشته ام تا با ارائه يك سري از نكات و كليدهاي ميانبر كه مي توانند براي كار در دلفي بسيار مفيد و كارا باشند، كمك كنم تا شما بتوانيد با قدرت بيشتر به برنامه نويسي و كار در اين محيط قدرتمند ادامه دهيد.
در قسمت اول مقاله كه در حال حاضر در مقابل شماست من يك سري از كليدهاي ميانبر و تركيبي مورد استفاده در IDE دلفي را بصورت ليست وار و همراه يك توضيح كوچك آورده ام. با توجه به اينكه اين مطالب حاصل تجربه هاي خودم در كار با دلفي (از 1 تا 7) بوده ممكنه كه يك سري موارد ديگري هم باشد كه من تا حالا برخورد نداشتم كه دوستان عزيز ميتونند به اين ليست اضافه كنند و نام خود را در انتهاي اين مقاله ذكر كنند و حتما يك نسخه از آن را براي من ارسال كنند.
اميدوارم كه اين سري مقالات با كمك شما در اثر مرور زمان بهتر و مفيد تر شود.
دوستان عزيز برنامه نويس ممكنه كه شما مدتها با دلفي مشغول برنامه نويسي بوده باشيد اما من يقين دارم كه در اين ليست نكات و روشهاي جديدي را خواهيد آموخت.

قسمت اول - كليدهاي ميانبر و تركيبي:

جستجو در متن بصورت مستقيم:
براي اينكار كليدهاي Ctrl+E را بفشاريد و بدنبال آن شروع به تايپ كلمه مورد نظر كنيد نتيجه آن را خود ببينيد. براي اينكه به كلمه بعدي برويد كافيست كليد F3 را بزنيد.

ايجاد فرورفتگي در كد:
بعضي اوقات - كه خيلي هم پيش مي‌آيد - لازم است كه يك مقداري از متن را بصورت بلوك شده به جلو و يا عقب ببريم. منظور دندانه دار كردن متن است كه به خوانايي برنامه كمك مي كند. براي اينكار مي تونيد از كليد Ctrl +Shift+I براي جلو بردن و Ctrl+Shift+U براي عقب برگرداندن متن بلوك شده استفاده كنيد.

پرش به قسمت تعريف يك شي (Object):
براي اينكه ببنيد شي مورد نظرتون (از قبيل VCL, Procedure, Function,...) در كجا و چطور تعريف شده مي توانيد كليد Crtl رو پايين نگه داشته و روي شي مورد نظر Click كنيد.

براي تغيير حالت كاراكترها:
شما مي توانيد يك قسمت از متن (كه ممكن است با حروف بزرگ و يا كوچك تايپ شده باشد) را انتخاب كنيد و با زدن كليدهاي Ctrl+o+u به ترتيب تمامي حروف كوچك آن قسمت از متن را به حروف بزرگ و تمامي حروف بزرگ آنرا به حروف كوچك تبديل كنيد.
براي تعيير حالت يك كلمه نيز ميتوانيد روي كلمه مورد نظر رفته و كليدهاي Ctrl+k+f براي بزرگ كردن و كليدهاي ctrl+k+e را براي كوچك كردن حروف آن كلمه بكار برد.

درست كردن ماكرو متني:
اين امكان بسيار مفيد است و مي توانيد بسياري از كارهاي نوشتاري را كاهش دهد با اينكار شما ميتوانيد يك سري از كارهاي تكراري كه روي متون انجام مي دهيد را بصورت ماكرو در آورده و از آنها به راحتي استفاده كنيد. براي شروع به ضبط ماكرو كليدهاي ctrl+shift+r را بفشاريد و آن سري كارهايي را كه مي خواهيد را انجام دهيد و سپس براي اينكه به كار ضبط ماكرو پايان دهيد كليدهاي ctrl+shift+r را دوباره بزنيد. حال براي استفاده از ماكرو كافيست در هر جا كه لازم بود كليدهاي Ctrl+Shift+P را بفشاريد.

انتخاب متن بصورت مربعي:
اگر شما از كهنه كارهاي كامپيوتر باشيد حتما از زمان داس يادتون هست كه برنامه اي بود به نام PE2 كه يكي از امكانات بسيار جالبش اين بود كه يك مربع از متن رو ميتوانستين انتخاب
كنيد و آنرا كپي يا حذف كنيد. بله درست متوجه شديد در محيط دلفي هم شما اينكار را ميتوانيد انجام دهيد اما نه به مشكلي PE2 بلكه اينكار را ميتوانيد فقط با گرفتن كليد Alt و كشيدن
موس روي متن انجام دهيد. هر چند ممكن است در نگاه اول زياد اين امكان مفيد به نظر نيايد ولي بعضي وقتهاي خيلي كار را راحت ميكنه، كه حتماً تجربه خواهيد كرد.


گذاشتن علامت روي متن:
اين كار كه به BookMark معروف است بسيار مفيد و كارا مي باشد. در هنگامي كه شما روي قسمتي از متن برنامه كار ميكنيد و مي خواهيد به يك قسمت ديگر برويد ممكن است براي برگشتن به مكان اول خود كمي مشكل پيدا كنيد. ولي شما ميتوانيد با زدن چند دكمه به محل مورد نظرتون باز گرديد. براي اينكار در خطي كه قصد داريد علامت بگذاريد كليدهاي Ctrl+Shift+0..9 را بفشاريد. منظور اينست كه كليدهاي ctrl+Shift را نگه داريد و يكي از اعداد 0 تا 9 را وارد كنيد تا آن خط به همان شماره علامت گذاري شود و سپس هر جا كه خواستيد برويد و سپس هر بار كه كليد Ctrl را نگه داريد و شماره مورد نظر را وارد كنيد به همان خط باز خواهيد گشت. البته توجه داشته باشيد كه فقط مي توانيد 10 خط را با اين روش علامت گذاري بكنيد و براي برداشتن علامت ها كافيست روي همان خط دوباره كليد Ctrl+shift و شماره‌اي كه براي آن خط وارد كرده ايد را بفشاريد با اينكار علامت آن خط برداشته مي شود.


ايجاد كلاس مورد نظر :
شما هنگامي كه در قسمت Private و يا Public يك type، روال يا تابع درست كرديد لازم داريد كه قسمتي را براي قرار دادن كدهاي مربوط به آن روال يا تابع را ايجاد كنيد. براي اينكار شما پس از اينكه نام تابع را تايپ كرديد مي توانيد كليدهاي Ctrl+Shift+C را فشار دهيد تا دلفي يك قسمت براي نوشتن كدهاي مورد نظرتان ايجاد كند.

ظاهر كردن پنجره Code insight :
شما حتما به اهميت و مفيد بودن اين قسمت دلفي واقفيد كه در هنگام كد نويسي تا چه حد مي تواند كارها را راحت كند. بله در هنگام وارد كردن كدها بعد از وارد كردن نام يك كلاس و يا Object با زدن يك نقطه (.) پنجره Code Insight‌ ظاهر مي شود. حال در بعضي وقتها شما ممكن است كه نقطه را قبلا وارد كرده باشيد و يا در مواقع ديگر اين پنجره ظاهر نشود. در
اين صورت براي اينكه پنجره را ظاهر كنيد بايد دوباره نقطه را وارد كنيد ولي راه اسانتري هم وجود دارد و آن اينست كه كليدهاي Ctrl+Speacebar را فشار دهيد.


ظاهر كردن پنجره Code Parameter:
همانند بالا در هنگام ظاهر شدن Hint مربوط به راهنماي توابع كه معمولاً بعد از گذاشتن پرانتز مربوط ظاهر ميشود و در مورد پارامترهاي لازم مي باشد نيز مي توانيد از كليدهاي Ctrl+Shift+SpaceBar استفاده كنيد.

رفتن از قسمت تعريف توابع و روالها به قسمت كد آنها:
هميشه اين نياز وجود خواهد داشت كه شما در هنگامي كه داريد به دنبال يك روال در قسمت type ميگرديد بعد از پيدا كردن نام آن مي خواهيد كه خود آن تابع يا روال را نيز ببنيد. براي اينكار خوب حتما نام آن را جستجو ميكنيد ولي يك راه آسانتر اينست كه شما روي نام آن تابع قرار گيريد و كليدهاي Ctrl+Shift+Up/Down را بزنيد. در اينحالت اگر روي كد تابع باشيد به قسمت تعريف آن خواهيد رفت.



خوب اين هم قسمت اول اين مقاله كه اميدوارم مفيد بوده باشد.

من منتظر شنيدن نظرات و تجربيات شما هستم.

استفاده از اين مقاله در سايتها و ديگر رسانه ها بشرط ذكر نام و نشاني نويسنده بلامانع مي باشد.
نوشته شده توسط هادی قنبری | لینک ثابت |

ترفندهاي دلفي شماره 001 (IDN Exclusive Collection 001) 

موضوع: DELPHI جمعه یکم دی 1385 22:4

*** دو کد زير در دلفي 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;


نوشته شده توسط هادی قنبری | لینک ثابت |

چگونه يك TRichEdit با پس زمينه Tile بسازيم؟  

موضوع: DELPHI جمعه یکم دی 1385 22:3

به نظر مي آيد راهي براي Transparent كردن يك RichEdit عادي يا نقاشي كردن يك تصوير در پس زمينه آن به صورت Tile وجود ندارد.

اما در ويندوز 2000 يك راه عقبي وجود دارد كه با كمك آن مي شود اين كار رو انجام داد. در اين ويندوز شما مي توانيد كنترل خود را با استفاده از مقدار دهي ثابت WS_EX_LAYERED به استيل(Style)هاي توسعه يافته ويندوز و سپس فراخواني تابع APIي به نام SetLayeredWindowAttributes به صورت Transparent در بياوريد.

مثال پايين يك كنترل TRichView با پراپرتي DrawStyle است. بسته به مقدار آن، كنترل پس زمينه Transparent خواهد داشت يا خودش را با alpha transparency نقاشي مي كند.


constructor MyTransparentRichEdit.Create(AOwner: TComponent);
begin
inherited
Create(AOwner);
FDrawStyle := dsNormal;
end;

procedure MyTransparentRichEdit.CreateParams(var Params:
TCreateParams);
begin
inherited
CreateParams(Params);
if not (csDesigning in ComponentState) then
begin
Params.Style := Params.Style or WS_POPUP;
Params.ExStyle := Params.ExStyle + WS_EX_LAYERED;
end;
end;

procedure MyTransparentRichEdit.CreateWnd;
var
XPoint: TPoint;
begin
if not
(csDesigning in ComponentState) then
begin
XPoint := TWinControl(Owner).ClientToScreen(POINT(Left, Top));
Left := XPoint.X;
Top := XPoint.Y;
end;
inherited CreateWnd;
case FDrawStyle of
ds_Transparent:
SetLayeredWindowAttributes(Handle, ColorToRGB(Color), 255, LWA_COLORKEY);
ds_NotDistinctly:
SetLayeredWindowAttributes(Handle, 0, 150, LWA_ALPHA);
end;
end;

procedure MyTransparentRichEdit.SetDrawStyle(AValue: TDrawStyle);
begin
if
FDrawStyle <> AValue then
begin
FDrawStyle := AValue;
RecreateWnd;
end;
end;


نوشته شده توسط هادی قنبری | لینک ثابت |

چگونه از فايلهاى PDF در دلفى استفاده كنيم؟  

موضوع: DELPHI جمعه یکم دی 1385 22:3

چگونه از فايلهاى PDF در دلفى استفاده كنيم؟
1. دلفى را آغاز كرده و Component | Import ActiveX Control را انتخاب كنيد.
2. به دنبال "(Acrobat Control for ActiveX (Version x.x" بگرديد و به Install را بزنيد.
3. نام پالتى كه كمپوننت مورد نظر بايد در آن نصب شود را انتخاب كنيد.
4. Install را كليك كنيد.
5. Packageي كه قرار است كمپوننت در آن نصب شود را انتخاب كنيد يا يك Package جديد براى كنترل جديد TPdf بسازيد.
6. بر روي OK كليك كنيد.
7. دلفى به شما پيغام مى‌دهد كه آيا مايل به Rebuild كردن Package جديد/تغييريافته هستيد؟
8. Yes را كليك كنيد. دلفى به شما پيغام مى‌دهد كه كمپوننت TPdf نصب شده است.
9. Package را ببنديد و به دلفى اجازه دهيد كه آن را Save كند.
10. حالا كمپوننت در تب ActiveX موجود مى‌باشد.
13. كمپوننت TPdf را روي فرم بكشيد.
14. با استفاده از Object Inspector پراپرتي src را مطابق آدرس يك فايل PDF كه روى كامپيوتر شما يا وب موجود مى‌باشد قرار دهيد. حالا تنها كارى كه بايد انجام دهيد تغيير اندازه كمپوننت مورد نظر است.



نكات:
1. اگر شما ActiveX مربوطه را نداريد، همين حالا آن را از سايت www.adobe.com داون لود كنيد. چون براي اين مثال ضرورى است.
2. مي‌توانيد آخرين مرحله (مرحله 14) را در زمان اجرا يا RunTime انجام دهيد. بنابراين شما مى‌توانيد هر فايلى را در اجرا باز كرده و آنرا تغيير اندازه دهيد.

نوشته شده توسط هادی قنبری | لینک ثابت |

استفاده از Flash در دلفى  

موضوع: DELPHI جمعه یکم دی 1385 22:3

Flash يكي از فرمتهاي محبوب وب است و به راحتي مي توان براي ساخت Interfaceها در برنامه از آن استفاده كرد. بعضي از برنامه نويسان معتقدند استفاده از Flash سبب سنگين شدن برنامه، وابستگي برنامه به ActiveX فلش، امكان نداشتن تبادل اطلاعات بين Flash و دلفي و مشكلات ديگري مي شود.
در اين مقاله خواهيد ديد كه به راحتي تمامي اين مشكلات را مي توانيد رفع كنيد.

نصب ActiveX فلش
براي نصب ActiveX فلش به Component>Import ActiveX Control برويد. در ليست مربوطه به دنبال Shockwave Flash بگرديد. در صورتي كه آن را پيدا نكرديد. دكمه Add را زده و به آدرس زير برويد:
WIN_DIRECTORY\System32\Macromed\Flash
و فايل Flash.ocx را انتخاب كنيد و سپس Install را بزنيد.
خوب ... تا به اينجا كار نصب اكتيوايكس فلش تمام است. كمپوننت مربوطه را ميتوانيد در پالت ActiveX پيدا كنيد.
نكته: در صورتي كه شاخه مذكور در كامپيوتر شما وجود ندارد، احتمالا شما Flash Player را نصب نكرده‌ايد.
البته نگران نباشيد، با شيوه اي كه در اين مقاله ذكر شده كاربر شما بدون نياز به نصب Flash Player مي تواند برنامه شما را اجرا كند.

استفاده از اكتيوايكس فلش
اكتيوايكس فلش را مي‌توانيد در پالت ActiveX پيدا كنيد. آن را روي فرمتان قرار دهيد. از پراپرتيMovie ميتوانيد براي Load كردن فايل SWF خود استفاده كنيد.
به باقى پراپرتى‌هاى اكتيوايكس فلش دقت كنيد:
(البته توضيحات پراپرتى‌ها را به صورت انگليسى آورده‌ام. چون نوشتن آنها به صورت فارسى زياد جالب نيست. به خاطر اينكه پر از لغاتى هستند كه ترجمه‌شون غير ممكن است.)
ReadyState (get only)
0=Loading, 1=Uninitialized, 2=Loaded, 3=Interactive, 4=Complete.

TotalFrames (get only) Returns the total number of frames in the movie. This is not available until the movie has loaded. Wait for ReadyState = 4.

FrameNum (get or set) The currently displayed frame of the movie. Setting this will advance or rewind the movie.

Playing (get or set) True if the movie is currently playing, false if it is paused.

Quality (get or set) The current rendering quality (0=Low, 1=High, 2=AutoLow, 3=AutoHigh). This is the same as the QUALITY parameter.

ScaleMode (get or set) Scale mode (0=ShowAll, 1= NoBorder, 2 = ExactFit). This is the same as the SCALE parameter.

AlignMode (get or set) The align mode consists of bit flags. (Left=+1, Right=+2, Top=+4, Bottom=+8). This is the same as the SALIGN parameter.

BackgroundColor (get or set) Override the background color of a movie. An integer of the form red*65536+green*256+blue use -1 for the default movie color.

Loop (get or set) True if the animation loops, false to play once. Same as the MOVIE parameter.
Movie (get or set) The URL source for the Flash Player movie file. Setting this will load a new movie into the control. Same as the MOVIE parameter.

متدها:

Play() Start playing the animation.

Stop() Stop playing the animation.

Back() Go to the previous frame.

Forward() Go to the next frame.

Rewind() Go to the first frame.

SetZoomRect(int left, int top, int right, int bottom) Zoom in on a rectangular area of the movie. Note that the units of the coordinates are in twips (1440 units per inch). To calculate a rectangle in Flash, set the ruler units to Points and multiply the coordinates by 20 to get TWIPS.

Zoom(int percent) Zoom the view by a relative scale factor. Zoom(50) will double the size of the objects in the view. Zoom(200) will reduce the size of objects in the view by one half.

Pan(int x, int y, int mode) Pan a zoomed in movie. The mode can be: 0 = pixels, 1 = % of window.

نصب اكتيوايكس فلش روي كامپيوتر كاربر
براي اين كه كاربر نهايي بتواند از برنامه شما استفاده كند بايد اكتيوايكس فلش را داشته باشد. در واقع شما بايد اكتيوايكس مربوطه را براي او نصب كند. روش كار به اين گونه است كه شما بايد چك كنيد كه آيا كاربر نهايي اكتيوايكس فلش را بر روي دستگاه خود نصب كرده است يا نه و در صورتي كه وي اين اكتيوايكس را ندارد برنامه شما بايد به طور اتوماتيك آن را نصب كنيد.
براي پياده سازي اين روش ما بايد در ابتدا OCX فلش را با استفاده از Resourceها در فايل Exe خود مخلوط كنيم. در صورتي كه شما با Resourceها آشنايي نداريد نگران نباشيد. مراحل زير را انجام دهيد و باقي كار را به دلفي بسپاريد: 1- يك فايل Text بسازيد و اسم آن را SWFActivex.rc بگذاريد
2- خطوط زير را در آن قرار دهيد:
FlashOCX EXTRA Flash.ocx
و فايل Flash.ocx را از مسيري كه قبلا ذكر شد در شاخه پروژه خود قرار دهيد.
3- آن را ضبط كنيد و با استفاده از BRCC32.EXE كه در شاخه Bin محل نصب دلفي وجود دارد، آن را كامپايل كنيد. (خط زير را در Command Line تايپ كنيد يا به سادگي فايل SWFActivex.rc را بر روي فايل BRCC32.EXE دراگ (Drag) كنيد.
BRCC32.EXE MyExeRes.rc
خوب حالا شما يك فايل Resource كامپايل شده داريد به نام SWFActivex.res داريد.
4- خطوط زير را در در سورس كد فرم اصلي خود قرار دهيد:
...
...
implementation
...
...
...
{$R *.dfm}
{$R SWFActivex.RES}
5- حالا اين تابع را به كد خود اضافه كنيد:
function GetResourceFile(S : string; FilePath : string) : Boolean;
var
Res : TResourceStream;
begin
Result := True;
if S <> '' then
begin
if
FindResource(hInstance, PChar(S), Pchar('EXTRA')) = 0 then
begin
Result := False;
Exit;
end;
try
Res := TResourceStream.Create(hInstance, S, Pchar('EXTRA'));
except
Result := False;
Exit;
end;
if FileExists(FilePath) then DeleteFile(FilePath);
try
Res.SaveToFile(FilePath);
except
Result := False;
end;
Res.Free;
end;
end;

6- اين تابع را نيز اضافه كنيد:
function GetSystemDir : string;
var
SysPath : PChar;
begin
GetMem(SysPath, MAX_PATH + 1);
GetSystemDirectory(SysPath, MAX_PATH);
Result := StrPas(SysPath)+ '\';
FreeMem(SysPath, MAX_PATH + 1);
end;


7- خوب! حالا بگذاريد به مهمترين قسمت قضيه يعني Register كردن OCX مربوطه بپردازيم. در ابتدا يونيت ActiveX را به ليست uses خود اضافه كنيد. سپس تابع زير را نيز به سورس خود اضافه نماييد.
function RegisterOCX( OCXFileName : string; Flag : Boolean) : Boolean;
var
OCXHand: THandle;
RegFunc: TDllRegisterServer;
OCXFileNamePtr : PChar;
begin
Result := True;
if not FileExists( OCXFileName ) then
begin
Result := False;
Exit;
end;
GetMem(OCXFileNamePtr, Length(OCXFileName) + 1);
StrPCopy(OCXFileNamePtr, OCXFileName);
OCXHand:= LoadLibrary(OCXFileNamePtr);
FreeMem(OCXFileNamePtr, Length(OCXFileName) + 1);
OCXFileNamePtr := nil;
if OCXHand = 0 then
begin
Result := False;
Exit;
end;
if Flag then
RegFunc:= GetProcAddress(OCXHand, 'DllRegisterServer')
else
RegFunc:= GetProcAddress(OCXHand, 'DllUnregisterServer');

if RegFunc = S_OK then
Result := False;

FreeLibrary(OCXHand);
end;

8- اين سه متغيير را نيز به كد خود اضافه كنيد:
var
FilePath : string;
FlashOCX: TShockwaveFlash;



9- تابع زير را نيز اضافه كنيد:
function CreateFlashOCX : Boolean;
var
FilePath : string;
begin
Result := True;
FilePath := GetSystemDir + 'Macromed\Flash\Flash.ocx';
if not GetResourceFile('FlashOCX', FilePath) then
begin
Result := False;
Exit;
end;
try
FlashOCX := TShockwaveFlash.Create(nil);
except
if not
RegisterOCX(FilePath, True) then
Result := False
else
try
FlashOCX := TShockwaveFlash.Create(nil);
except
Result := False;
end;
end;
end;



10- كدهاي زير را به انتهاي فايل خود، قبل از .end اضافه كنيد:

initialization
CoInitialize(nil);
if not CreateFlashOCX then
ShowMessage('An Error Occured!' + #13 + 'Program dosent run correctly!');
finalization
if
Assigned(FlashOCX) then
begin
try
FlashOCX.Free;
FlashOCX := nil;
except
end
;
DeleteFile(FilePath);
end;
CoUninitialize;
end.

end.

11- در اونت OnCreate فرم خودتون به راحتي از كمپوننت مربوطه استفاده كنيد:
FlashOCX.Parent := Form1;
FlashOCX.Movie := ExtractFilePath(Application.ExeName) + 'Main.swf';
FlashOCX.Play;

Resize شدن درست
يكي از مشكلاتي كه ممكن است با اكتيو ايكس فلش پيدا كنيد مشكل Resize شدن است. همه ما مي دانيم كه يكي از مهمترين مزاياي فلش برداري بودن آن است و اين برداري بودن سبب مي شود كه فايل فلش بتواند در هر اندازه به درستي نشان داده شود. ولي متاسفانه فرم خود را در RunTime تغييراندازه مي دهيد فايل Flash تغيير اندازه نمي يابد. در اين جا يك راه حل ساده براي حل اين مشكل بيان شده كه به خوبي كار ميكند. كافي است كمپوننت فلش را در يك پانل قرار دهيد و پراپرتي Align آن را برابر alClient بگذاريد. حالا پراپرتي Anchor پانل خود را به گونه‌اي تنظيم كنيد كه مايل هستيد كمپوننت فلش Resize شود. سپس در اونت OnResize فرم خود، خطوط زير را درج كنيد:
FlashOCX.Parent := nil;
FlashOCX.Parent := Self;

غيرفعال كردن كليك سمت راست
مساله ديگرى كه ذهن بسيارى از برنامه‌نويسان را مشغول مى‌كند منوى Popup فلش است. غيرفعال كردن اين منو بسيار ساده است. كافي است يك كمپوننت TApplicationEvents را روي فرم خود قرار دهيد و كد زير را در اونت OnMessage اين كمپوننت بنويسيد:

if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd := FlashOCX) then
begin
PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
Handled := True;
end;


ارتباط بين Flash و دلفى
يكى از مسائل بسيار مهم و اساسى ديگر برقرارى ارتباط بين Flash و دلفي است. فرض كنيد در فايل SWF خود چند Button داشته باشيد و بخواهيد وقتى كاربر روى هر كدام از اين اونتها كليك كرد فرم خاصى باز شود. در اين صورت چه بايد بكنيد. پياده سازى اين كار بسيار ساده است. كافى است در Flash براى هر كدام از دكمه‌هاى خود يك Action تعريف كنيد و از دستور FSCommand استفاده نماييد. از يك مقدار دلخواه مثل fMatn يا fSearch استفاده كنيد و در دلفى نيز از اونت OnFSCommand به صورت زير استفاده كنيد:

if command = 'fMain' then fMain.ShowModal;
if command = 'fSearch' then fSearch.ShowModal;



خوب! فكر كنم با توضيحاتى كه در اين مقاله اومده، قانع شده باشيد كه Flash يكى از بهترين راه حلها براى طراحى Interfaceهاست.
تا مقاله بعد .... به اميد ديدار
نوشته شده توسط هادی قنبری | لینک ثابت |

آشنايى با FastReport ساده‌ترين و قوى‌ترين كمپوننت گزارش‌سازى  

موضوع: DELPHI جمعه یکم دی 1385 22:2

كمي تاريخچه
FastReport قبلا با نام FreeReport عرضه مي شد و يك محصول رايگان بود. ولي بعدها به FastReport تغيير نام پيدا كرد و به صورت تجاري عرض گرديد. البته هنوز كمپوننت FreeReport توسعه مي يابد و نسخه هاي جديدتر آن را از سايت www.fastreport.com يا www.fastreport.ru مى‌توانيد داون لود كنيد.

آشنايي كلي با شكل گزارش سازي در FastReport
اين كمپوننت يك محيط Report Desinger در اختيار شما قرار مي دهد كه با استفاده از آن مي توانيد Reportها را طراحي كنيد، اسكريپت نويسي كنيد و يا فرم هاي جديد براي انتخابي كردن گزارش خود ايجاد كنيد. براي وارد شدن به اين Report Desinger بايد از كمپوننت TfrReport استفاده كنيد. كافي است يك كمپوننت TfrReport روي فرم بگذاريد و روي آن دابل كليك كنيد يا كليد سمت راست را زده و گزينه Design Report را انتخاب كنيد. ممكن است اين محيط كه موسوم به Desinger است در ابتدا كمي شلوغ به نظر بيايد ولي در انتهاي اين مقاله آموزشي كاملا با استفاده از اين Desinger آشنا خواهيد شد.
شما مي توانيد گزارش هاي خود را در فايلهايي با پسوند frf. ضبط كنيد و در موقع نياز هر كدام از آنها را Load نماييد و همچنين اگر برنامه شما تنها يك گزارش دارد مي توانيد آن گزارش را در خود فايل EXE نگهداري كنيد.

ساخت يك گزارش ساده
يك كمپوننت TfrReport را روي فرم قرار دهيد و روى آن دابل كليك كنيد تا به محيط Report Designer برويم. خوب ... مى‌خواهيم براى شروع يك گزارش بسيار ساده بسازيم.

از ToolBar سمت چپ گزينه Insert rectangle object را انتخاب كنيد. آيكن اين گزينه شبيه به آيكن كمپوننتMemo است.
مىبينيد كه وقتى اين كمپوننت را در محل مربوطه قرار مى‌دهيد پنجره اى باز مي شود:
همانند شكل در قسمت بالا تايپ كنيد: "سلام دوستان!" و سپس اين پنجره را ببنديد.
خوب! اولين گزارش خودمون رو ساختيم. حالا به سادگى گزارش را Save كنيد و اسم اون رو بگذاريد Test. اين فايل رو در همون جايى ضبط كنيد كه پروژه تون در اونجا Save شده است.
حالا Designer رو ببنديد و يك Button روي فرمتون بگذاريد و و در اونت OnClick آن كد زير رو بنويسيد:
frReport1.LoadFromFile('Test.frf');
frReport1.ShowReport;
خوب! كار ساخت اولين گزارشمون تمام شد. ما خيلي ساده در ابتدا گزارشى را كه قبلا ساخته بوديم Load كرديم و بعدش هم از متد ShowReport براى نمايش گزارش استفاده كرديم. البته مى‌توانستيم از متد PrintPreparedReportDlg براى چاپ مستقيم گزارش بدون نمايش پيش‌نمايش يا Preview استفاده كنيم.
نكته: در صورتى كه بخواهيم ميتوانم با True كردن پراپرتي StoredInDFM گزارش را در EXE خود ضبط كنيم. در آن صورت لازم نيست گزارش را ضبط كنيم و همچنين احتياجى نيست كه آن را در كد Load بكنيم.
اين حالت تنها وقتى مفيد است كه برنامه شما فقط يك گزارش داشته باشد.
خوب! ما تا حالا اصول استفاده از FastReport رو ياد گرفتيم. در باقي اين مقاله آموزشى گزارش‌هاى پيشرفته‌ترى مى‌سازيم و آرام آرام شما با FastReport احساس راحتى مى‌كنيد.

ساخت يك گزارش ديگر
خوب ... يك كمپوننت TTable رو از پالت BDE روى فرمتون قرار دهيد و پراپرتي DatabaseName آن را برابر DBDEMOS و پراپرتى TableName را برابر Biolife قرار دهيد.
يك كمپوننت TfrReport و همچنين يك كمپوننت TfrDBDataSet روى فرم قرار دهيد و پراپرتى DataSet آن را برابر نام Table1 قرار دهيد و پراپرتى DataSet كمپوننت TfrReport را برابر frDBDataSet1 قرار بدهيد. حالا با كليك بر روى كمپوننت frReport1 وارد محيط Designer شده و Tools>Tools>Insert DB Fields را انتخاب كنيد.
خوب شما انتخاب كنيد و آن را روي فرم قرار دهيد. پنجره اي شبيه به شكل زير نمايش داده مى‌شود:
تمام فيلدها را انتخاب كنيد و OK را بزنيد.....
خوب تقريبا كارمان تمام است. اگر خوب نگاه كنيد مي بينيد كه دو باند روى فرم گزارش اضافه شد كه يكى Page Header و ديگرى Master Data نام دارد. File>Preview را انتخاب كنيد و ببينيد گزارش شما چه شكلى خواهد بود. گزارش خودتان را Save كنيد و از روشى كه قبلا ذكر شد براى نمايش گزارش در زمان اجرا يا Run-Time استفاده كنيد.

ساخت گزارش‌هاى پيشرفته‌تر
به موارد زير توجه كنيد:
1- اگر بخواهيد از كمپوننتهايى مثل RichEdit - Chart - CheckBox و ... در گزارش خود استفاده كنيد بايد كمپوننت مربوطه را روى فرم برنامه خود قرار دهيد.
2- اگر بخواهيد امكان Export گزارش به فرمتهاى HTML - Text - CSV يا DOC را به برنامه خود بدهيد بايد كمپوننت مربوطه را روى فرم برنامه خود قرار دهيد.
3- اگر بخواهيد گزارش Master-Detailى بسازيد بايد از دو باند Master data و Detail data استفاده كنيد.
4- اگر بخواهيد مجموع مقادير يك فيلد رو در انتهاى يك گزارش بنويسيد بايد از يك باند Master footer استفاده كنيد و گزينه Insert rectangle object را انتخاب كنيد. سپس Insert Expression را انتخاب كنيد. Functions را انتخاب كنيد و از تابع Count براى انجام اين كار استفاده كنيد. همچنين مى‌توانيد Variables را انتخاب كنيد و از مواردى همچون شماره صفحه، كل صفحات، تاريخ و ... استفاده كنيد.

اميدوارم اين مقاله بتونه هر چند اندك شما رو با FastReport آشنا كنه
پايان
نوشته شده توسط هادی قنبری | لینک ثابت |

آموزش دلفی قسمت دوم  

موضوع: DELPHI جمعه یکم دی 1385 22:1

قسمت دوم

قبل از اين كه وارد محبث دستورات زبان پاسكال شويم، لازم است كه با مجموعه اي از عناصر و اشكال كد نويسي اين زبان آشنا شويم. سوالي كه من در اين فصل به دنبال پاسخ آن هستم اين است كه قواعد كلي براي نوشتن كد به زبان پاسكال چيست؟ پاسخ واحد و يكساني به اين سوال وجود ندارد زيرا كه سلايق مختلف مي تواند سبب ساخت اشكال گوناگوني از كدنويسي شد. با اين حال اصولي همچون توضيح نويسي، نوشتن با حروف بزرگ يا UpperCase، فاصله‌ها و ... وجود دارد كه شما بايد بدانيد. به طور كلي هدف تمامي انواع كد نويسي وضوح بيشتر است. مسئله مهم نوع كدنويسي شما نيست بلكه اين مهم است كه به سبك و سياق كدنويسي خود پايبند و وفادر باشيد.

توضيحات
در پاسكال، توضيحات را مي توان به هر يك از اشكال زير به كار برد:
{ اين يك توضيح است }
(* اين يك توضيح ديگر است *)
// اين يك توضيح يك خطي است و در انتهاي اين خط پايان مي يابد

اولين حالت از همه كوتاهتر است و معمولا از همه بيشتر استفاده مي شود. حالت سوم نيز از ++C استعارفه گرفته شده است و تنها در نسخه هاي 32 بيتي دلفي عمل مي كند. توضيحات از اين نوع وقتي كه شما مي خواهيد توضيحات خلاصه اي را راجع به يك خط از كد بدهيد بسيار مفيد هستند.
در كدهاي اين كتاب تلاش من بر اين است كه توضيحات را به صورت ايتاليك (و كليدواژه ها را به صورت سياه) دربياورم، تا تقريبا شبيه به شكل Highlight كردن خود دلفي باشد.

داشتن سه حالت مختلف از توضيحات وقتي مفيد است كه بخواهيد توضيحات تو در تو داشته باشيد. اگر شما بخواهيد قطعات مختلفي از كد را به صورت توضيح دربياورد تا آنها را غيرفعال كنيد و اين خطوط حاوي يكسري توضيحات واقعي باشند، شما نمي توانيد از همان شكل توضيح استفاده كنيد.


{ ..... يكسري كد پاسكال
{يك توضيح نمونه}
....... يكسري كد پاسكال}


در صورتي كه مي توانيد اين كد را به صورت زير بنويسيد

{ ...... يكسري كد پاسكال
اين يك توضيح درست است//
...... يكسري كد پاسكال}



توجه داشته باشيد كه اگر علامت $ كنار يك علامت { بيايد، آنگاه يك راهنماي كامپايلر خواهد بود كه شكل عمومي آن از اين قرار است: {+X$}

استفاده از حروف بزرگ
كامپايلر پاسكال مثل بسياري كامپايلرهاي ديگر به حروف بزرگ و كوچك حساس نيست. بنابراين نام Myname، MyName، myName و MYNAME همگي دقيقا يكي هستند. روي هم رفته، اين مساله صراحتا مثبت است، زيرا زبان هايي كه حساس به شكل حروف هستند سبب ايجاد خطاهاي بسياري خواهند شد.
توجه داشته باشيد كه شما بايد از حروف بزرگ براي بيشتر قابل خواندن بودن كد استفاده كنيد. يك راه بسيار عالي براي اين مساله بزرگ تايپ كردن حروف اول كلمات است (شما نمي توانيد در بين نام متغييرها از فاصله استفاده كنيد). مثال:

MyLongIdentifier
MyVeryLongAndAlmostStupidIdentifier

بايد توجه داشته باشيد كه فاصله‌ها، خطوط و تب‌هايي كه شما به كد خود اضافه مي كنيد، فاصله هاي سفيد خوانده مي شوند و همگي توسط كامپايلر ناديده گرفته مي شوند. لازم است كه از فاصله هاي سفيد جهت بالا بردن توانايي خواندن متن خود استفاده كنيد؛ اين فاصله هاي سفيد هيچ تاثيري در كامپايل شدن كد ندارند.
بر خلاف BASIC، پاسكال به شما اجازه مي دهد كه چند خط كد را در يك خط طولاني بنويسيد. فقط كافي است در انتهاي هر خط از سيميكلون (؛) استفاده كنيد و پس از آن خط بعدي را بنويسيد.

Highlight كردن نحوي

براي ساده تز شدن خواندن و نوشتن كد هاي پاسكال، اديتور دلفي خاصيت به نام Highlight كردن نحوي يا Syntax Highlighting دارد. بنابر معناي هر يك از كلماتي كه شما در اديتور دلفي تايپ مي كنيد، هر كلمه رنگ تازه اي مي يابد. به طور پيش فرض كليدواژه ها سياه هستند، رشته ها و توضيحات به صورت رنگي و اغلب ايتاليك هستند و همين جور الي اخر.
احتمالا كلمات رزرو شده، توضيحات و رشته ها بيشترين اجزايي هستند كه از اين خاصيت سود مي جويند. شما به يك نگاه مي توانيد از كليدواژه هاي اشتباه تايپ شده، رشته اي كه به درستي بسته نشده است و طول يك توضيح چند خطي آگاه شويد.
شما مي توانيد به سادگي رنگ هاي استفاده شده به وسيله IDE دلفي را از طريق صفحه Editor Colors پنجره Environment Options تغيير دهيد. ( به شكل 2.1 نگاهي بياندازيد) اگر شما براي خودتان كار مي كنيد رنگهايي را كه بيشتر دوست مي داريد انتخاب كنيد. اگر شما با ساير برنامه نويسان به صورت گروهي كار مي كنيد همگي بايد يك رنگ بندي استاندارد را قبول كنيد. من متوجه شده ام كه كار كردن با يك رايانه با رنگ بندي هاي متفاوت كه به وسيله افراد مختلف استفاده مي شود واقعا سخت است.


استفاده از قالب هاي كد
دلفي 3 يك خصوصيت جديد را راجع به ويرايش كد معرفي نمود. با استفاده از اين خاصيت لازم نيست شما تمامي حروف يك كلمه يا دستور را تايپ كنيد. فقط چند حرف اول آن را تايپ كنيد و كليد Ctrl+J را براي كلمات كليدي و Ctrl+Space را براي ساير كلمات و دستورات استفاده كنيد. در اين صورت مشاهده خواهيد كرد كه منويي ظاهر خواهد شد و دستوراتي را كه با حروف مورد نظر شما شروع مي شوند را به نمايش خواهند گذاشت.

كلمات كليدي
كلمات كليدي، تمام لغاتي هستند كه بوسيله Object Pascal رزرو شده اند و در نقش هاي اساسي را در زبان بازي مي كنند. كلمات كليدي نمي توانند به عنوان نام متغييرها استفاده شوند.
در جدول 2.1 ليستي از اين كلمات را مي بينيد.

جدول 2.1 - كليدواژه ها و ساير كلمات كليدي در آبجكت پاسكال

كلمه كليدي نقش
absolute directive (variables)
abstract directive (method)
and operator (boolean)
array type
as operator (RTTI)
asm statement
assembler backward compatibility (asm)
at statement (exceptions)
automated access specifier (class)
begin block marker
case statement
cdecl function calling convention
class type
const declaration or directive (parameters)
constructor special method
contains operator (set)
default directive (property)
destructor special method
dispid dispinterface specifier
dispinterface type
div operator
do statement
downto statement (for)
dynamic directive (method)
else statement (if or case)
end block marker
except statement (exceptions)
export backward compatibility (class)
exports declaration
external directive (functions)
far backward compatibility (class)
file type
finalization unit structure
finally statement (exceptions)
for statement
forward function directive
function declaration
goto statement
if statement
implementation unit structure
implements directive (property)
in operator (set) - project structure
index directive (dipinterface)
inherited statement
initialization unit structure
inline backward compatibility (see asm)
interface type
is operator (RTTI)
label declaration
library program structure
message directive (method)
mod operator (math)
name directive (function)
near backward compatibility (class)
nil value
nodefault directive (property)
not operator (boolean)
object backward compatibility (class)
of statement (case)
on statement (exceptions)
or operator (boolean)
out directive (parameters)
overload function directive
override function directive
package program structure (package)
packed directive (record)
pascal function calling convention
private access specifier (class)
procedure declaration
program program structure
property declaration
protected access specifier (class)
public access specifier (class)
published access specifier (class)
raise statement (exceptions)
read property specifier
readonly dispatch interface specifier
record type
register function calling convention
reintroduce function directive
repeat statement
requires program structure (package)
resident directive (functions)
resourcestring type
safecall function calling convention
set type
shl operator (math)
shr operator (math)
stdcall function calling convention
stored directive (property)
string type
then statement (if)
threadvar declaration
to statement (for)
try statement (exceptions)
type declaration
unit unit structure
until statement
uses unit structure
var declaration
virtual directive (method)
while statement
with statement
write property specifier
writeonly dispatch interface specifier
xor operator (boolean)


عملگرها در پاسكال

Unary Operators (Highest Precedence)
@ Address of the variable or function (returns a pointer)
not Boolean or bitwise not
Multiplicative and Bitwise Operators
* Arithmetic multiplication or set intersection
/ Floating-point division
div Integer division
mod Modulus (the remainder of integer division)
as Allows a type-checked type conversion among at runtime (part of the RTTI support)
and Boolean or bitwise and
shl Bitwise left shift
shr Bitwise right shift
Additive Operators
+ Arithmetic addition, set union, string concatenation, pointer offset addition
- Arithmetic subtraction, set difference, pointer offset subtraction
or Boolean or bitwise or
xor Boolean or bitwise exclusive or
Relational and Comparison Operators (Lowest Precedence)
= Test whether equal
<> Test whether not equal
< Test whether less than
> Test whether greater than
<= Test whether less than or equal to, or a subset of a set
>= Test whether greater than or equal to, or a superset of a set
in Test whether the item is a member of the set
is Test whether object is type-compatible (another RTTI operator)


اختتاميه
اكنون كه ما شكل و شمايل كلي برنامه هاي پاسكال را مي دانيم ما مي توانيم فهميدن و درك كردن آن را آغاز كنيم. ما با آشنايي با نوع هاي پيش فرض و ساخت نوع هاي جديد كار خودمان را آغاز مي كنيم
نوشته شده توسط هادی قنبری | لینک ثابت |

نكات ريز و درشت در دلفي  

موضوع: DELPHI جمعه یکم دی 1385 22:0

چگونه تمامي رويدادهاي يك شيء را در زمان اجرا به Nil تنظيم ‌كنيم؟

در اين مقاله روشي را جهت اينكه تمامي رويدادهاي يك شيء تعريف شده در دلفي را در زمان اجرا به Nil تنظيم كنيد براي شما بازگو مي‌كنيم. شما مي‌توانيد از RTTIها جهت رسيدن به اهداف خود استفاده كنيد اما فقط براي زمان طراحي و اجرا و اين امكان براي رويدادها وجود ندارد. استفاده از RTTI، تا حدودي پيچيده است بنابراين من رويه‌اي را براي نسبت دادن Nil به يك شيء موجود در زمان اجراي يك برنامه در دلفي آورده‌ام كه نحوه انجام اين كار را به شما نشان مي‌دهد.

unit uNilEvent;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   {Private declarations}
 public
   {Public declarations}
 end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
  Typlnfo;

procedure NilEvents(lnstance: TObject);
var
  Typelnfo: PTypelnfo;
  I, Count: Integer;
  PropList: PPropList;
  Proplnfo: PProplnfo;
  Method: TMethod;
begin
  Typelnfo := Instance.Classlnfo;
  Method.Code := nil;
  Method.Data := nil;
  Count := GetPropList(Typelnfo, [tkMethod], nil);
  GetMem(PropList, Count * SizeOf(Pointer));
  try
    GetPropList(Typelnfo, [tkMethod], PropList);
    for I := 0 to Count -1 do
    begin
      Proplnfo := PropList^[I];
      SetMethodProp(lnstance, Proplnfo, Method);
    end;
  finally
    FreeMem(PropList);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  sText = 'The 2nd time you click Button1 the event will not fire';
begin
  NilEvents(Button1);
  ShowMessage(sText);
end;

end.

چگونه رويداد مربوط به تمامي اجزاء درون برنامه خود را تغيير دهيم؟

گاهي لازم مي‌شود تا ما فراميني را براي يكي از رويدادهاي برنامه خود به تمامي اشياء استفاده شده در برنامه نسبت دهيم اينكار مي‌تواند با استفاده از RTTI دلفي صورت گيرد شما مثالي را مي‌بينيد كه اين كار را شبيه‌سازي كرده است.

uses
  Typlnfo;

procedure TFrmRTTIOnChange.Button1Click(Sender: TObject);
var
  proplnfo: PProplnfo;
  thisEvent: TNotifyEvent;
begin
  proplnfo := GetProplnfo(Memo1.Classlnfo, 'OnChange');
  if proplnfo <> nil then
  begin
   thisEvent := Memo1AltChange;
   SetOrdProp(Memo1, Proplnfo, integer(@thisEvent));
  end;
end;

procedure TFrmRTTIOnChange.Memo1Change(Sender: TObject);
begin
  Caption := 'Normal On Change';
end;

procedure TFrmRTTIOnChange.Memo1AltChange(Sender: TObject);
begin
  Caption := 'Alternate On Change';
end;


نوشته شده توسط هادی قنبری | لینک ثابت |

دلفی 7 

موضوع: DELPHI جمعه یکم دی 1385 22:0

در ويرايش دلفي 7، شركت بورلند تغييراتي را در ساختار داخلي دلفي داده است كه مهمترين آن حمايت و توانايي برنامه‌نويسي بر اساس تكنولوژي .NET مي‌باشد. اين بدين معنااست كه برنامه‌نويسان دلفي مي‌توانند از هم اكنون به محيط .Net framework سوئيچ كنند و از مزاياي برنامه‌نويسي در آن كه مي‌توان به داشتن كلاسهاي برنامه‌نويسي فراوان، امنيت بالاي برنامه‌نويسي و وابسته نبودن به محيط برنامه‌نويسي و محيط اجراي برنامه را نام برد.

ويرايش جديد دلفي 7 در دو CD ارائه شده است كه CD اول كامپايلر دلفي بوده و CD دوم شامل نسخه Preview از .Net framework جهت اجراي برنامه‌هاي نوشته شده توسط دلفي 7 مي‌باشد. لازم به ذكر است كه كاربران بايد حتماً .Net را بر روي سيستم خود نصب كنند تا بتوانند در محيط دلفي 7 برنامه‌نويسي كنند.


حداقل سيستمي كه جهت كار با دلفي 7 پيشنهاد مي‌شود بايد داراي مشخصات زير باشد:

  - Intel Pentium II/233MHz يا بالاتر

  - MS Windows 98, 2000, XP

  - RAM 64MB (البته 128MB پيشنهاد مي‌شود)

  - 520MB فضاي خالي روي ديسك سخت

  - درايو CD-ROM

  - كارت گرافيكي SVGA يا بالاتر


امكانات جديد درون دلفي 7 شامل چندين بخش مي‌باشد :


- افزودن ابزار Model Driven Architecture (MDA) به دلفي، اين يكي از محصولات معروف شركت نرم افزاري بورلند مي‌باشد كه امكان مي‌دهد تا شما بتوانيد بهتر و قويتر معماري برنامه خود را كنترل و پشتيباني كنيد اين محصول براساس UML بوده و مدلهاي Rose را نيز حمايت مي‌كند.


- طراحي و مدلسازي برنامه‌ها با UML : يكي از ويژگيهاي ويرايش 7 دلفي حركت به سمت برنامه نويسي و طراحي شيءگرا با ابزار UML مي‌باشد. محصول Mode Maker از معروفترين اين ابزارها مي‌باشد كه جهت طراحي پروژه با UML در محيط دلفي توسط شركتي به همين نام نوشته شده است. در اين محصول شما امكان طراحي كلاسها و دياگرامهاي UML را داريد كه سورس دلفي آنها نيز بطور خودكار براي شما نوشته مي‌شود.


- ايجاد برنامه‌هاي C-business : در ويرايش جديد شما مي‌توانيد به راحتي به توليد برنامه‌هاي مبتني بر Web اقدام كنيد Websnap و bizsnap در ويرايش جديد كامل شده‌اند و تكنولوژي .Net را نيز همراه خود دارند، اين قابليت بزرگي مي‌باشد زيرا شما با كمترين زمان ممكن مي‌توانيد به توليد محصولات تحت وب بپردازيد و فروشگاههاي تجاري خود را ايجاد كنيد.


- ايجاد برنامه‌هاي كاربردي با ويندوز XP : از ديگر قابليتهاي جديد دلفي 7 افزودن حالات و شكل و قيافه ويندوز XP با VCLهاي دلفي مي‌باشد. اين امكان به شما اجازه مي‌دهد تا برنامه‌هاي قويتري را در محيط ويندوز پياده‌سازي كنيد.


- افزايش قدرت دلفي 7 در تهيه گزارشات و حمايت از محيط‌هاي كاري باعث شده است تا بتوان روي اين محصول بعنوان يكي از كامپايلرهاي قوي در محيط .Net سرمايه گذاري كرد، حمايت از Kylix3 در ويرايش جديد و توانايي برنامه نويسي تحت Linux از ديگر تواناييهاي دلفي ويرايش 7 مي‌باشد.


- امكان ايجاد سيستمهاي چند لايه (3-tier) براساس ساختار DCOM، COM+ و CORBA  بر پايه تكنولوژي Datasnap و حمايت از تمامي بانكهاي اطلاعاتي معروف دنيا از قبيل DBZ ،Oracle ،MySQL ،SQL Server و ... كه در ويرايش 6 دلفي نيز وجود داشت ولي در ويرايش جديد اين امكانات بهتر، سريعتر و قويتر شده است.

نوشته شده توسط هادی قنبری | لینک ثابت |

ارسال ایمیل در دلفی 

موضوع: DELPHI جمعه یکم دی 1385 21:15

uses ShellAPI;
procedure InviaEMail ( const Indirizzo, IndirizziCC, Oggetto, Testo: string);
var
Comando: String;
begin
Comando := 'mailto:' + Indirizzo + '?subject=' + Oggetto + '&cc=' + IndirizziCC + '&body=' + Testo;
if (ShellExecute(0, 'open', PChar(Comando), '', '', SW_SHOWNORMAL) <= 32)
then
ShowMessage('Errore nell''invio della e-mail.');
end;
//////////

procedure TForm1.Button1Click(Sender: TObject);
begin
InviaEMail ( 'your mail@yahoo.com', 'IndirizziCC@acui.spedire', 'Oggetto della e-mail', 'Testo della e-mail');
end;
نوشته شده توسط هادی قنبری | لینک ثابت |


About
این وبلاگ حاوی مطالبی در مورد برنامه های کاربردی کامپیوتر و آموزش های آن داراست که امید است با مطالعه آن نیاز های نرم افزاری شما برآورده شده باشد و ما را از دعای خیرتان محروم نفرمایید . این وبلاگ در سال 85 در دانشکده فنی شهید رجایی در درس مبانی اینترنت با راهنمایی های آقای آذری تهیه و در دست شما دوستان است.لازم به ذکر است کپی از مطالب این وبلاگ با شرح منبع بلامانع است . یکشنبه 26/9/138 ساعت 8:30 هادی قنبری
I'm in Yahoo...
Google Searcher
Search in all the world & web with Google Search

Copyright 2006 - Designer: Penguin Network >Hessam Sedaghati