renamed widget updater identifiers

byevent->imperative
This commit is contained in:
Basile Burg 2015-03-08 14:23:02 +01:00
parent 4903e37542
commit c91e8e47f8
5 changed files with 101 additions and 90 deletions

View File

@ -29,8 +29,8 @@ type
procedure completionExecute(Sender: TObject); procedure completionExecute(Sender: TObject);
procedure PageControlChange(Sender: TObject); procedure PageControlChange(Sender: TObject);
protected protected
procedure UpdateByDelay; override; procedure updateDelayed; override;
procedure UpdateByEvent; override; procedure updateImperative; override;
private private
fKeyChanged: boolean; fKeyChanged: boolean;
fDoc: TCESynMemo; fDoc: TCESynMemo;
@ -167,8 +167,8 @@ begin
fDoc := aDoc; fDoc := aDoc;
pageControl.ActivePage := sheet; pageControl.ActivePage := sheet;
focusedEditorChanged; focusedEditorChanged;
beginUpdateByDelay; beginDelayedUpdate;
UpdateByEvent; updateImperative;
end; end;
procedure TCEEditorWidget.docClosing(aDoc: TCESynMemo); procedure TCEEditorWidget.docClosing(aDoc: TCESynMemo);
@ -180,7 +180,7 @@ begin
fDoc.Parent := nil; fDoc.Parent := nil;
fDoc := nil; fDoc := nil;
if sheet <> nil then sheet.Free; if sheet <> nil then sheet.Free;
UpdateByEvent; updateImperative;
end; end;
procedure TCEEditorWidget.docFocused(aDoc: TCESynMemo); procedure TCEEditorWidget.docFocused(aDoc: TCESynMemo);
@ -188,16 +188,16 @@ begin
if aDoc = fDoc then exit; if aDoc = fDoc then exit;
fDoc := aDoc; fDoc := aDoc;
focusedEditorChanged; focusedEditorChanged;
beginUpdateByDelay; beginDelayedUpdate;
UpdateByEvent; updateImperative;
end; end;
procedure TCEEditorWidget.docChanged(aDoc: TCESynMemo); procedure TCEEditorWidget.docChanged(aDoc: TCESynMemo);
begin begin
if fDoc <> aDoc then exit; if fDoc <> aDoc then exit;
fKeyChanged := true; fKeyChanged := true;
beginUpdateByDelay; beginDelayedUpdate;
UpdateByEvent; updateImperative;
end; end;
{$ENDREGION} {$ENDREGION}
@ -300,13 +300,13 @@ begin
if (pageControl.ActivePage.Caption = '') then if (pageControl.ActivePage.Caption = '') then
begin begin
fKeyChanged := true; fKeyChanged := true;
beginUpdateByDelay; beginDelayedUpdate;
end; end;
end; end;
procedure TCEEditorWidget.PageControlChange(Sender: TObject); procedure TCEEditorWidget.PageControlChange(Sender: TObject);
begin begin
UpdateByEvent; updateImperative;
end; end;
procedure TCEEditorWidget.completionExecute(Sender: TObject); procedure TCEEditorWidget.completionExecute(Sender: TObject);
@ -325,12 +325,12 @@ end;
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin begin
UpdateByEvent; updateImperative;
case Byte(Key) of case Byte(Key) of
VK_CLEAR,VK_RETURN,VK_BACK : fKeyChanged := true; VK_CLEAR,VK_RETURN,VK_BACK : fKeyChanged := true;
end; end;
if fKeyChanged then if fKeyChanged then
beginUpdateByDelay; beginDelayedUpdate;
// //
if (Key = VK_UP) and (shift = [ssShift,ssCtrl]) then if (Key = VK_UP) and (shift = [ssShift,ssCtrl]) then
getSymbolLoc; getSymbolLoc;
@ -339,19 +339,19 @@ end;
procedure TCEEditorWidget.memoKeyPress(Sender: TObject; var Key: char); procedure TCEEditorWidget.memoKeyPress(Sender: TObject; var Key: char);
begin begin
fKeyChanged := true; fKeyChanged := true;
beginUpdateByDelay; beginDelayedUpdate;
end; end;
procedure TCEEditorWidget.memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure TCEEditorWidget.memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin begin
beginUpdateByDelay; beginDelayedUpdate;
UpdateByEvent; updateImperative;
end; end;
procedure TCEEditorWidget.memoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure TCEEditorWidget.memoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin begin
if not (ssLeft in Shift) then exit; if not (ssLeft in Shift) then exit;
beginUpdateByDelay; beginDelayedUpdate;
end; end;
procedure TCEEditorWidget.memoCtrlClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure TCEEditorWidget.memoCtrlClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
@ -402,7 +402,7 @@ begin
DcdWrapper.getComplAtCursor(completion.ItemList); DcdWrapper.getComplAtCursor(completion.ItemList);
end; end;
procedure TCEEditorWidget.UpdateByEvent; procedure TCEEditorWidget.updateImperative;
const const
modstr: array[boolean] of string = ('...', 'MODIFIED'); modstr: array[boolean] of string = ('...', 'MODIFIED');
begin begin
@ -429,12 +429,12 @@ begin
end; end;
end; end;
procedure TCEEditorWidget.UpdateByDelay; procedure TCEEditorWidget.updateDelayed;
var var
md: string; md: string;
begin begin
if fDoc = nil then exit; if fDoc = nil then exit;
UpdateByEvent; updateImperative;
if not fKeyChanged then exit; if not fKeyChanged then exit;
// //
fKeyChanged := false; fKeyChanged := false;

