Update of /cvsroot/jvcl/dev/JVCL3/examples/JvColorCombo In directory sc8-pr-cvs1:/tmp/cvs-serv4702/JVCL3/examples/JvColorCombo Added Files: ColorComboDemo.dof ColorComboDemo.dpr ColorComboDemo.res JvColorComboDemoMainFormU.dfm JvColorComboDemoMainFormU.pas Log Message: - Copied jvcl/devtools and jvcl/examples dev/JVCL3 - Copied JVCLConvert *.dat files to dev/JVCL3/converter --- NEW FILE: ColorComboDemo.dof --- [Directories] OutputDir=..\..\Bin UnitOutputDir=..\..\Dcu SearchPath=..\..\Source;..\..\Common --- NEW FILE: ColorComboDemo.dpr --- program ColorComboDemo; uses Forms, JvColorComboDemoMainFormU in 'JvColorComboDemoMainFormU.pas' {JvColorComboDemoMainForm}; {$R *.res} begin Application.Initialize; Application.CreateForm(TJvColorComboDemoMainForm, JvColorComboDemoMainForm); Application.CreateForm(TJvColorComboDemoMainForm, JvColorComboDemoMainForm); Application.Run; end. --- NEW FILE: ColorComboDemo.res --- (This appears to be a binary file; contents omitted.) --- NEW FILE: JvColorComboDemoMainFormU.dfm --- object JvColorComboDemoMainForm: TJvColorComboDemoMainForm Left = 459 Top = 135 Width = 476 Height = 454 Caption = 'JvColorCombo Demo' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Shell Dlg 2' Font.Style = [] OldCreateOrder = False OnCloseQuery = FormCloseQuery OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 16 Top = 8 Width = 34 Height = 13 Caption = 'Colors:' end object Label2: TLabel Left = 168 Top = 8 Width = 99 Height = 13 Caption = 'Custom Color Prefix:' end object Label3: TLabel Left = 304 Top = 8 Width = 38 Height = 13 Caption = 'Display:' end object JvColorComboBox1: TJvColorComboBox Left = 16 Top = 24 Width = 145 Height = 20 AutoSave.Registry.Key = 'DefaultColor' AutoSave.Registry.Path = '\Software\JEDI\ColorTest' ColorNameMap.Strings = ( 'clBlack=Black' 'clMaroon=Maroon' 'clGreen=Green' 'clOlive=Olive' 'clNavy=Navy' 'clPurple=Purple' 'clTeal=Teal' 'clGray=Gray' 'clSilver=Silver' 'clRed=Red' 'clLime=Lime' 'clYellow=Yellow' 'clBlue=Blue' 'clFuchsia=Fuchsia' 'clAqua=Aqua' 'clLtGray=Light Gray' 'clDkGray=Dark Gray' 'clWhite=White' 'clMoneyGreen=Money Green' 'clSkyBlue=Sky Blue' 'clCream=Cream' 'clMedGray=Medium Gray' 'clScrollBar=ScrollBar' 'clBackground=Background' 'clActiveCaption=Active Caption' 'clInactiveCaption=Inactive Caption' 'clMenu=Menu' 'clWindow=Window' 'clWindowFrame=Window Frame' 'clMenuText=Menu Text' 'clWindowText=Window Text' 'clCaptionText=Caption Text' 'clActiveBorder=Active Border' 'clInactiveBorder=Inactive Border' 'clAppWorkSpace=Application Workspace' 'clHighlight=Highlight' 'clHighlightText=Highlight Text' 'clBtnFace=Button Face' 'clBtnShadow=Button Shadow' 'clGrayText=Gray Text' 'clBtnText=Button Text' 'clInactiveCaptionText=Inactive Caption Text' 'clBtnHighlight=Button Highlight' 'cl3DDkShadow=3D Dark Shadow' 'cl3DLight=3D Light' 'clInfoText=Info Text' 'clInfoBk=Info Background' 'clHotLight=Hot Light' 'clGradientActiveCaption=Gradient Active Caption' 'clGradientInactiveCaption=Gradient Inactive Caption' 'clMenuHighlight=Menu Highlight' 'clMenuBar=MenuBar' 'clNone=None' 'clDefault=Default') ColorValue = clNavy ColorDialogText = '(Other...)' NewColorText = 'Custom Color %d' Options = [coText, coSysColors, coCustomColors] DroppedDownWidth = 145 OnNewColor = JvColorComboBox1NewColor TabOrder = 0 end object memInfo: TMemo Left = 24 Top = 96 Width = 420 Height = 321 Anchors = [akLeft, akTop, akRight, akBottom] ScrollBars = ssVertical TabOrder = 1 end object btnColorNames: TButton Left = 24 Top = 64 Width = 90 Height = 25 Caption = 'Get Color Map:' TabOrder = 2 OnClick = btnColorNamesClick end object edNameTemplate: TEdit Left = 168 Top = 24 Width = 121 Height = 21 TabOrder = 3 Text = 'Custom Color %d' end object chkAllowCustom: TCheckBox Left = 168 Top = 64 Width = 121 Height = 17 Caption = 'Display Color Dialog' Checked = True State = cbChecked TabOrder = 4 OnClick = cbDisplayStyleChange end object btnCustColors: TButton Left = 352 Top = 64 Width = 89 Height = 25 Caption = 'Custom Colors' TabOrder = 5 OnClick = btnCustColorsClick end object cbDisplayStyle: TComboBox Left = 304 Top = 23 Width = 145 Height = 21 Style = csDropDownList ItemHeight = 13 TabOrder = 6 OnChange = cbDisplayStyleChange Items.Strings = ( '(none)' 'Text' 'Hex' 'RGB') end end --- NEW FILE: JvColorComboDemoMainFormU.pas --- unit JvColorComboDemoMainFormU; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, JvColorCombo, StdCtrls, JvCombobox; type TJvColorComboDemoMainForm = class(TForm) JvColorComboBox1: TJvColorComboBox; memInfo: TMemo; btnColorNames: TButton; Label1: TLabel; Label2: TLabel; edNameTemplate: TEdit; chkAllowCustom: TCheckBox; btnCustColors: TButton; Label3: TLabel; cbDisplayStyle: TComboBox; procedure FormCreate(Sender: TObject); procedure btnColorNamesClick(Sender: TObject); procedure JvColorComboBox1NewColor(Sender: TObject; Color: TColor; var DisplayName: string; var AllowAdd: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure btnCustColorsClick(Sender: TObject); procedure cbDisplayStyleChange(Sender: TObject); private { Private declarations } procedure LoadSettings; procedure SaveSettings; end; var JvColorComboDemoMainForm: TJvColorComboDemoMainForm; implementation uses IniFiles; {$R *.dfm} procedure TJvColorComboDemoMainForm.FormCreate(Sender: TObject); begin JvColorComboBox1.Options := [coText, coSysColors, coCustomColors]; JvColorComboBox1.GetColors; LoadSettings; cbDisplayStyle.ItemIndex := 1; cbDisplayStyleChange(nil); end; procedure TJvColorComboDemoMainForm.btnColorNamesClick(Sender: TObject); begin memInfo.Lines := JvColorComboBox1.ColorNameMap; end; procedure TJvColorComboDemoMainForm.JvColorComboBox1NewColor(Sender: TObject; Color: TColor; var DisplayName: string; var AllowAdd: Boolean); begin // make sure the new color isn't already in the list AllowAdd := JvColorComboBox1.FindColor(Color) < 0; if AllowAdd then begin if edNameTemplate.Text <> '' then // CustomColorCount isn't incremented until *after* this event has finished with AllowAdd = true, so add 1 here: DisplayName := Format(edNameTemplate.Text, [JvColorComboBox1.CustomColorCount + 1]); end; end; procedure TJvColorComboDemoMainForm.LoadSettings; var CurColor: TColor; S: string; SL: TStringlist; i: integer; begin // load color name map and saved custom colors CurColor := JvColorComboBox1.ColorValue; JvColorComboBox1.Options := JvColorComboBox1.Options - [coCustomColors]; try S := ChangeFileExt(Application.ExeName, '.ini'); if FileExists(S) then begin SL := TStringlist.Create; try with TIniFile.Create(S) do try edNameTemplate.Text := ReadString('Settings', 'Custom Template', edNameTemplate.Text); ReadSectionValues('Color Names', JvColorComboBox1.ColorNameMap); ReadSection('Custom Colors', SL); for i := 0 to SL.Count - 1 do JvColorComboBox1.AddColor(StringToColor(SL[i]),''); finally Free; end; finally SL.Free; end; end; finally JvColorComboBox1.ColorValue := CurColor; cbDisplayStyleChange(nil); end; end; procedure TJvColorComboDemoMainForm.SaveSettings; var i: integer; AList: TList; begin // save color name map and current custom colors JvColorComboBox1.Options := JvColorComboBox1.Options - [coCustomColors]; try with TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')) do try AList := TList.Create; try JvColorComboBox1.GetCustomColors(AList); EraseSection('Custom Colors'); for i := 0 to AList.Count - 1 do WriteString('Custom Colors', ColorToString(integer(AList[i])), ''); finally AList.Free; end; WriteString('Settings', 'Custom Template', edNameTemplate.Text); // save color map so users can translate them if they wish // no need to save the custom names since they are // set dynamically at load time (see JvColorComboBox1NewColor) EraseSection('Color Names'); with JvColorComboBox1.ColorNameMap do for i := 0 to Count - 1 do WriteString('Color Names', Names[i], Values[Names[i]]); finally Free; end; finally cbDisplayStyleChange(nil); end; end; procedure TJvColorComboDemoMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin SaveSettings; end; procedure TJvColorComboDemoMainForm.btnCustColorsClick(Sender: TObject); var AList: TList; i: integer; begin AList := TList.Create; memInfo.Lines.Clear; try // the returned TList contains a list of TColor items JvColorComboBox1.GetCustomColors(AList); for i := 0 to AList.Count - 1 do memInfo.Lines.Add(ColorToString(integer(AList[i]))); finally AList.Free; end; end; procedure TJvColorComboDemoMainForm.cbDisplayStyleChange(Sender: TObject); var O: TJvColorComboOptions; begin O := JvColorComboBox1.Options; O := O - [coText, coHex, coRGB, coCustomColors]; if chkAllowCustom.Checked then Include(O, coCustomColors); case cbDisplayStyle.ItemIndex of 1: Include(O, coText); 2: Include(O, coHex); 3: Include(O, coRGB); end; JvColorComboBox1.Options := O; end; end. |