Learning About Computer & Internet
|
|
|
نكات مفيد براي كار در محيط دلفي موضوع: 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- خطوط زير را در در سورس كد فرم اصلي خود قرار دهيد: ... 5- حالا اين تابع را به كد خود اضافه كنيد:... implementation ... ... ... {$R *.dfm} {$R SWFActivex.RES} function GetResourceFile(S : string; FilePath : string) : Boolean; 6- اين تابع را نيز اضافه كنيد: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; function GetSystemDir : string; 7- خوب! حالا بگذاريد به مهمترين قسمت قضيه يعني Register كردن OCX مربوطه بپردازيم. در ابتدا يونيت ActiveX را به ليست uses خود اضافه كنيد. سپس تابع زير را نيز به سورس خود اضافه نماييد.var SysPath : PChar; begin GetMem(SysPath, MAX_PATH + 1); GetSystemDirectory(SysPath, MAX_PATH); Result := StrPas(SysPath)+ '\'; FreeMem(SysPath, MAX_PATH + 1); end; function RegisterOCX( OCXFileName : string; Flag : Boolean) : Boolean; 8- اين سه متغيير را نيز به كد خود اضافه كنيد: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; var 9- تابع زير را نيز اضافه كنيد:FilePath : string; FlashOCX: TShockwaveFlash; function CreateFlashOCX : Boolean; 10- كدهاي زير را به انتهاي فايل خود، قبل از .end اضافه كنيد: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; 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. FlashOCX.Parent := Form1; Resize شدن درستFlashOCX.Movie := ExtractFilePath(Application.ExeName) + 'Main.swf'; FlashOCX.Play; يكي از مشكلاتي كه ممكن است با اكتيو ايكس فلش پيدا كنيد مشكل 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يكى از مسائل بسيار مهم و اساسى ديگر برقرارى ارتباط بين 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 آشنا خواهيد شد. ![]() ساخت يك گزارش ساده يك كمپوننت TfrReport را روي فرم قرار دهيد و روى آن دابل كليك كنيد تا به محيط Report Designer برويم. خوب ... مىخواهيم براى شروع يك گزارش بسيار ساده بسازيم. از ToolBar سمت چپ گزينه Insert rectangle object را انتخاب كنيد. آيكن اين گزينه شبيه به آيكن كمپوننتMemo است. مىبينيد كه وقتى اين كمپوننت را در محل مربوطه قرار مىدهيد پنجره اى باز مي شود: ![]() خوب! اولين گزارش خودمون رو ساختيم. حالا به سادگى گزارش را Save كنيد و اسم اون رو بگذاريد Test. اين فايل رو در همون جايى ضبط كنيد كه پروژه تون در اونجا Save شده است. حالا Designer رو ببنديد و يك Button روي فرمتون بگذاريد و و در اونت OnClick آن كد زير رو بنويسيد: frReport1.LoadFromFile('Test.frf'); خوب! كار ساخت اولين گزارشمون تمام شد. ما خيلي ساده در ابتدا گزارشى را كه قبلا ساخته بوديم Load كرديم و بعدش هم از متد ShowReport براى نمايش گزارش استفاده كرديم. البته مىتوانستيم از متد PrintPreparedReportDlg براى چاپ مستقيم گزارش بدون نمايش پيشنمايش يا Preview استفاده كنيم.frReport1.ShowReport; نكته: در صورتى كه بخواهيم ميتوانم با 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 را انتخاب كنيد. خوب شما انتخاب كنيد و آن را روي فرم قرار دهيد. پنجره اي شبيه به شكل زير نمايش داده مىشود: ![]() خوب تقريبا كارمان تمام است. اگر خوب نگاه كنيد مي بينيد كه دو باند روى فرم گزارش اضافه شد كه يكى 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 بيتي دلفي عمل مي كند. توضيحات از اين نوع وقتي كه شما مي خواهيد توضيحات خلاصه اي را راجع به يك خط از كد بدهيد بسيار مفيد هستند.
داشتن سه حالت مختلف از توضيحات وقتي مفيد است كه بخواهيد توضيحات تو در تو داشته باشيد. اگر شما بخواهيد قطعات مختلفي از كد را به صورت توضيح دربياورد تا آنها را غيرفعال كنيد و اين خطوط حاوي يكسري توضيحات واقعي باشند، شما نمي توانيد از همان شكل توضيح استفاده كنيد. { ..... يكسري كد پاسكال در صورتي كه مي توانيد اين كد را به صورت زير بنويسيد { ...... يكسري كد پاسكال
استفاده از حروف بزرگ كامپايلر پاسكال مثل بسياري كامپايلرهاي ديگر به حروف بزرگ و كوچك حساس نيست. بنابراين نام Myname، MyName، myName و MYNAME همگي دقيقا يكي هستند. روي هم رفته، اين مساله صراحتا مثبت است، زيرا زبان هايي كه حساس به شكل حروف هستند سبب ايجاد خطاهاي بسياري خواهند شد. توجه داشته باشيد كه شما بايد از حروف بزرگ براي بيشتر قابل خواندن بودن كد استفاده كنيد. يك راه بسيار عالي براي اين مساله بزرگ تايپ كردن حروف اول كلمات است (شما نمي توانيد در بين نام متغييرها از فاصله استفاده كنيد). مثال: MyLongIdentifier بر خلاف BASIC، پاسكال به شما اجازه مي دهد كه چند خط كد را در يك خط طولاني بنويسيد. فقط كافي است در انتهاي هر خط از سيميكلون (؛) استفاده كنيد و پس از آن خط بعدي را بنويسيد. Highlight كردن نحوي براي ساده تز شدن خواندن و نوشتن كد هاي پاسكال، اديتور دلفي خاصيت به نام Highlight كردن نحوي يا Syntax Highlighting دارد. بنابر معناي هر يك از كلماتي كه شما در اديتور دلفي تايپ مي كنيد، هر كلمه رنگ تازه اي مي يابد. به طور پيش فرض كليدواژه ها سياه هستند، رشته ها و توضيحات به صورت رنگي و اغلب ايتاليك هستند و همين جور الي اخر. احتمالا كلمات رزرو شده، توضيحات و رشته ها بيشترين اجزايي هستند كه از اين خاصيت سود مي جويند. شما به يك نگاه مي توانيد از كليدواژه هاي اشتباه تايپ شده، رشته اي كه به درستي بسته نشده است و طول يك توضيح چند خطي آگاه شويد. شما مي توانيد به سادگي رنگ هاي استفاده شده به وسيله IDE دلفي را از طريق صفحه Editor Colors پنجره Environment Options تغيير دهيد. ( به شكل 2.1 نگاهي بياندازيد) اگر شما براي خودتان كار مي كنيد رنگهايي را كه بيشتر دوست مي داريد انتخاب كنيد. اگر شما با ساير برنامه نويسان به صورت گروهي كار مي كنيد همگي بايد يك رنگ بندي استاندارد را قبول كنيد. من متوجه شده ام كه كار كردن با يك رايانه با رنگ بندي هاي متفاوت كه به وسيله افراد مختلف استفاده مي شود واقعا سخت است.
استفاده از قالب هاي كد دلفي 3 يك خصوصيت جديد را راجع به ويرايش كد معرفي نمود. با استفاده از اين خاصيت لازم نيست شما تمامي حروف يك كلمه يا دستور را تايپ كنيد. فقط چند حرف اول آن را تايپ كنيد و كليد Ctrl+J را براي كلمات كليدي و Ctrl+Space را براي ساير كلمات و دستورات استفاده كنيد. در اين صورت مشاهده خواهيد كرد كه منويي ظاهر خواهد شد و دستوراتي را كه با حروف مورد نظر شما شروع مي شوند را به نمايش خواهند گذاشت.
كلمات كليدي، تمام لغاتي هستند كه بوسيله Object Pascal رزرو شده اند و در نقش هاي اساسي را در زبان بازي مي كنند. كلمات كليدي نمي توانند به عنوان نام متغييرها استفاده شوند. در جدول 2.1 ليستي از اين كلمات را مي بينيد. جدول 2.1 - كليدواژه ها و ساير كلمات كليدي در آبجكت پاسكال
عملگرها در پاسكال
اختتاميه اكنون كه ما شكل و شمايل كلي برنامه هاي پاسكال را مي دانيم ما مي توانيم فهميدن و درك كردن آن را آغاز كنيم. ما با آشنايي با نوع هاي پيش فرض و ساخت نوع هاي جديد كار خودمان را آغاز مي كنيم نوشته شده توسط هادی قنبری | لینک ثابت |
نكات ريز و درشت در دلفي موضوع: DELPHI جمعه یکم دی 1385 22:0 چگونه تمامي رويدادهاي يك شيء را در زمان اجرا به Nil تنظيم كنيم؟ در اين مقاله روشي را جهت اينكه تمامي رويدادهاي يك شيء تعريف شده در دلفي را در زمان اجرا به Nil تنظيم كنيد براي شما بازگو ميكنيم. شما ميتوانيد از RTTIها جهت رسيدن به اهداف خود استفاده كنيد اما فقط براي زمان طراحي و اجرا و اين امكان براي رويدادها وجود ندارد. استفاده از RTTI، تا حدودي پيچيده است بنابراين من رويهاي را براي نسبت دادن Nil به يك شيء موجود در زمان اجراي يك برنامه در دلفي آوردهام كه نحوه انجام اين كار را به شما نشان ميدهد. unit uNilEvent; چگونه رويداد مربوط به تمامي اجزاء درون برنامه خود را تغيير دهيم؟ گاهي لازم ميشود تا ما فراميني را براي يكي از رويدادهاي برنامه خود به تمامي اشياء استفاده شده در برنامه نسبت دهيم اينكار ميتواند با استفاده از RTTI دلفي صورت گيرد شما مثالي را ميبينيد كه اين كار را شبيهسازي كرده است. uses نوشته شده توسط هادی قنبری | لینک ثابت |
دلفی 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 هادی قنبری
Google Searcher
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2006 - Designer: Penguin Network >Hessam Sedaghati