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 216 by tony, Thu Mar 15 17:21:13 2018 UTC

# Line 49 | Line 49 | interface
49   uses
50   {$IFDEF WINDOWS }
51    Windows,
52 < {$ELSE}
52 > {$ENDIF}
53 > {$IFDEF UNIX}
54    unix,
55   {$ENDIF}
56    SysUtils, Classes, IBDatabase, IBExternals, IB,  IBSQL, Db,
# 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 >  {$IF FPC_FULLVERSION >= 30002}
1440 >  FTimer.Interval := FDelayTimerValue;
1441 >  {$IFEND}
1442   end;
1443  
1444   procedure TIBDataLink.ActiveChanged;
# Line 1445 | Line 1457 | procedure TIBDataLink.RecordChanged(Fiel
1457   begin
1458    if (Field = nil) and FDataSet.Active then
1459    begin
1460 +    {$IF FPC_FULLVERSION >= 30002}
1461      if FDelayTimerValue > 0 then
1462 +    with FTimer do
1463      begin
1464 <      FTimer.Interval := FDelayTimerValue;
1465 <      FTimer.StartTimer;
1464 >      if Enabled then
1465 >      begin
1466 >        StopTimer;
1467 >        StartTimer;
1468 >      end
1469 >      else
1470 >        Enabled := true;
1471      end
1472      else
1473 +    {$IFEND}
1474        FDataSet.RefreshParams;
1475    end;
1476   end;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines