diff --git a/components/tvplanit/examples/navbar/unit1.lfm b/components/tvplanit/examples/navbar/unit1.lfm index 988674b79..332299f7c 100644 --- a/components/tvplanit/examples/navbar/unit1.lfm +++ b/components/tvplanit/examples/navbar/unit1.lfm @@ -14,10 +14,10 @@ object Form1: TForm1 Top = 0 Width = 128 ActiveFolder = 0 + AllowInplaceEdit = True AllowRearrange = True BackgroundColor = clInactiveCaption BackgroundMethod = bmTile - BorderStyle = bsNone ButtonHeight = 20 DrawingStyle = dsEtchedButton FolderCollection = < diff --git a/components/tvplanit/source/vpnavbar.pas b/components/tvplanit/source/vpnavbar.pas index 8b53683e4..5578a25ec 100644 --- a/components/tvplanit/source/vpnavbar.pas +++ b/components/tvplanit/source/vpnavbar.pas @@ -206,6 +206,8 @@ type FShowButtons: Boolean; FSoundAlias: string; FLoadingFolder: Integer; + FMouseDownPt: TPoint; + FAllowInplaceEdit: Boolean; {event variables} FOnArrange: TNotifyEvent; @@ -305,6 +307,7 @@ type function AddContainer(Container: TVpFOlderContainer): Integer; procedure RemoveContainer(Container: TVpFolderContainer); + procedure DblClick; override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseLeave; override; procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; @@ -320,6 +323,7 @@ type {properties} property ActiveFolder: Integer read FActiveFolder write SetActiveFolder; + property AllowInplaceEdit: Boolean read FAllowInplaceEdit write FAllowInplaceEdit default false; property AllowRearrange: Boolean read FAllowRearrange write FAllowRearrange; property BackgroundColor: TColor read FBackgroundColor write SetBackgroundColor; property BackgroundImage: TBitmap read FBackgroundImage write SetBackgroundImage; @@ -373,8 +377,8 @@ type procedure RenameFolder(AFolderIndex: Integer); procedure InsertItem(const ACaption: string; AFolderIndex, AItemIndex, AIconIndex: Integer); procedure AddItem(const ACaption: string; AFolderIndex, AIconIndex: Integer); - procedure RemoveItem(AFolderIndex, AItemIndex: Integer); procedure InvalidateItem(FolderIndex, ItemIndex: Integer); + procedure RemoveItem(AFolderIndex, AItemIndex: Integer); procedure RenameItem(AFolderIndex, AItemIndex: Integer); property ActiveItem: Integer read FActiveItem; property Containers[Index: Integer]: TVpFolderContainer read GetContainer; @@ -387,6 +391,7 @@ type TVpNavBar = class(TVpCustomNavBar) published property ActiveFolder; + property AllowInplaceEdit; property AllowRearrange; property BackgroundColor; property BackgroundImage; @@ -1454,8 +1459,7 @@ begin nabEdit.FolderIndex := AFolderIndex; nabEdit.ItemIndex := AItemIndex; nabEdit.Font.Size := ItemFont.Size; - nabEdit.Font.Size := ItemFont.Size; - nabEdit.BorderStyle := bsSingle; + nabEdit.BorderStyle := bsNone; nabEdit.Top := Item.LabelRect.Top-1; nabEdit.Left := 10; nabEdit.Height := HeightOf(Item.LabelRect) + 2; @@ -1788,9 +1792,31 @@ begin end; {=====} +procedure TVpCustomNavBar.DblClick; +var + folder: TVpNavFolder; +begin + inherited; + + if FAllowInplaceEdit and (FActiveFolder <> -1) then + begin + folder := Folders[FActiveFolder]; + if PtInRect(folder.Rect, FMouseDownPt) then + RenameFolder(FActiveFolder) + else + if (FSelectedItem <> -1) then + begin + if PtInRect(folder.Items[FSelectedItem].LabelRect, FMouseDownPt) then + RenameItem(FActiveFolder, FSelectedItem); + end; + end; +end; + procedure TVpCustomNavBar.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin + FMouseDownPt := Point(X,Y); + {complete any editing} nabCommitEdit(nil);