View File

@ -47,7 +47,7 @@ type
procedure projFocused(aProject: TCEProject); procedure projFocused(aProject: TCEProject);
procedure projCompiling(aProject: TCEProject); procedure projCompiling(aProject: TCEProject);
protected protected
procedure UpdateByEvent; override; procedure updateImperative; override;
procedure SetVisible(Value: boolean); override; procedure SetVisible(Value: boolean); override;
public public
constructor create(aOwner: TComponent); override; constructor create(aOwner: TComponent); override;
@ -92,7 +92,7 @@ end;
procedure TCEProjectConfigurationWidget.SetVisible(Value: boolean); procedure TCEProjectConfigurationWidget.SetVisible(Value: boolean);
begin begin
inherited; inherited;
if Visible then UpdateByEvent; if Visible then updateImperative;
end; end;
{$ENDREGION --------------------------------------------------------------------} {$ENDREGION --------------------------------------------------------------------}
@ -100,9 +100,9 @@ end;
{$REGION ICEProjectObserver ----------------------------------------------------} {$REGION ICEProjectObserver ----------------------------------------------------}
procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projNew(aProject: TCEProject);
begin begin
beginUpdateByEvent; beginImperativeUpdate;
fProj := aProject; fProj := aProject;
if Visible then UpdateByEvent; if Visible then updateImperative;
syncroMode := false; syncroMode := false;
end; end;
@ -121,13 +121,13 @@ procedure TCEProjectConfigurationWidget.projChanged(aProject: TCEProject);
begin begin
if fProj <> aProject then exit; if fProj <> aProject then exit;
fProj := aProject; fProj := aProject;
if Visible then UpdateByEvent; if Visible then updateImperative;
end; end;
procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projFocused(aProject: TCEProject);
begin begin
fProj := aProject; fProj := aProject;
if Visible then UpdateByEvent; if Visible then updateImperative;
end; end;
procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject); procedure TCEProjectConfigurationWidget.projCompiling(aProject: TCEProject);
@ -142,9 +142,9 @@ begin
if Updating then exit; if Updating then exit;
if selConf.ItemIndex = -1 then exit; if selConf.ItemIndex = -1 then exit;
// //
beginUpdateByEvent; beginImperativeUpdate;
fProj.ConfigurationIndex := selConf.ItemIndex; fProj.ConfigurationIndex := selConf.ItemIndex;
endUpdateByEvent; endImperativeUpdate;
end; end;
procedure TCEProjectConfigurationWidget.TreeChange(Sender: TObject; procedure TCEProjectConfigurationWidget.TreeChange(Sender: TObject;
@ -261,12 +261,12 @@ begin
if fProj = nil then exit; if fProj = nil then exit;
// //
nme := ''; nme := '';
beginUpdateByEvent; beginImperativeUpdate;
cfg := fProj.addConfiguration; cfg := fProj.addConfiguration;
// note: Cancel is actually related to the conf. name not to the add operation. // note: Cancel is actually related to the conf. name not to the add operation.
if InputQuery('Configuration name', '', nme) then cfg.name := nme; if InputQuery('Configuration name', '', nme) then cfg.name := nme;
fProj.ConfigurationIndex := cfg.Index; fProj.ConfigurationIndex := cfg.Index;
endUpdateByEvent; endImperativeUpdate;
end; end;
procedure TCEProjectConfigurationWidget.btnDelConfClick(Sender: TObject); procedure TCEProjectConfigurationWidget.btnDelConfClick(Sender: TObject);
@ -274,13 +274,13 @@ begin
if fProj = nil then exit; if fProj = nil then exit;
if fProj.OptionsCollection.Count = 1 then exit; if fProj.OptionsCollection.Count = 1 then exit;
// //
beginUpdateByEvent; beginImperativeUpdate;
inspector.TIObject := nil; inspector.TIObject := nil;
inspector.Clear; inspector.Clear;
Invalidate; Invalidate;
fProj.OptionsCollection.Delete(selConf.ItemIndex); fProj.OptionsCollection.Delete(selConf.ItemIndex);
fProj.ConfigurationIndex := 0; fProj.ConfigurationIndex := 0;
endUpdateByEvent; endImperativeUpdate;
end; end;
procedure TCEProjectConfigurationWidget.btnCloneCurrClick(Sender: TObject); procedure TCEProjectConfigurationWidget.btnCloneCurrClick(Sender: TObject);
@ -291,13 +291,13 @@ begin
if fProj = nil then exit; if fProj = nil then exit;
// //
nme := ''; nme := '';
beginUpdateByEvent; beginImperativeUpdate;
src := fProj.currentConfiguration; src := fProj.currentConfiguration;
trg := fProj.addConfiguration; trg := fProj.addConfiguration;
trg.assign(src); trg.assign(src);
if InputQuery('Configuration name', '', nme) then trg.name := nme; if InputQuery('Configuration name', '', nme) then trg.name := nme;
fProj.ConfigurationIndex := trg.Index; fProj.ConfigurationIndex := trg.Index;
endUpdateByEvent; endImperativeUpdate;
end; end;
procedure TCEProjectConfigurationWidget.btnSyncEditClick(Sender: TObject); procedure TCEProjectConfigurationWidget.btnSyncEditClick(Sender: TObject);
@ -365,7 +365,7 @@ begin
end; end;
end; end;
procedure TCEProjectConfigurationWidget.UpdateByEvent; procedure TCEProjectConfigurationWidget.updateImperative;
var var
i: NativeInt; i: NativeInt;
begin begin

View File

@ -51,7 +51,7 @@ type
procedure replaceEvent(Sender: TObject; const ASearch, AReplace: procedure replaceEvent(Sender: TObject; const ASearch, AReplace:
string; Line, Column: integer; var ReplaceAction: TSynReplaceAction); string; Line, Column: integer; var ReplaceAction: TSynReplaceAction);
protected protected
procedure UpdateByEvent; override; procedure updateImperative; override;
public public
constructor Create(aOwner: TComponent); override; constructor Create(aOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
@ -221,7 +221,7 @@ begin
fHasRestarted := false; fHasRestarted := false;
chkFromCur.Checked := true; chkFromCur.Checked := true;
end; end;
UpdateByEvent; updateImperative;
end; end;
procedure TCESearchWidget.actReplaceNextExecute(sender: TObject); procedure TCESearchWidget.actReplaceNextExecute(sender: TObject);
@ -249,7 +249,7 @@ begin
if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then if fDoc.SearchReplace(fToFind, fReplaceWth, getOptions + [ssoReplace]) <> 0 then
fHasSearched := true; fHasSearched := true;
fDoc.OnReplaceText := nil; fDoc.OnReplaceText := nil;
UpdateByEvent; updateImperative;
end; end;
procedure TCESearchWidget.actReplaceAllExecute(sender: TObject); procedure TCESearchWidget.actReplaceAllExecute(sender: TObject);
@ -275,7 +275,7 @@ begin
end; end;
end; end;
fDoc.OnReplaceText := nil; fDoc.OnReplaceText := nil;
UpdateByEvent; updateImperative;
end; end;
{$ENDREGION} {$ENDREGION}
@ -283,20 +283,20 @@ end;
procedure TCESearchWidget.docNew(aDoc: TCESynMemo); procedure TCESearchWidget.docNew(aDoc: TCESynMemo);
begin begin
fDoc := aDoc; fDoc := aDoc;
UpdateByEvent; updateImperative;
end; end;
procedure TCESearchWidget.docClosing(aDoc: TCESynMemo); procedure TCESearchWidget.docClosing(aDoc: TCESynMemo);
begin begin
if fDoc = aDoc then fDoc := nil; if fDoc = aDoc then fDoc := nil;
UpdateByEvent; updateImperative;
end; end;
procedure TCESearchWidget.docFocused(aDoc: TCESynMemo); procedure TCESearchWidget.docFocused(aDoc: TCESynMemo);
begin begin
if fDoc = aDoc then exit; if fDoc = aDoc then exit;
fDoc := aDoc; fDoc := aDoc;
UpdateByEvent; updateImperative;
end; end;
procedure TCESearchWidget.docChanged(aDoc: TCESynMemo); procedure TCESearchWidget.docChanged(aDoc: TCESynMemo);
@ -315,7 +315,7 @@ end;
procedure TCESearchWidget.chkEnableRepChange(Sender: TObject); procedure TCESearchWidget.chkEnableRepChange(Sender: TObject);
begin begin
if Updating then exit; if Updating then exit;
UpdateByEvent; updateImperative;
end; end;
procedure TCESearchWidget.cbReplaceWthChange(Sender: TObject); procedure TCESearchWidget.cbReplaceWthChange(Sender: TObject);
@ -325,7 +325,7 @@ begin
fHasSearched := false; fHasSearched := false;
end; end;
procedure TCESearchWidget.UpdateByEvent; procedure TCESearchWidget.updateImperative;
begin begin
fActFindNext.Enabled := fDoc <> nil; fActFindNext.Enabled := fDoc <> nil;
fActReplaceNext.Enabled := (fDoc <> nil) and (chkEnableRep.Checked); fActReplaceNext.Enabled := (fDoc <> nil) and (chkEnableRep.Checked);

View File

@ -102,8 +102,7 @@ type
procedure btnRefreshClick(Sender: TObject); procedure btnRefreshClick(Sender: TObject);
procedure TreeDeletion(Sender: TObject; Node: TTreeNode); procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
procedure TreeFilterEdit1AfterFilter(Sender: TObject); procedure TreeFilterEdit1AfterFilter(Sender: TObject);
function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean function TreeFilterEdit1FilterItem(Item: TObject; out Done: Boolean): Boolean;
): Boolean;
procedure TreeFilterEdit1MouseEnter(Sender: TObject); procedure TreeFilterEdit1MouseEnter(Sender: TObject);
procedure TreeKeyPress(Sender: TObject; var Key: char); procedure TreeKeyPress(Sender: TObject; var Key: char);
private private
@ -149,7 +148,7 @@ type
function optionedWantContainer: TPersistent; function optionedWantContainer: TPersistent;
procedure optionedEvent(anEvent: TOptionEditorEvent); procedure optionedEvent(anEvent: TOptionEditorEvent);
protected protected
procedure UpdateByDelay; override; procedure updateDelayed; override;
// //
function contextName: string; override; function contextName: string; override;
function contextActionCount: integer; override; function contextActionCount: integer; override;
@ -411,17 +410,17 @@ end;
procedure TCESymbolListWidget.actAutoRefreshExecute(Sender: TObject); procedure TCESymbolListWidget.actAutoRefreshExecute(Sender: TObject);
begin begin
autoRefresh := not autoRefresh; autoRefresh := fActAutoRefresh.Checked;
end; end;
procedure TCESymbolListWidget.actRefreshOnChangeExecute(Sender: TObject); procedure TCESymbolListWidget.actRefreshOnChangeExecute(Sender: TObject);
begin begin
refreshOnChange := not refreshOnChange; refreshOnChange := fActRefreshOnChange.Checked;
end; end;
procedure TCESymbolListWidget.actRefreshOnFocusExecute(Sender: TObject); procedure TCESymbolListWidget.actRefreshOnFocusExecute(Sender: TObject);
begin begin
refreshOnFocus := not refreshOnFocus; refreshOnFocus := fActRefreshOnFocus.Checked;
end; end;
procedure TCESymbolListWidget.actCopyIdentExecute(Sender: TObject); procedure TCESymbolListWidget.actCopyIdentExecute(Sender: TObject);
@ -460,7 +459,7 @@ end;
procedure TCESymbolListWidget.docNew(aDoc: TCESynMemo); procedure TCESymbolListWidget.docNew(aDoc: TCESynMemo);
begin begin
fDoc := aDoc; fDoc := aDoc;
beginUpdateByDelay; beginDelayedUpdate;
end; end;
procedure TCESymbolListWidget.docClosing(aDoc: TCESynMemo); procedure TCESymbolListWidget.docClosing(aDoc: TCESynMemo);
@ -477,7 +476,7 @@ begin
fDoc := aDoc; fDoc := aDoc;
if not Visible then exit; if not Visible then exit;
// //
if fAutoRefresh then beginUpdateByDelay if fAutoRefresh then beginDelayedUpdate
else if fRefreshOnFocus then callToolProc; else if fRefreshOnFocus then callToolProc;
end; end;
@ -486,13 +485,13 @@ begin
if fDoc <> aDoc then exit; if fDoc <> aDoc then exit;
if not Visible then exit; if not Visible then exit;
// //
if fAutoRefresh then beginUpdateByDelay if fAutoRefresh then beginDelayedUpdate
else if fRefreshOnChange then callToolProc; else if fRefreshOnChange then callToolProc;
end; end;
{$ENDREGION} {$ENDREGION}
{$REGION Symbol-tree things ----------------------------------------------------} {$REGION Symbol-tree things ----------------------------------------------------}
procedure TCESymbolListWidget.UpdateByDelay; procedure TCESymbolListWidget.updateDelayed;
begin begin
if not fAutoRefresh then exit; if not fAutoRefresh then exit;
callToolProc; callToolProc;

View File

@ -24,7 +24,8 @@ type
fLoopInter: Integer; fLoopInter: Integer;
fUpdaterAuto: TTimer; fUpdaterAuto: TTimer;
fUpdaterDelay: TTimer; fUpdaterDelay: TTimer;
fWidgUpdateCount: NativeInt; fImperativeUpdateCount: Integer;
fLoopUpdateCount: Integer;
procedure setDelayDur(aValue: Integer); procedure setDelayDur(aValue: Integer);
procedure setLoopInt(aValue: Integer); procedure setLoopInt(aValue: Integer);
procedure updaterAutoProc(Sender: TObject); procedure updaterAutoProc(Sender: TObject);
@ -39,11 +40,11 @@ type
fModal: boolean; fModal: boolean;
fID: string; fID: string;
// a descendant overrides to implementi a periodic update. // a descendant overrides to implementi a periodic update.
procedure UpdateByLoop; virtual; procedure updateLoop; virtual;
// a descendant overrides to implement an event driven update. // a descendant overrides to implement an imperative update.
procedure UpdateByEvent; virtual; procedure updateImperative; virtual;
// a descendant overrides to implement a delayed update event. // a descendant overrides to implement a delayed update.
procedure UpdateByDelay; virtual; procedure updateDelayed; virtual;
// //
function contextName: string; virtual; function contextName: string; virtual;
function contextActionCount: integer; virtual; function contextActionCount: integer; virtual;
@ -63,19 +64,23 @@ type
// restarts the wait period to the delayed update event. // restarts the wait period to the delayed update event.
// if not re-called during 'updaterByDelayDuration' ms then // if not re-called during 'updaterByDelayDuration' ms then
// 'UpdateByDelay' is called once. // 'UpdateByDelay' is called once.
procedure beginUpdateByDelay; procedure beginDelayedUpdate;
// prevent any pending update. // prevent any pending update.
procedure stopUpdateByDelay; procedure stopDelayedUpdate;
// immediate call any pending update. // immediate call any pending delayed update.
procedure endUpdatebyDelay; procedure forceDelayedUpdate;
// increments the updates count.
procedure beginUpdateByEvent; // increments the imperative updates count.
// decrements the update count and call 'UpdateByEvent' if the procedure beginImperativeUpdate;
// counter value is null. // decrements the imperative updates count and call updateImperative() if the
procedure endUpdateByEvent; // counter value is equal to zero.
// immediate call 'UpdateByEvent' procedure endImperativeUpdate;
procedure forceUpdateByEvent; // calls updateImperative() immediatly
// procedure forceImperativeUpdate;
// increment a flag used to indicate if updateLoop has to be called
procedure IncLoopUpdate;
// returns true if one of the three updater is processing. // returns true if one of the three updater is processing.
property updating: boolean read fUpdating; property updating: boolean read fUpdating;
// true by default, allow a widget to be docked. // true by default, allow a widget to be docked.
@ -223,42 +228,47 @@ begin
fUpdaterAuto.Interval := fLoopInter; fUpdaterAuto.Interval := fLoopInter;
end; end;
procedure TCEWidget.beginUpdateByEvent; procedure TCEWidget.IncLoopUpdate;
begin begin
Inc(fWidgUpdateCount); inc(fLoopUpdateCount);
end; end;
procedure TCEWidget.endUpdateByEvent; procedure TCEWidget.beginImperativeUpdate;
begin begin
Dec(fWidgUpdateCount); Inc(fImperativeUpdateCount);
if fWidgUpdateCount > 0 then exit; end;
procedure TCEWidget.endImperativeUpdate;
begin
Dec(fImperativeUpdateCount);
if fImperativeUpdateCount > 0 then exit;
fUpdating := true; fUpdating := true;
UpdateByEvent; updateImperative;
fUpdating := false; fUpdating := false;
fWidgUpdateCount := 0; fImperativeUpdateCount := 0;
end; end;
procedure TCEWidget.forceUpdateByEvent; procedure TCEWidget.forceImperativeUpdate;
begin begin
fUpdating := true; fUpdating := true;
UpdateByEvent; updateImperative;
fUpdating := false; fUpdating := false;
fWidgUpdateCount := 0; fImperativeUpdateCount := 0;
end; end;
procedure TCEWidget.beginUpdateByDelay; procedure TCEWidget.beginDelayedUpdate;
begin begin
fUpdaterDelay.Enabled := false; fUpdaterDelay.Enabled := false;
fUpdaterDelay.Enabled := true; fUpdaterDelay.Enabled := true;
fUpdaterDelay.OnTimer := @updaterLatchProc; fUpdaterDelay.OnTimer := @updaterLatchProc;
end; end;
procedure TCEWidget.stopUpdateByDelay; procedure TCEWidget.stopDelayedUpdate;
begin begin
fUpdaterDelay.OnTimer := nil; fUpdaterDelay.OnTimer := nil;
end; end;
procedure TCEWidget.endUpdateByDelay; procedure TCEWidget.forceDelayedUpdate;
begin begin
updaterLatchProc(nil); updaterLatchProc(nil);
end; end;
@ -266,27 +276,29 @@ end;
procedure TCEWidget.updaterAutoProc(Sender: TObject); procedure TCEWidget.updaterAutoProc(Sender: TObject);
begin begin
fUpdating := true; fUpdating := true;
UpdateByLoop; if fLoopUpdateCount > 0 then
updateLoop;
fLoopUpdateCount := 0;
fUpdating := false; fUpdating := false;
end; end;
procedure TCEWidget.updaterLatchProc(Sender: TObject); procedure TCEWidget.updaterLatchProc(Sender: TObject);
begin begin
fUpdating := true; fUpdating := true;
UpdateByDelay; updateDelayed;
fUpdating := false; fUpdating := false;
fUpdaterDelay.OnTimer := nil; fUpdaterDelay.OnTimer := nil;
end; end;
procedure TCEWidget.UpdateByLoop; procedure TCEWidget.updateLoop;
begin begin
end; end;
procedure TCEWidget.UpdateByEvent; procedure TCEWidget.updateImperative;
begin begin
end; end;
procedure TCEWidget.UpdateByDelay; procedure TCEWidget.updateDelayed;
begin begin
end; end;
{$ENDREGION} {$ENDREGION}