From 3eebee734896aa4a540031b4e9e391eb230f20f2 Mon Sep 17 00:00:00 2001 From: graemeg Date: Sat, 26 Apr 2008 07:18:29 +0000 Subject: UI Designer's Object Inspector now waits untill you press Enter before text or integer values are set. Changing the focus of a text or integer property without pressing Enter will reset the changes to the previous value. A nice undo feature. --- examples/apps/uidesigner/vfdprops.pas | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'examples/apps') diff --git a/examples/apps/uidesigner/vfdprops.pas b/examples/apps/uidesigner/vfdprops.pas index 32166060..fa2c8cd7 100644 --- a/examples/apps/uidesigner/vfdprops.pas +++ b/examples/apps/uidesigner/vfdprops.pas @@ -91,6 +91,11 @@ TPropertyFontDesc = class(TPropertyString) TGeneralPropertyEditor = class(TVFDPropertyEditor) + private + FOrigValue: string; + procedure EditExit(Sender: TObject); + procedure EditKeyPressed(Sender: TObject; var KeyCode: word; + var ShiftState: TShiftState; var Consumed: boolean); public etype: TGPEType; edit: TfpgEdit; @@ -274,13 +279,33 @@ function TPropertyInteger.ParseSourceLine(wg: TfpgWidget; const line: string): b { TGeneralPropertyEditor } +procedure TGeneralPropertyEditor.EditExit(Sender: TObject); +begin + if FOrigValue <> edit.Text then + edit.Text := FOrigvalue; +end; + +procedure TGeneralPropertyEditor.EditKeyPressed(Sender: TObject; + var KeyCode: word; var ShiftState: TShiftState; var Consumed: boolean); +begin + if (KeyCode = keyReturn) or (KeyCode = keyPEnter) then + begin + UpdateProperty(nil); + FOrigValue := edit.Text; + end + else + inherited; +end; + procedure TGeneralPropertyEditor.CreateLayout; begin Anchors := [anTop, anLeft, anRight]; Edit := TfpgEdit.Create(self); Edit.SetPosition(0, 0, Width, Height); Edit.Anchors := Anchors; - Edit.OnChange := @UpdateProperty; +// Edit.OnChange := @UpdateProperty; + Edit.OnKeyPress := @EditKeyPressed; + Edit.OnExit :=@EditExit; Edit.Visible := True; end; @@ -301,10 +326,12 @@ procedure TGeneralPropertyEditor.LoadStrValue(wg: TfpgWidget); procedure TGeneralPropertyEditor.LoadValue(wg: TfpgWidget); begin case etype of - gptInteger: LoadIntValue(wg); + gptInteger: + LoadIntValue(wg); else LoadStrValue(wg); end; + FOrigValue := edit.Text; end; procedure TGeneralPropertyEditor.StoreIntValue(wg: TfpgWidget); -- cgit v1.2.3-54-g00ecf