diff --git a/ideintf/ideintf.lpk b/ideintf/ideintf.lpk index ccaac61c26..134b2ba06c 100644 --- a/ideintf/ideintf.lpk +++ b/ideintf/ideintf.lpk @@ -307,7 +307,7 @@ - + @@ -315,6 +315,9 @@ + + + @@ -322,5 +325,8 @@ + + <_ExternHelp Items="Count"/> + diff --git a/ideintf/objectinspector.lfm b/ideintf/objectinspector.lfm index 45bfbf9b3b..61bfc992cf 100644 --- a/ideintf/objectinspector.lfm +++ b/ideintf/objectinspector.lfm @@ -1,19 +1,19 @@ object ObjectInspectorDlg: TObjectInspectorDlg - Left = 292 + Left = 338 Height = 669 - Top = 175 - Width = 275 + Top = 162 + Width = 300 BorderStyle = bsSizeToolWin Caption = 'ObjectInspectorDlg' ClientHeight = 669 - ClientWidth = 275 + ClientWidth = 300 KeyPreview = True - LCLVersion = '0.9.31' + LCLVersion = '1.1' object StatusBar: TStatusBar Left = 0 - Height = 23 - Top = 646 - Width = 275 + Height = 22 + Top = 647 + Width = 300 Panels = < item Width = 100 @@ -25,18 +25,51 @@ object ObjectInspectorDlg: TObjectInspectorDlg end object AvailPersistentComboBox: TComboBox Left = 0 - Height = 23 + Height = 24 Top = 0 - Width = 275 + Width = 300 Align = alTop - ItemHeight = 15 + ItemHeight = 0 OnCloseUp = AvailComboBoxCloseUp Style = csDropDownList TabOrder = 0 end + object ComponentPanel: TPanel + Left = 0 + Height = 184 + Top = 24 + Width = 300 + Align = alTop + ClientHeight = 184 + ClientWidth = 300 + TabOrder = 2 + object CompFilterEdit: TTreeFilterEdit + AnchorSideLeft.Control = FilterLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = FilterLabel + AnchorSideTop.Side = asrCenter + Left = 71 + Height = 24 + Top = 2 + Width = 128 + ButtonWidth = 23 + NumGlyphs = 0 + BorderSpacing.Left = 5 + MaxLength = 0 + TabOrder = 0 + end + object FilterLabel: TLabel + Left = 3 + Height = 15 + Top = 7 + Width = 63 + Caption = 'Components' + ParentColor = False + end + end object MainPopupMenu: TPopupMenu OnPopup = OnMainPopupMenuPopup - left = 8 - top = 11 + left = 32 + top = 64 end end diff --git a/ideintf/objectinspector.pp b/ideintf/objectinspector.pp index 67c53d73c8..3cc798f768 100644 --- a/ideintf/objectinspector.pp +++ b/ideintf/objectinspector.pp @@ -42,7 +42,7 @@ uses InterfaceBase, Forms, Buttons, Graphics, GraphType, LCLProc, StdCtrls, LCLType, LCLIntf, Controls, ComCtrls, ExtCtrls, LMessages, LResources, LazConfigStorage, Menus, Dialogs, Themes, - ObjInspStrConsts, + TreeFilterEdit, ObjInspStrConsts, PropEdits, GraphPropEdits, ListViewPropEdit, ImageListEditor, ComponentTreeView, ComponentEditors, IDEImagesIntf, OIFavouriteProperties; @@ -577,9 +577,12 @@ type TObjectInspectorDlg = class(TForm) AddToFavoritesPopupMenuItem: TMenuItem; + ComponentPanel: TPanel; + FilterLabel: TLabel; + CompFilterEdit: TTreeFilterEdit; + ComponentTree: TComponentTreeView; ViewRestrictedPropertiesPopupMenuItem: TMenuItem; AvailPersistentComboBox: TComboBox; - ComponentTree: TComponentTreeView; InfoPanel: TPanel; CopyPopupmenuItem: TMenuItem; CutPopupmenuItem: TMenuItem; @@ -3549,7 +3552,7 @@ begin FGridSplitterX[p]:=110; FDefaultItemHeight:=20; FShowComponentTree:=true; - FComponentTreeHeight:=100; + FComponentTreeHeight:=160; FInfoBoxHeight:=80; FGridBackgroundColor := DefBackgroundColor; @@ -3611,7 +3614,7 @@ begin FShowComponentTree:=ConfigStore.GetValue( Path+'ComponentTree/Show/Value',true); FComponentTreeHeight:=ConfigStore.GetValue( - Path+'ComponentTree/Height/Value',100); + Path+'ComponentTree/Height/Value',160); FGridBackgroundColor:=ConfigStore.GetValue( Path+'Color/GridBackground',DefBackgroundColor); @@ -3692,7 +3695,7 @@ begin ConfigStore.SetDeleteValue(Path+'ComponentTree/Show/Value', FShowComponentTree,true); ConfigStore.SetDeleteValue(Path+'ComponentTree/Height/Value', - FComponentTreeHeight,100); + FComponentTreeHeight,160); ConfigStore.SetDeleteValue(Path+'Color/GridBackground', FGridBackgroundColor,DefBackgroundColor); @@ -3875,7 +3878,7 @@ begin FAutoShow := True; FUpdatingAvailComboBox:=false; FDefaultItemHeight := 22; - FComponentTreeHeight:=100; + FComponentTreeHeight:=160; FShowComponentTree := True; FShowFavorites := False; FShowRestricted := False; @@ -3951,22 +3954,36 @@ begin begin Name := 'ComponentTree'; Constraints.MinHeight := 16; - Height := ComponentTreeHeight; - Parent := Self; - Align := alTop; + Parent := ComponentPanel; + AnchorSideTop.Control := CompFilterEdit; + AnchorSideTop.Side := asrBottom; + AnchorSideBottom.Control := ComponentPanel; + AnchorSideBottom.Side := asrBottom; + BorderSpacing.Top := 3; + BorderSpacing.Bottom := 3; + Left := 3; + Height := ComponentPanel.Height - BorderSpacing.Top + - CompFilterEdit.Top - CompFilterEdit.Height; + Width := ComponentPanel.Width-6; + Anchors := [akTop, akLeft, akRight, akBottom]; OnDblClick := @ComponentTreeDblClick; OnKeyDown := @ComponentTreeKeyDown; OnSelectionChanged := @ComponentTreeSelectionChanged; OnModified := @DoModified; - Visible := FShowComponentTree; Scrollbars := ssAutoBoth; PopupMenu := MainPopupMenu; end; + // ComponentPanel encapsulates TreeFilterEdit and ComponentTree + ComponentPanel.Height := ComponentTreeHeight; + ComponentPanel.Visible := FShowComponentTree; + CompFilterEdit.FilteredTreeview:=ComponentTree; + InfoPanel := TPanel.Create(Self); with InfoPanel do begin Name := 'InfoPanel'; +// Constraints.MinHeight := 16; Should there be MinHeight? Caption := ''; Height := InfoBoxHeight; Parent := Self; @@ -3978,7 +3995,6 @@ begin if ShowComponentTree then CreateSplitter(True); - if ShowInfoBox then CreateSplitter(False); @@ -4035,8 +4051,8 @@ begin if FComponentTreeHeight <> AValue then begin FComponentTreeHeight := AValue; - if Assigned(ComponentTree) then - ComponentTree.Height := AValue; + Assert(Assigned(ComponentTree), 'TObjectInspectorDlg.SetComponentTreeHeight: ComponentTree=nil'); + ComponentPanel.Height := AValue; end; end; @@ -4066,8 +4082,8 @@ begin if FInfoBoxHeight <> AValue then begin FInfoBoxHeight := AValue; - if Assigned(InfoPanel) then - InfoPanel.Height := AValue; + Assert(Assigned(InfoPanel), 'TObjectInspectorDlg.SetInfoBoxHeight: InfoPanel=nil'); + InfoPanel.Height := AValue; end; end; @@ -4120,8 +4136,9 @@ begin //,' ',FPropertyEditorHook<>nil,' ',FPropertyEditorHook.LookupRoot<>nil); if FUpdatingAvailComboBox then exit; FUpdatingAvailComboBox:=true; - if ComponentTree<>nil then - ComponentTree.RebuildComponentNodes; + Assert(Assigned(ComponentTree), 'TObjectInspectorDlg.FillPersistentComboBox: ComponentTree=nil'); + ComponentTree.RebuildComponentNodes; // if ComponentTree<>nil then + CompFilterEdit.InvalidateFilter; NewList:=TStringList.Create; try if (FPropertyEditorHook<>nil) @@ -4308,7 +4325,6 @@ var NewComponent,Root:TComponent; FOnSelectPersistentsInOI(Self); end; -// AvailComboBoxChange begin if FUpdatingAvailComboBox then exit; if (FPropertyEditorHook=nil) or (FPropertyEditorHook.LookupRoot=nil) then @@ -4610,20 +4626,16 @@ begin // hide controls while rebuilding if Splitter1 <> nil then Splitter1.Visible := False; - ComponentTree.Visible := False; + ComponentPanel.Visible := False; AvailPersistentComboBox.Visible := False; // rebuild controls - ComponentTree.Parent := Self; - ComponentTree.Align := alTop; + ComponentPanel.Height := ComponentTreeHeight; if FShowComponentTree then CreateSplitter(True) else - begin - ComponentTree.Height := ComponentTreeHeight; FreeAndNil(Splitter1); - end; - ComponentTree.Visible := FShowComponentTree; AvailPersistentComboBox.Visible := not FShowComponentTree; + ComponentPanel.Visible := FShowComponentTree; finally EndUpdate; end; @@ -4640,9 +4652,7 @@ procedure TObjectInspectorDlg.SetShowInfoBox(const AValue: Boolean); begin if FShowInfoBox = AValue then exit; FShowInfoBox := AValue; - InfoPanel.Visible := AValue; - if AValue then CreateSplitter(False) else @@ -5231,17 +5241,19 @@ end; function TObjectInspectorDlg.GetComponentTreeHeight: integer; begin if Assigned(ComponentTree) then - Result := ComponentTree.Height - else - Result := FComponentTreeHeight; + Result := ComponentPanel.Height + else // Will never happen, remove later. JuMa + raise Exception.Create('ComponentTree=nil in TObjectInspectorDlg.GetComponentTreeHeight'); + //Result := FComponentTreeHeight; end; function TObjectInspectorDlg.GetInfoBoxHeight: integer; begin if Assigned(InfoPanel) then Result := InfoPanel.Height - else - Result := FInfoBoxHeight; + else // Will never happen, remove later. JuMa + raise Exception.Create('InfoPanel=nil in TObjectInspectorDlg.GetInfoBoxHeight'); + //Result := FInfoBoxHeight; end; procedure TObjectInspectorDlg.HookRefreshPropertyValues; @@ -5285,8 +5297,7 @@ begin end; end; -procedure TObjectInspectorDlg.SetComponentEditor( - const AValue: TBaseComponentEditor); +procedure TObjectInspectorDlg.SetComponentEditor(const AValue: TBaseComponentEditor); begin if FComponentEditor <> AValue then begin