تبليغاتX

به نام خالق هستی

Do You Know Whats The Meaning Of FreeFard

منتظر نظرات و پیشنهادات شما عزیزان هستم
freefard@yahoo.com

استفاده از مطالب این وبلاگ حتی بدون ذکر منبع آن بلا مانع است

آموزش دلفی7 با فری فرد

freefard&delphi7
آموزش دلفی 7 و برنامه نویسی
برو به

توجه توجه توجه : 1
از اینکه قست کپی  برداری از برنامه را دارید متشکرم . ولی این کار  عواقب سنگینی در بر خواهد داشت.برای کسب اجازه لینک زیر را در لیست خود اظافه کنید .
 http://freefard.blogfa.com

سلام.....

 از اینکه نتوانستم به قولم وفا کنم معذرت می خواهم ...ولی سعی می کنم در اولین فرصت ادامه دهم ....دوستدار و شاگرد شما فریفرد

+ نوشته شده در  شنبه 18 فروردین1386ساعت 1:15  توسط freefard  | 
سلام به همه شما که علاقه مند به برنامه نویسی مخصوصا دلفی هستید. وقتی می بینم شما با شوق و اشتیاق از من تشکر میکنید خود را متقاعد می کنم که دوباره مطلب بنویسم

انشاء ا... سعی میکنم مطالب جالبی در آینده نه چندان دور بنویسم

دوستدار شما فری فرد
+ نوشته شده در  سه شنبه 19 دی1385ساعت 13:12  توسط freefard  | 
سلام . با سلامي گرم خدمت شما عزيزان و برنامه نويسان.

اول عذر من را بدليل نوشتن چند ماه وبلاگ پذيرا باشد . به علت داشتن كنكور نتوانستم مطلب بنويسم .

مطوئن باشيد بعد از كنكور شروع به نوشتن مطالب زيبا و جديد خواهم كرد

دوستدار همه شما برنامه نويسان FREEFARD

+ نوشته شده در  جمعه 5 خرداد1385ساعت 11:44  توسط freefard  | 
سلام . آموزش دلفي براي همه از اصولي ترين و پايه ترين نكات تا ....

http://www.freefard.mihanblog.com/

+ نوشته شده در  پنجشنبه 24 فروردین1385ساعت 13:44  توسط freefard  | 

1-سعي كنيد كدها را ساده بنويسيد.اين كار باعث سادگي در خواندن كدها و فهميدن آنها مي شود. از نام هاي با معنا براي متغيير ها و ثابت ها استفاده كنيد.براي مثال: sName,sMessage براي متغيير هاي String iCounter براي متغيير هاي Integer. براي ثابت ها از حروف بزرگ استفاده كنيد.sWARNING براي ثابتهاي String . براي كامپوننت ها (Visual Component Librarry) از اسمهاي پيش فرض استفاده نكنيد. مثل : Edit1,Combo1,Button1. براي كامژوننت ها به اينگونه عمل كنيد مثلا براي دكمه اي button براي جستجو داريم اين نام را انتخاب مي كنيم: BtnSearch

 . 2- گذاشتن رهنمود ‍‌‍‍{+O$} يا {Optimization On$} در ابتداي برنامه. با گذاشتن اين رهنمود كامپايلر دلفي موثرتر عمل مي كند. البته بعضي اوقات Debugging (اشكال زدايي) سخت تر انجام مي شود(با فعال بودن اين قسمت): ... شما نميتوانيد يك نقطه BreakPoint روي دستورات بگذاريد

3-ممكن است شما بخواهيد كامپايل كنيد برنامه خود را با پكيچ Run-Time Package. اين كار ميتواند بگيرد فضاي زيادي وقتي كه شما استفاده مي كنيد در برنامه از libraries يكسان. متاسفانه وقتي برنامه خود را ارائه مي دهيد شما نياز به ارائه DLL هاي استفاده در برنامه نيز مي باشيد.

4-هيچ وقت همه فرم ها را در شروع برنامه نسازيد(create) .(اين امر به صورت پيش فرض انجام مي گيرد). براي اينكه اين كار باعث كند شدن لود برنامه مي شود و احتياج به حافظه زياد مي شود. به جاي اين كار به صورت ديناميك فرم ها را خلق كنيد. نكته: براي اينكه فرم ها به صورت خود كار درست نشوند به منو Project رفته گزينه Option را انتخاب كرده وسپس در همان تب اول فرم هايي را كه نمي خواهيد به صورت خود كار درست شوند را به راست منتقل كنيد.

 5- به جاي اينكه خودتون به نوشتن توابع سيستمي كنيداستفاده كنيد از توابع API .(در مواقعي كه تابع هاي يكسان وجود دارد). معمولا اين توابع سريعتر عمل مي كنند.

