ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/journaling/runtime/nongui/IBCustomDataSet.pas
(Generate patch)

Comparing ibx/trunk/runtime/nongui/IBCustomDataSet.pas (file contents):
Revision 209 by tony, Wed Mar 14 12:48:51 2018 UTC vs.
Revision 215 by tony, Thu Mar 15 16:25:03 2018 UTC

# Line 49 | Line 49 | interface
49   uses
50   {$IFDEF WINDOWS }
51    Windows,
52 < {$ELSE}
53 <  unix,
52 > {$ENDIF}
53 > {$IFDEF UNIX}
54 >  cthreads, unix,
55   {$ENDIF}
56    SysUtils, Classes, IBDatabase, IBExternals, IB,  IBSQL, Db,
57    IBUtils, IBBlob, IBSQLParser, IBDatabaseInfo, fpTimer;
# Line 301 | Line 302 | type
302      FDelayTimerValue: integer;
303      FTimer: TFPTimer;
304      procedure HandleRefreshTimer(Sender: TObject);
305 +    procedure SetDelayTimerValue(AValue: integer);
306    protected
307      procedure ActiveChanged; override;
308      procedure RecordChanged(Field: TField); override;
# Line 310 | Line 312 | type
312      constructor Create(ADataSet: TIBCustomDataSet);
313      destructor Destroy; override;
314      property DelayTimerValue: integer {in Milliseconds}
315 <            read FDelayTimerValue write FDelayTimerValue;
315 >            read FDelayTimerValue write SetDelayTimerValue;
316    end;
317  
318    TIBGeneratorApplyOnEvent = (gaeOnNewRecord,gaeOnPostRecord);
# Line 1410 | Line 1412 | begin
1412    inherited Create;
1413    FDataSet := ADataSet;
1414    FTimer := TFPTimer.Create(nil);
1415 <  FTimer.Enabled := true;
1415 >  FTimer.Enabled := false;
1416    FTimer.Interval := 0;
1417    FTimer.OnTimer := HandleRefreshTimer;
1418    FDelayTimerValue := 0;
# Line 1425 | Line 1427 | end;
1427  
1428   procedure TIBDataLink.HandleRefreshTimer(Sender: TObject);
1429   begin
1430 <  FTimer.Interval := 0;
1431 <  FDataSet.RefreshParams;
1430 >  FTimer.Enabled := false;
1431 >  if FDataSet.Active then
1432 >    FDataSet.RefreshParams;
1433 > end;
1434 >
1435 > procedure TIBDataLink.SetDelayTimerValue(AValue: integer);
1436 > begin
1437 >  if FDelayTimerValue = AValue then Exit;
1438 >  FDelayTimerValue := AValue;
1439 >  FTimer.Interval := FDelayTimerValue;
1440   end;
1441  
1442   procedure TIBDataLink.ActiveChanged;
# Line 1445 | Line 1455 | procedure TIBDataLink.RecordChanged(Fiel
1455   begin
1456    if (Field = nil) and FDataSet.Active then
1457    begin
1458 +    {$IF FPC_FULLVERSION >= 30002}
1459      if FDelayTimerValue > 0 then
1460 +    with FTimer do
1461      begin
1462 <      FTimer.Interval := FDelayTimerValue;
1463 <      FTimer.StartTimer;
1462 >      if Enabled then
1463 >      begin
1464 >        StopTimer;
1465 >        StartTimer;
1466 >      end
1467 >      else
1468 >        Enabled := true;
1469      end
1470      else
1471 +    {$IFEND}
1472        FDataSet.RefreshParams;
1473    end;
1474   end;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines