vitaly_l>>осле того, как станет понятно что, на работу с БД требуется время,
Время требуется на любую работу. Или ты думаешь что стоит сделать uses ...SQLчтототам... программа начнет жить по особым чудесным законам?
>>сделать vangamode:=off
как только ТС уберет ненужные зависимости из "простого" примера...
>>т.к. БД - сама за собой всё почистит.
Блажен кто верит))
wofs>>А вот если очистку и заполнение вызывать из таймера 100мс, то все ок.
ненадо тут никакого таймера, нужен асинхронный вызов процедур очистки и заполнения в случае если ты хочешь выполнить их из метода очищаемого и заполняемого тривива.
Т.к. примера нормального у тебя нет, дам абстрактный но суть абсолютно таже:
Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
procedure AsyncButtonFree(Data: PtrInt);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.AsyncButtonFree(Data: PtrInt);
begin
Button1.free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.free;//так нельзя, закоментируй, раскоментируй следующую строку
//Application.QueueAsyncCall(@AsyncButtonFree,0);
end;
end.
у тебя AsyncButtonFree ессно будет называться подругому, и содержвть будет не
а
Добавлено спустя 2 минуты:в зависимости от режима компиляции (objfpc или delphi) в Application.QueueAsyncCall(@AsyncButtonFree,0); собака может понадобиться а может нет
Добавлено спустя 1 минуту 40 секунд:суть в том что QueueAsyncCall ставит переданые адреса процедур в очередь, и после обработки всех сообщений, перед уходом в idle (передачей выполнения оси) они выполняются