6- وقتي كه برنامه شما داراي عكس مي باشد ابتدا سعي كنيد عكس خود را بهينه كنيد .
وقتي استفاده مي كنيد از فايلهاي bmp مطمئن شويد كه آن  عكس  در انداره مورد نظر مي باشد و نيازي به قيچي خوردن نيست.
وقتي كه استفاده مي كنيد از فايلهاي GIF آنها را با بهبود بخشيدن به Color Palete  با ابزار هاي خاص(در محيط هاي گرافيكي) بهينه سازيد.
وقتي استفاده مي كنيد از فايلهاي JPEG بهتر است از Image Compresion  استفاده كنيد.
بهتر است عكس هاي JPEG  خود را كه داراي 256 رنگ يا كمتر از 256 رنگ هستند به GIF تبديل كنيد.

7- وقتي مي خواهيد تنها از يك يا دو تابع يا پروسيجر از يك يونيت استفاده كنيد .
تنها همان توابعي كه مي خواهيد را در برنامه خود كپي كنيد و آن يونيت را به يوزز Usesخود اضافه نكنيد.

8-به جاي اينكه از كدها در برنامه خود استفده بهتر است  از كامپوننت هاي غير بصري  استفاده كنيد.
براي اينكه به كد مورد نظر براحتي مي توانيد دسترسي پيدا كنيد(در كامپوننت هاي).

 -اگر در برنامه خود از توابع time-critical(حلقه هاي كه در برنامه شما مهم به نظر مي رسد) استفاده مي كنيد بايد خيلي دقت كنيد.
چيزي كه سريع به نظر مي رسد در كامپيوتر شما ممكن است در كامپيوترهاي ديگر به همان سرعت نباشد. اينجا شما بايد از كد هاي كوچك و قابل اجرا و همچنين سريع است استفاده كنيد
پيشنهاد مي شود از كد هاي اسمبلر(اسمبلي ) استفاده كنيد.

10-تقريبا همه برنامه ها در  محاسبات ابتدايي به يك گونه ميباشند .
ساده كردن فرمولها يتان براي سريع تر كردن توابع  مي باشد كه  يكي از معمولي ترين راه ها براي بهينه كردن برنامه هاست.

 منابع: freefard,http://delphi.about.com/,A.Rivaz

+ نوشته شده در  پنجشنبه 17 فروردین1385ساعت 20:15  توسط freefard  | 
براي اين كار كافي است كد هاي زير را در OnCreateForm خود قرار دهيد

procedure TForm1.FormCreate(Sender: TObject);
const
 strCLOSE = 'ÎÑæÌ';
 strmin='ßãíäå';
 strMax='ÈíÔíäå';
 strmov='ÌÇÈÌÇíí';
 strRes='ÈÇҐÔÊ Èå ÍÇáÊ ÞÈá';
 strsiz='ÇäÏÇÒå';
var
 SysMenu : HMenu;
 MenuItemInfo : TMenuItemInfo;
