unit Main; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, EditBtn, CheckLst, StdCtrls, ExtCtrls, RTTIGrids, ExCheckCombo, PropEdits, ObjectInspector; type { TMainForm } TMainForm = class(TForm) Button1: TButton; Button4: TButton; Button5: TButton; CheckBox1: TCheckBox; ImageList1: TImageList; Memo1: TMemo; Panel1: TPanel; Splitter1: TSplitter; Splitter2: TSplitter; TIPropertyGrid1: TTIPropertyGrid; procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure CheckBox1Change(Sender: TObject); procedure FormCreate(Sender: TObject); private FCombo: TCheckComboBoxEx; procedure CheckComboChange(Sender: TObject); procedure CheckComboItemChange(Sender: TObject; Index: Integer); procedure CheckComboItemClick(Sender: TObject; Index: Integer); public end; var MainForm: TMainForm; implementation {$R *.lfm} { TMainForm } procedure TMainForm.FormCreate(Sender: TObject); begin FCombo := TCheckComboBoxEx.Create(self); FCombo.Align := alTop; FCombo.BorderSpacing.Around := 6; FCombo.Items.Add('Item 1'); FCombo.Items.Add('Item 2'); FCombo.Items.Add('Item 3'); FCombo.AddItem('Item 4', true); FCombo.AddItem('Item 5', true, false); FCombo.AddItem('Item 0'); FCombo.Parent := Panel1; FCombo.Hint := 'Default hint'; FCombo.TextHint := 'Check items, please...'; FCombo.OnChange := @CheckComboChange; FCombo.OnItemChange := @CheckComboItemChange; FCombo.OnItemClick := @CheckComboItemClick; FCombo.DropDownImageIndex.NormalDown := 0; FCombo.DropDownImageIndex.HotDown := 2; FCombo.DropDownImageIndex.PressedDown := 2; FCombo.DropDownImageIndex.NormalUp := 1; FCombo.DropDownImageIndex.HotUp := 3; FCombo.DropDownImageIndex.PressedUp := 3; TIPropertyGrid1.TIObject := FCombo; ActiveControl := FCombo; end; procedure TMainForm.CheckComboChange(Sender: TObject); begin Memo1.Lines.Add('CheckComboBoxEx.OnChange'); end; procedure TMainForm.CheckComboItemChange(Sender: TObject; Index: Integer); begin Memo1.Lines.Add('CheckComboBoxEx.OnItemChange, Index ' + Index.ToString); end; procedure TMainForm.CheckComboItemClick(Sender: TObject; Index: Integer); begin Memo1.Lines.Add('CheckComboBoxEx.OnItemClick, Index ' + Index.ToString); end; procedure TMainForm.Button1Click(Sender: TObject); begin FCombo.Checked[0] := not FCombo.Checked[0]; end; procedure TMainForm.Button4Click(Sender: TObject); begin FCombo.CheckAll(cbChecked);; end; procedure TMainForm.Button5Click(Sender: TObject); begin FCombo.CheckAll(cbUnchecked); end; procedure TMainForm.CheckBox1Change(Sender: TObject); begin if Checkbox1.Checked then begin FCombo.Images := ImageList1; FCombo.ButtonWidth := FCombo.Height; FCombo.Spacing := 4; end else begin FCombo.Images := nil; FCombo.ButtonWidth := -1; FCombo.Spacing := 0; end; end; end.