From dae265d4b311f55e77fdde2d5fa29f6e239bbfc1 Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Fri, 6 Jul 2012 12:25:33 +0100 Subject: uidesigner: improves Color Property Editor display in Object Inspector window The Object Inspector now paints a square with the selected color, so it is much easier to see at a glance what colors are choosen in the various properties. --- uidesigner/vfdprops.pas | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'uidesigner') diff --git a/uidesigner/vfdprops.pas b/uidesigner/vfdprops.pas index b0c659fe..faf4d858 100644 --- a/uidesigner/vfdprops.pas +++ b/uidesigner/vfdprops.pas @@ -25,6 +25,7 @@ uses Classes, SysUtils, fpg_base, + fpg_main, fpg_widget, vfdwidgetclass, fpg_edit, @@ -96,6 +97,7 @@ type TPropertyColor = class(TVFDWidgetProperty) public + procedure DrawValue(wg: TfpgWidget; Canvas: TfpgCanvas; rect: TfpgRect; flags: integer); override; function ParseSourceLine(wg: TfpgWidget; const line: string): boolean; override; function GetPropertySource(wg: TfpgWidget; const ident: string): string; override; function GetValueText(wg: TfpgWidget): string; override; @@ -174,7 +176,6 @@ uses TypInfo, vfdformparser, vfdeditors, - fpg_main, fpg_dialogs; @@ -794,6 +795,34 @@ end; { TPropertyColor } +procedure TPropertyColor.DrawValue(wg: TfpgWidget; Canvas: TfpgCanvas; + rect: TfpgRect; flags: integer); +const + BLOCK_SIZE = 10; { for margin and square size } +var + s: TfpgString; + dx: integer; + i: integer; + c: TfpgColor; +begin + inherited DrawValue(wg, Canvas, rect, flags); + try + s := GetValueText(wg); + except + on E: Exception do + debugln('Detected an error: ', E.Message); + end; + dx := Canvas.Font.TextWidth(s) + BLOCK_SIZE; + i := GetOrdProp(wg, Name); + c := fpgColorToRGB(TfpgColor(i)); + { paint the color square } + Canvas.Color := c; + Canvas.FillRectangle(rect.Left+dx, rect.Top+((rect.Height-BLOCK_SIZE) div 2), BLOCK_SIZE, BLOCK_SIZE); + { paint a block border around the square } + Canvas.Color := clBlack; + Canvas.DrawRectangle(rect.Left+dx, rect.Top+((rect.Height-BLOCK_SIZE) div 2), BLOCK_SIZE, BLOCK_SIZE); +end; + function TPropertyColor.ParseSourceLine(wg: TfpgWidget; const line: string): boolean; var s: string; -- cgit v1.2.3-70-g09d2