begin
 SysMenu := GetSystemMenu(Handle, FALSE);

 FillChar(MenuItemInfo,SizeOf(TMenuItemInfo), #0);
 MenuItemInfo.cbSize     := SizeOf(TMenuItemInfo);
 MenuItemInfo.fMask      := MIIM_TYPE or MIIM_ID or MIIM_STATE;
 MenuItemInfo.fType      := MFT_STRING;

 MenuItemInfo.wId        := SC_CLOSE;
 MenuItemInfo.dwTypeData := strCLOSE;
 MenuItemInfo.cch        := Length(strCLOSE);
  SetMenuItemInfo(SysMenu, SC_CLOSE, FALSE, MenuItemInfo);

 MenuItemInfo.wId        := SC_MINIMIZE;
 MenuItemInfo.dwTypeData := strmin;
 MenuItemInfo.cch        := Length(strmin);
  SetMenuItemInfo(SysMenu, SC_MINIMIZE, FALSE, MenuItemInfo);

  MenuItemInfo.wId        := SC_MAXIMIZE;
 MenuItemInfo.dwTypeData := strMax;
 MenuItemInfo.cch        := Length(strMax);
  SetMenuItemInfo(SysMenu, SC_MAXIMIZE, FALSE, MenuItemInfo);

 MenuItemInfo.wId        := SC_MOVE;
 MenuItemInfo.dwTypeData := strmov;
 MenuItemInfo.cch        := Length(strmov);
  SetMenuItemInfo(SysMenu, SC_MOVE, FALSE, MenuItemInfo);

 MenuItemInfo.wId        := SC_SIZE;
 MenuItemInfo.dwTypeData := strsiz;
 MenuItemInfo.cch        := Length(strsiz);
  SetMenuItemInfo(SysMenu, SC_SIZE, FALSE, MenuItemInfo);

   MenuItemInfo.wId        := SC_RESTORE;
 MenuItemInfo.dwTypeData := strRes;
 MenuItemInfo.cch        := Length(strRes);
  SetMenuItemInfo(SysMenu, SC_RESTORE, FALSE, MenuItemInfo);

 

end;

+ نوشته شده در  پنجشنبه 17 فروردین1385ساعت 17:39  توسط freefard  | 

برنامه برا ي دانلود آماده است.

DawnLoad
+ نوشته شده در  پنجشنبه 17 فروردین1385ساعت 15:36  توسط freefard  | 
سلام. با يك منوي قوف العاده آمده ام. شما مي توانيد در كنار پاپ آپ منو خود نوشته و حتي عكس قرار دهيد

اينم سورس كامل برنامه:

البته قبل از كپي كردن سورس يك پاپ آپ منو و دو تا colorDialog و يك ImageList1 و یک label1,  دو تا Button روي فرم قرار دهيد

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ImgList, ActnMan, ActnColorMaps, StdCtrls;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    N11: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    N41: TMenuItem;
    N51: TMenuItem;
    N61: TMenuItem;
    N81: TMenuItem;
    Edit1: TEdit;
    Button1: TButton;
    ColorDialog1: TColorDialog;
    Button2: TButton;
    ColorDialog2: TColorDialog;
    Label1: TLabel;
    ImageList1: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
  private
   procedure MenuAdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;  ARect: TRect; State: TOwnerDrawState);

    procedure MenuItemClick(Sender : TObject);
    procedure DrawItemText(X: integer;ACanvas: TCanvas;ARect: TRect;Text: string);

  procedure DrawBar(ACanvas: TCanvas);

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses ShellApi;

procedure TForm1.DrawBar(ACanvas: TCanvas);
var
  lf : TLogFont;
  tf : TFont;
begin
  with ACanvas do begin
    Brush.Color :=ColorDialog1.Color;
    FillRect(Rect(0,0,20,150));
    Font.Name := 'Tahoma';
    Font.Color := ColorDialog2.Color;
    tf := TFont.Create;
    try
      tf.Assign(Font);
      GetObject(tf.Handle, sizeof(lf), @lf);
      lf.lfEscapement := 900;
      lf.lfHeight := Font.Height - 2;
      tf.Handle := CreateFontIndirect(lf);
      Font.Assign(tf);
    finally
      tf.Free;
    end;
    TextOut(2, 105,Edit1.Text);
  end;
end; (*Draw bar*)

procedure TForm1.DrawItemText(
  X: integer;
  ACanvas: TCanvas;
  ARect: TRect;
  Text: string);
begin
 ARect.Left := X;
 DrawText(ACanvas.Handle, PChar(Text), -1, ARect, DT_LEFT or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP);
end; (*DrawItemText*)


procedure TForm1.FormCreate(Sender: TObject);
var
  item : TMenuItem;
  SysMenu : HMenu;
  i : integer;
begin
 ColorDialog1.Color:=clGray;
  ColorDialog2.Color:=clYellow;
  //assign custom drawing proceure
  for i := 0 to -1 + PopupMenu1.Items.Count do
  begin
    if PopupMenu1.Items[i].Caption <> '-' then //not for separators
    begin
      PopupMenu1.Items[i].OnAdvancedDrawItem := MenuAdvancedDrawItem;
    end;
  end;

  SysMenu := GetSystemMenu(Handle, FALSE);
end;
procedure TForm1.MenuItemClick(Sender: TObject);
begin
end;
procedure TForm1.MenuAdvancedDrawItem(
  Sender: TObject;
  ACanvas: TCanvas;
  ARect: TRect;
  State: TOwnerDrawState);
var
  menuItem : TMenuItem;
