Work around bug #794: OK + Apply buttons enabled after just switching to a different tab

The bug seems caused by any TUpDown + TEdit which fire OnChange when they get visible for the first time. PageControl.OnChanging + .OnChange help here.
This commit is contained in:
Ansgar Becker
2008-10-12 09:56:02 +00:00
parent e14ec336e5
commit d70ec31ca4
2 changed files with 23 additions and 0 deletions

View File

@ -28,6 +28,8 @@ object optionsform: Toptionsform
ActivePage = tabMisc
Anchors = [akLeft, akTop, akRight, akBottom]
TabOrder = 3
OnChange = pagecontrolMainChange
OnChanging = pagecontrolMainChanging
object tabMisc: TTabSheet
Caption = 'Miscellaneous'
object Label4: TLabel

View File

@ -105,8 +105,12 @@ type
procedure FormCreate(Sender: TObject);
procedure chkNullBGClick(Sender: TObject);
procedure comboSQLColElementChange(Sender: TObject);
procedure pagecontrolMainChanging(Sender: TObject;
var AllowChange: Boolean);
procedure pagecontrolMainChange(Sender: TObject);
private
{ Private declarations }
FWasModified: Boolean;
public
{ Public declarations }
end;
@ -139,6 +143,23 @@ begin
end;
procedure Toptionsform.pagecontrolMainChanging(Sender: TObject;
var AllowChange: Boolean);
begin
// Remember modification state. First tab switch leads TEdit's with TUpDown
// to fire OnChange. Avoid enabling the buttons in that case.
FWasModified := btnOK.Enabled;
end;
procedure Toptionsform.pagecontrolMainChange(Sender: TObject);
begin
// See OnChanging procedure
btnOK.Enabled := FWasModified;
btnApply.Enabled := FWasModified;
end;
{**
Apply settings to registry, childwin and mainform
}