اگر بخواهیم در برنامه نوشته شده با دلفی برنامه دیگری را فراخوانی کنیم از کد زیر استفاده میکنیم
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 دلفی ، پروسیژر زیر را تعریف و در برنامه استفاد نمایید
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 ');