begin
  menuItem := TMenuItem(Sender);


  ARect.Left := 20;
  ACanvas.FillRect(ARect);
  //draw text
  DrawItemText(45,ACanvas,ARect,menuItem.Caption);
  //draw bitmap
  ImageList1.Draw(ACanvas,24,ARect.Top + 2,menuItem.ImageIndex);


  if PopupMenu1.Items.IndexOf(menuItem) = -1 + PopupMenu1.Items.Count then
  begin
     //when all the menu items are drawn we draw the 'delphi.about.com' bar
     DrawBar(ACanvas);
  end;

  end; (*MenuAdvancedDrawItem*)

procedure TForm1.Button1Click(Sender: TObject);
begin
ColorDialog1.Execute;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ColorDialog2.Execute;

end;

procedure TForm1.Label1Click(Sender: TObject);
begin
 ShellExecute(Handle, 'open', 'http://freefard.blogfa.com',nil,nil, SW_SHOWNORMAL);

end;

end.

+ نوشته شده در  چهارشنبه 16 فروردین1385ساعت 13:40  توسط freefard  | 
اول يوزز را اضافه کنيد
uses Registery
يک باتون روي فرم قرار دهيد ، سپس کد زير را در آن کپي کنيد
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Control Panel\International\', True) then
begin
Reg.WriteString('s1159','فري فرد');
Reg.WriteString('s2359','فري فرد' );
Reg.CloseKey;
end;
finally
Reg.Free;
inherited;
end;
Showmessage('Saved Your Changed!... Refresh Your System ')
+ نوشته شده در  پنجشنبه 25 اسفند1384ساعت 12:0  توسط freefard  | 
سلام ، از اينکه چند وقتي ننوشتم ببخشيد---وجود مشکلات--در هر صورت
Registery In Delphi
بله ،رجيستري در دلفي
براي ثبت،اصلاح،وجود،عدم وجود اسکريپ در قسمت هاي مختلف رجيستري
Uses
Registery
...
Var
reg: Tregistery;
begin
reg:=Tregistery.create;
Try
reg.rootKey:=Hkey_Current_User;//براي مثال
if reg.openKey('مسير مورد نظر در رجيستري',True) then//وجود اسکريپت
begin
Reg.writeString('........','DataValue') ;
Reg.CloseKey;
end;
Finally;
Reg.free;
Inherited;
End;
+ نوشته شده در  پنجشنبه 25 اسفند1384ساعت 11:58  توسط freefard  | 
یک کلید روی فرم قرار دهید و روی آن دوبار کلیک کنید حال کد ریر را تایپ کنید:<BR>mcisendString('set CdAudio Door Close Wait ',NIL,Handle);<BR>البته برای استفاده از این دستورات باید از یوزز <BR><FONT color=#ff3300 size=6><STRONG>MMSYSTEM</STRONG></FONT><BR>استفاده کنید<BR>

خواهشا به یوزز خود MMSYSTE


را اضافه کنید
uses MMSYSTEM;
+ نوشته شده در  سه شنبه 18 بهمن1384ساعت 1:29  توسط freefard  | 
یک کلید روی فرم قرار دهید و روی آن دوبار کلیک کنید حال کد ریر را تایپ کنید:
mcisendString('set CdAudio Door Open Wait ',NIL,Handle);
+ نوشته شده در  سه شنبه 18 بهمن1384ساعت 1:27  توسط freefard  | 
يكى از مسائل بسيار مهم و اساسى ديگر برقرارى ارتباط بين Flash و دلفي است. فرض كنيد در فايل SWF خود چند Button داشته باشيد و بخواهيد وقتى كاربر روى هر كدام از اين اونتها كليك كرد فرم خاصى باز شود. در اين صورت چه بايد بكنيد. پياده سازى اين كار بسيار ساده است. كافى است در Flash براى هر كدام از دكمه‌هاى خود يك Action تعريف كنيد و از دستور FSCommand استفاده نماييد. از يك مقدار دلخواه مثل fMatn يا fSearch استفاده كنيد و در دلفى نيز از اونت OnFSCommand به صورت زير استفاده كنيد:

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



+ نوشته شده در  یکشنبه 9 بهمن1384ساعت 19:41  توسط freefard  | 
مساله ديگرى كه ذهن بسيارى از برنامه‌نويسان را مشغول مى‌كند منوى 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;

+ نوشته شده در  یکشنبه 9 بهمن1384ساعت 19:40  توسط freefard  | 
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 را نصب نكرده‌ايد.

اكتيوايكس فلش را مي‌توانيد در پالت 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.

+ نوشته شده در  یکشنبه 9 بهمن1384ساعت 19:38  توسط freefard  | 
 

نظرات و مطالب شما
نام شما:
پست الکترونيک:
وب سايت:
       [حذف مشخصات]