برنامه نویس

به وبلاگ خودتان خوش آمدید.

برنامه نویس

به وبلاگ خودتان خوش آمدید.

کد اجرای برنامه ای دیگر در دلفی

اگر بخواهیم در برنامه نوشته شده با دلفی برنامه دیگری را فراخوانی کنیم از کد زیر استفاده میکنیم


var
  Address:string;
begin
  Address:=ExtractFilePath(Application.ExeName)+'p.exe';
  if FileExists(Address) then
    ShellExecute(Handle,'open',PChar(Address),nil,nil,SW_SHOWNORMAL)
  else
    showmessage('فایل مربوطه پیدا نشد.');


اگر بخواهیم برنامه ای مثل ماشین حساب ویندوز فراخوانی کنیم از کد زیر میشود استفاده کرد


  WinExec('calc.exe',SW_SHOWNORMAL);


حذف رکورد از stringgrid دلفی

برای حذف رکورد جاری در stringgrid دلفی ، پروسیژر زیر را تعریف و در برنامه استفاد نمایید


procedure DeleteRow(Grid: TStringGrid);

var

  i: Integer;

begin

  for i := grid.Row to Grid.RowCount - 2 do

    Grid.Rows[i].Assign(Grid.Rows[i + 1]);

  Grid.RowCount := Grid.RowCount - 1;

end;



برای رکورد خاص به پروسیژر یک ورودی دیگر که شماره رکورد میتوان استفاده کرد مانند زیر :




procedure DeleteRow(Grid: TStringGrid; ARow: Integer);

var

  i: Integer;

begin

  for i := ARow to Grid.RowCount - 2 do

    Grid.Rows[i].Assign(Grid.Rows[i + 1]);

  Grid.RowCount := Grid.RowCount - 1;

end;

استفاده از ترد در دلفی

ابتدا باید ترد تعریف شود به صورت زیر


Type

   SefareshThread = Class(TThread)

//      procedure openquery();

تمامی توابع و پروسیژرها را در اینجا تعریف کنید

    protected

      procedure Execute; override;

end;


یک تایمر روی صفحه میتوان گذاشت برای فراخوانی ترد و کدهای زیر برای انجام عملیات مورد نظر 


procedure SefareshThread.Execute;

begin

  inherited;

  KalaOrderList_FRM.Timer1.Enabled:= false;

  KalaOrderList_FRM.sql3.DisableControls;

  KalaOrderList_FRM.sql2AfterScroll(nil);

  KalaOrderList_FRM.sql3.EnableControls;

end;


procedure SefareshThread.openquery;

begin

   Synchronize(openquery);

end;


procedure TKalaOrderList_FRM.Timer1Timer(Sender: TObject);

var

 T : SefareshThread;

begin

 T := SefareshThread.Create(True);

 T.FreeOnTerminate := True;

 T.Resume;

end;


و در مکان مورد نظر تایمر را فعال کنید


  Timer1.Enabled:=true;


نمایش تایم کارهای انجام شده در دلفی

کامپوننت acDateTimeCalc در تب app controls ++  قرار دارد روی فرم بگذارید و کد زیر را برای ان بنویسید

procedure TForm1.Button1Click(Sender: TObject);

begin

  acDateTimeCalc1.BeginTime:=Time;

  ADOQuery2.Close;

  ADOQuery2.Open;

  ADOQuery1.Close;

  ADOQuery1.Open;

  acDateTimeCalc1.EndTime:=Time;

  Caption:=Caption+'  '+IntToStr(acDateTimeCalc1.MSeconds);

end;

ازادسازی حافظه از فرم ها در دلفی

ازادسازی حافظه از فرمهای ایجاد شده 


var str_:tstringlist;

    i:integer;

begin

  str_:=tstringlist.Create;

  str_.Clear;

  for i:=0 to screen .FormCount-1 do

  begin

    if       (Screen.Forms[i].Name ='fmain')   then    Continue;

   Str_.add(screen .forms[i].Name) ;

  end;

  for  i:=0 to str_.Count-1 do

    (Application.FindComponent(str_.Strings[i])).free;

  str_.Free;

  ShowMessage' ok free  ');