📄 d_lmdpi.pas
字号:
unit d_lmdpi;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, LMDDsgPropPage, LMDDsgPropInsp,
TypInfo, Menus {$IFDEF VER130} ,LmdDsgD5Adds {$ENDIF}, d_lmdpi1, ComCtrls;
type
TfrmLMDPIDemo = class(TForm)
LMDPropertyInspector1: TLMDPropertyInspector;
Label3: TLabel;
pnlContainer: TPanel;
Panel1: TPanel;
CheckBox1: TCheckBox;
Memo1: TMemo;
Label2: TLabel;
Label1: TLabel;
Memo2: TMemo;
Label5: TLabel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Shape1: TShape;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button7: TButton;
Button10: TButton;
Label4: TLabel;
CheckBox2: TCheckBox;
Memo3: TMemo;
CheckBox3: TCheckBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
TabSheet4: TTabSheet;
Button6: TButton;
Button8: TButton;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
Button9: TButton;
Button11: TButton;
CheckBox7: TCheckBox;
PopupMenu1: TPopupMenu;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure LMDPropertyInspector1FilterProp(Sender: TObject;
AInstance: TPersistent; APropInfo: PPropInfo;
AIsSubProp: Boolean; var AIncludeProp: Boolean);
procedure Button7Click(Sender: TObject);
procedure LMDPropertyInspector1GetCaptionColor(Sender: TObject;
AItem: TLMDPropertyInspectorItem; var AColor: TColor);
procedure Button10Click(Sender: TObject);
procedure LMDPropertyInspector1Click(Sender: TObject);
procedure LMDPropertyInspector1Change(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure LMDPropertyInspector1GetComponents(Sender: TObject;
AClass: TComponentClass; AResult: TList);
procedure LMDPropertyInspector1GetComponentName(Sender: TObject;
AComponent: TComponent; var AName: String);
procedure LMDPropertyInspector1GetComponent(Sender: TObject;
const AComponentName: String; var AComponent: TComponent);
procedure RadioButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure CheckBox5Click(Sender: TObject);
procedure CheckBox6Click(Sender: TObject);
procedure CheckBox4Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure CheckBox7Click(Sender: TObject);
procedure PopupMenu1Popup(Sender: TObject);
private
{ Private declarations }
FEditorClass: TLMDPropEditorClass;
procedure UpdateObjectsMemo;
procedure MenuItemClick(Sender: TObject);
public
{ Public declarations }
end;
var
frmLMDPIDemo: TfrmLMDPIDemo;
implementation
{$R *.dfm}
procedure TfrmLMDPIDemo.Button1Click(Sender: TObject);
begin
LMDPropertyInspector1.Objects.Clear;
LMDPropertyInspector1.Objects.Add(Panel1);
UpdateObjectsMemo;
end;
procedure TfrmLMDPIDemo.Button2Click(Sender: TObject);
begin
LMDPropertyInspector1.Objects.Clear;
LMDPropertyInspector1.Objects.Add(CheckBox1);
UpdateObjectsMemo;
end;
procedure TfrmLMDPIDemo.Button3Click(Sender: TObject);
begin
LMDPropertyInspector1.Objects.Clear;
LMDPropertyInspector1.Objects.Add(Memo1);
UpdateObjectsMemo;
end;
procedure TfrmLMDPIDemo.UpdateObjectsMemo;
var
LI: Integer;
begin
Memo2.Lines.Clear;
for LI := 0 to LMDPropertyInspector1.Objects.Count - 1 do
Memo2.Lines.Add(LMDPropertyInspector1.Objects[LI].GetNamePath);
end;
procedure TfrmLMDPIDemo.Button4Click(Sender: TObject);
begin
LMDPropertyInspector1.Objects.Clear;
LMDPropertyInspector1.Objects.Add(Memo1.Font);
UpdateObjectsMemo;
end;
procedure TfrmLMDPIDemo.Button5Click(Sender: TObject);
begin
LMDPropertyInspector1.Objects.Clear;
LMDPropertyInspector1.Objects.Add(Shape1.Brush);
UpdateObjectsMemo;
end;
procedure TfrmLMDPIDemo.LMDPropertyInspector1FilterProp(Sender: TObject;
AInstance: TPersistent; APropInfo: PPropInfo; AIsSubProp: Boolean;
var AIncludeProp: Boolean);
begin
// Example filter properties
if CheckBox2.Checked and (Memo3.Lines.IndexOf(APropInfo^.Name) <> -1) then
AIncludeProp := False;
end;
procedure TfrmLMDPIDemo.Button7Click(Sender: TObject);
begin
LMDPropertyInspector1.Objects.Clear;
LMDPropertyInspector1.Objects.Add(Memo1);
LMDPropertyInspector1.Objects.Add(Panel1);
LMDPropertyInspector1.Objects.Add(CheckBox1);
LMDPropertyInspector1.Objects.Add(Label2);
UpdateObjectsMemo;
end;
procedure TfrmLMDPIDemo.LMDPropertyInspector1GetCaptionColor(
Sender: TObject; AItem: TLMDPropertyInspectorItem; var AColor: TColor);
begin
if CheckBox3.Checked and (Memo3.Lines.IndexOf(AItem.PropName) <> -1) then
AColor := clRed;
end;
procedure TfrmLMDPIDemo.Button10Click(Sender: TObject);
begin
LMDPropertyInspector1.Objects.Clear;
LMDPropertyInspector1.Objects.Add(Label2);
UpdateObjectsMemo;
end;
procedure TfrmLMDPIDemo.LMDPropertyInspector1Click(Sender: TObject);
begin
if LMDPropertyInspector1.ActiveItem <> nil then
Label3.Caption := 'Active property: ' +
LMDPropertyInspector1.ActiveItem.PropName
else if LMDPropertyInspector1.ActiveCategory <> nil then
Label3.Caption := 'Active category: ' +
LMDPropertyInspector1.ActiveCategory.Name
else
Label3.Caption := 'No active item or category';
end;
procedure TfrmLMDPIDemo.LMDPropertyInspector1Change(Sender: TObject);
begin
LMDPropertyInspector1Click(nil);
end;
procedure TfrmLMDPIDemo.CheckBox2Click(Sender: TObject);
begin
LMDPropertyInspector1.UpdateItems;
end;
procedure TfrmLMDPIDemo.CheckBox3Click(Sender: TObject);
begin
LMDPropertyInspector1.UpdateItems;
end;
procedure TfrmLMDPIDemo.LMDPropertyInspector1GetComponents(Sender: TObject;
AClass: TComponentClass; AResult: TList);
var
LI: Integer;
begin
// Add to AResult list only controls you want to appear
// in the drop-down list of the component reference property editor
// (for examle in PopupMenu or FocusControl property). This event is used
// only for generating drop-down list, but does not restrict user to
// type any other component name directly in the property inspector.
// Real restriction must be done in the OnGetComponent event handler.
// In this examle only proper children of pnlContainer will be added.
//
// See also: OnGetComponentName, OnGetComponent
//
// This events can be used to flexible control component reference
// property editors behavior.
for LI := 0 to pnlContainer.ControlCount - 1 do
{ Check class compability }
if (pnlContainer.Controls[LI].ClassType = AClass) or
(pnlContainer.Controls[LI].InheritsFrom(AClass)) then
AResult.Add(pnlContainer.Controls[LI]);
end;
procedure TfrmLMDPIDemo.LMDPropertyInspector1GetComponentName(
Sender: TObject; AComponent: TComponent; var AName: String);
begin
// Provide string that will be used as the name of the
// component in the values column and drop-down list of the
// component reference property editors. You can return string, that
// differs from TComponent.Name, but you must be available to find
// component reference (pointer to component) using this string in the
// OnGetComponent event handler.
//
// See also: OnGetGetComponents, OnGetComponent
//
// This events can be used to flexible control component reference
// property editors behavior.
AName := AComponent.Name;
end;
procedure TfrmLMDPIDemo.LMDPropertyInspector1GetComponent(Sender: TObject;
const AComponentName: String; var AComponent: TComponent);
begin
// Search for component using string provided in the OnGetComponentName
// event hadler. In this event you can restrict number of components used by
// property inspector as component reference targets.
// In this examle only children of pnlContainer can be used (by chousing from
// drop-down list or typing directly) as component reference targets.
//
// See also: OnGetGetComponents, OnGetComponentName
//
// This events can be used to flexible control component reference
// property editors behavior.
AComponent := pnlContainer.FindChildControl(AComponentName);
end;
procedure TfrmLMDPIDemo.RadioButton1Click(Sender: TObject);
begin
if FEditorClass <> nil then
LMDPropertyInspector1.UnregisterPropEditor(TypeInfo(TBevelCut),
nil, 'BevelInner', FEditorClass);
if RadioButton2.Checked then
begin
FEditorClass := TBevelCutProperty;
LMDPropertyInspector1.RegisterPropEditor(TypeInfo(TBevelCut),
nil, 'BevelInner', FEditorClass);
end
else if RadioButton3.Checked then
begin
FEditorClass := TBevelCutDlgProperty;
LMDPropertyInspector1.RegisterPropEditor(TypeInfo(TBevelCut),
nil, 'BevelInner', FEditorClass);
end
else if RadioButton4.Checked then
begin
FEditorClass := TBevelCutDrawProperty;
LMDPropertyInspector1.RegisterPropEditor(TypeInfo(TBevelCut),
nil, 'BevelInner', FEditorClass);
end;
end;
procedure TfrmLMDPIDemo.FormCreate(Sender: TObject);
begin
// Register standard properties
RegisterStandardCategories(LMDPropertyInspector1);
end;
procedure TfrmLMDPIDemo.Button6Click(Sender: TObject);
begin
LMDPropertyInspector1.Color := clBtnFace;
LMDPropertyInspector1.SelectionStyle := ssClassic;
LMDPropertyInspector1.GridVisible := True;
LMDPropertyInspector1.GutterVisible := False;
LMDPropertyInspector1.CursorVisible := False;
LMDPropertyInspector1.CategoryBackgroundColor := clBtnFace;
LMDPropertyInspector1.CategoryFont.Color := clPurple;
LMDPropertyInspector1.FlatSelectionBackgroundColor := clHighlight;
LMDPropertyInspector1.FlatSelectionColor := clHighlightText;
CheckBox5.Checked := True;
CheckBox6.Checked := False;
CheckBox4.Checked := False;
CheckBox7.Checked := False;
end;
procedure TfrmLMDPIDemo.Button8Click(Sender: TObject);
begin
LMDPropertyInspector1.Color := clWindow;
LMDPropertyInspector1.SelectionStyle := ssFlat;
LMDPropertyInspector1.GridVisible := False;
LMDPropertyInspector1.GutterVisible := True;
LMDPropertyInspector1.CursorVisible := True;
LMDPropertyInspector1.CategoryBackgroundColor := $00E8E8E8;
LMDPropertyInspector1.CategoryFont.Color := clMaroon;
LMDPropertyInspector1.FlatSelectionBackgroundColor := $00E8E8E8;
LMDPropertyInspector1.FlatSelectionColor := clWindowText;
CheckBox5.Checked := False;
CheckBox6.Checked := True;
CheckBox4.Checked := True;
CheckBox7.Checked := True;
end;
procedure TfrmLMDPIDemo.CheckBox5Click(Sender: TObject);
begin
LMDPropertyInspector1.GridVisible := CheckBox5.Checked;
end;
procedure TfrmLMDPIDemo.CheckBox6Click(Sender: TObject);
begin
LMDPropertyInspector1.CursorVisible := CheckBox6.Checked;
end;
procedure TfrmLMDPIDemo.CheckBox4Click(Sender: TObject);
begin
LMDPropertyInspector1.GutterVisible := CheckBox4.Checked;
end;
procedure TfrmLMDPIDemo.Button9Click(Sender: TObject);
begin
LMDPropertyInspector1.ArrangeKind := akByCategory;
end;
procedure TfrmLMDPIDemo.Button11Click(Sender: TObject);
begin
LMDPropertyInspector1.ArrangeKind := akByName;
end;
procedure TfrmLMDPIDemo.CheckBox7Click(Sender: TObject);
begin
if CheckBox7.Checked then
LMDPropertyInspector1.SelectionStyle := ssFlat
else
LMDPropertyInspector1.SelectionStyle := ssClassic;
end;
procedure TfrmLMDPIDemo.PopupMenu1Popup(Sender: TObject);
var
LI: Integer;
LItem: TMenuItem;
begin
PopupMenu1.Items.Clear;
for LI := 0 to LMDPropertyInspector1.ObjectsCategories.Count - 1 do
begin
LItem := TMenuItem.Create(Self);
LItem.Caption := LMDPropertyInspector1.ObjectsCategories[LI];
LItem.Checked := not LMDPropertyInspector1.IsRegisteredCategoryHidden(
LItem.Caption);
LItem.OnClick := MenuItemClick;
PopupMenu1.Items.Add(LItem);
end;
end;
procedure TfrmLMDPIDemo.MenuItemClick(Sender: TObject);
begin
if not TMenuItem(Sender).Checked then
LMDPropertyInspector1.ShowCategory(TMenuItem(Sender).Caption)
else
LMDPropertyInspector1.HideCategory(TMenuItem(Sender).Caption);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -