Frequently Asked Component Specific Questions

Options

Display all FAQ items

Search FAQ items:


Displaying items 1 to 1 of 1, page 1 of 1

<< previous next >>

TInspectorBar
How to use the TFormControlInspectorEditLink component

TFormControlInspectorEditLink allows to use any TWinControl based edit control that is placed on the form as inplace editor for the TInspectorBar.

To start using TFormControlInspectorEditLink, drop an instance on the form and also an instance of the edit control you want to use as inplace editor. Assign this control to TFormControlInspectorEditLink.Control. Then hook up the EditLink to TInspectorItem.EditLink and set TInspectorItem.PropertyType to ptCustom. Implement minimum the TFormControlInspectorEditLink.OnGetEditorValue / TFormControlInspectorEditLink.OnSetEditorValue events to get & set the value of the TInspectorItem as text from the control value.

Example:

To use a TAdvSearchEdit control as inplace editor for a TInspectorBar item, that performs filtering / lookup while typing in a dictionary, following code can be used applied on a default TInspectorBar:
procedure TForm1.FormCreate(Sender: TObject);
var
  sl: TStringList;
  i: integer;
begin
  AdvSearchEdit1.SearchButton.Visible := false;
  AdvSearchEdit1.CategoryButton.Visible := false;
  AdvSearchEdit1.DropDownHeader.Visible := false;

  // loading the dictionary file in the TAdvSearchEdit
  sl := TStringList.Create;
  try
    sl.LoadFromFile(''e:\tms\temp\dictionary.txt'');
    AdvSearchEdit1.LoadStrings(sl);
  finally
    sl.Free;
  end;

  // linking up the TAdvSearchEdit as inplace editor
  FormControlInspectorEditLink1.Control := AdvSearchEdit1;
  // inplace editor control will still hanbdle return key
  FormControlInspectorEditLink1.WantKeyReturn := true;

  InspectorBar1.Panels[0].ItemHeight := 26;
  InspectorBar1.Panels[0].Style := psProperties;

  for i := 0 to InspectorBar1.Panels[0].Items.Count - 1 do
  begin
    InspectorBar1.Panels[0].Items[i].EditLink := FormControlInspectorEditLink1;
    InspectorBar1.Panels[0].Items[i].PropertyType := ptCustom;
  end;
end;

procedure TForm1.FormControlInspectorEditLink1GetEditorValue(Sender: TObject;
  Item: TInspectorItem; var AValue: string);
begin
  AValue := AdvSearchEdit1.Text;
end;

procedure TForm1.FormControlInspectorEditLink1SetEditorValue(Sender: TObject;
  Item: TInspectorItem; AValue: string);
begin
  AdvSearchEdit1.Text := AValue;
end;
The result looks like: