Các SearchBox là một hậu duệ của TEdit và sử dụng phong cách kiểm soát FireMonkey.
Đặt TEdit vào mẫu của bạn và mở StyleLookup tài sản của nó:
Bạn có thể thấy rằng có stlyes khác nhau đã có sẵn. Vì vậy, chúng tôi muốn thay đổi StyleLookup cho Hộp Tìm kiếm của chúng tôi.
Khi Hộp tìm kiếm là thành viên riêng (FSearchEdit) của điều khiển ListView, bạn không có cách nào truy cập trực tiếp vào nó.
Bạn có thể tạo điều khiển ListView của riêng mình là hậu duệ của TListView (TListViewBase) hoặc sử dụng trình trợ giúp lớp. Tôi lựa chọn thứ hai.
TListViewHelper = class helper for TListViewBase
private
function GetClearButton: Boolean;
procedure SetClearButton(const Value: Boolean);
public
property ShowSearchEditClearButton: Boolean read GetClearButton write SetClearButton;
end;
{ TListViewHelper }
function TListViewHelper.GetClearButton: Boolean;
begin
Result := Self.FSearchEdit.StyleLookup = ''; // default style
end;
procedure TListViewHelper.SetClearButton(const Value: Boolean);
begin
if Value then
Self.FSearchEdit.StyleLookup := '' // default style
else
Self.FSearchEdit.StyleLookup := 'editstyle';
end;
Trong FormCreate chúng ta có thể gọi ListView1.ShowSearchEditClearButton := False;
và nút rõ ràng đã biến mất.
Tuy nhiên vào biểu tượng kính lúp cũng biến mất bởi vì nó không phải là một phần của Style editstyle
mà chúng ta thiết lập như StyleLookup
.
Để lấy lại biểu tượng, chúng tôi sẽ phải tạo Kiểu của riêng mình có biểu tượng kính lúp nhưng không có nút rõ ràng.
Thả một TEdit trên Form, nhấn chuột phải vào nó và sau đó chọn edit customized style
:
Bây giờ chúng ta đang ở trong StyleBook Editor và được tiếp cận với cách bố trí kiểm soát.
Thêm một TActiveStyleObject đến structur, đổi tên nó để magnifierglass
Thay đổi của TActiveStyleObject ActiveLink
bitmap.
Trong BitmapLinks-Editor, hãy định vị biểu tượng kính lúp và chọn nó (cho ActiveLink và SourceLink).
Bây giờ văn bản của bạn sẽ chồng chéo với biểu tượng.
Để khắc phục nó, bạn phải thay đổi lề trái của nội dung (mà hiện nay được thiết lập để 2px) để một cái gì đó cao hơn như 20.
Bạn có thể bây giờ xóa bản chỉnh sửa trên biểu mẫu của bạn khi kiểu được tạo và trong StyleBook của biểu mẫu của bạn.
Mở StyleBook và đổi tên StyleName
kiểu mới của bạn thành searcheditstylenoclearbtn
.
Lưu nó và trong các chức năng classhelper của bạn thay đổi
Self.FSearchEdit.StyleLookup := 'editstyle';
để
Self.FSearchEdit.StyleLookup := 'searcheditstylenoclearbtn';
Bây giờ nút rõ ràng đã biến mất.
Nếu bạn không muốn phải trải qua những rắc rối của việc tạo ra searcheditstylenoclearbtn riêng của bạn, bạn có thể lưu các mã sau như searcheditstylenoclearbtn.style và tải nó trong trình soạn thảo StyleBook.
object TStyleContainer
object TLayout
StyleName = 'searcheditstylenoclearbtn'
Position.X = 530.000000000000000000
Position.Y = 399.000000000000000000
Size.Width = 100.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
Visible = False
TabOrder = 0
object TActiveStyleObject
StyleName = 'background'
Align = Contents
SourceLookup = 'Windows 10 Desktopstyle.png'
Size.Width = 100.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
ActiveTrigger = Focused
ActiveLink = <
item
CapInsets.Left = 7.000000000000000000
CapInsets.Top = 7.000000000000000000
CapInsets.Right = 7.000000000000000000
CapInsets.Bottom = 7.000000000000000000
SourceRect.Left = 266.000000000000000000
SourceRect.Top = 81.000000000000000000
SourceRect.Right = 305.000000000000000000
SourceRect.Bottom = 110.000000000000000000
end>
SourceLink = <
item
CapInsets.Left = 7.000000000000000000
CapInsets.Top = 7.000000000000000000
CapInsets.Right = 7.000000000000000000
CapInsets.Bottom = 7.000000000000000000
SourceRect.Left = 225.000000000000000000
SourceRect.Top = 81.000000000000000000
SourceRect.Right = 264.000000000000000000
SourceRect.Bottom = 110.000000000000000000
end>
TouchAnimation.Link = <>
end
object TLayout
StyleName = 'content'
Align = Client
Locked = True
Margins.Left = 20.000000000000000000
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
Size.Width = 6.000000000000000000
Size.Height = 18.000000000000000000
Size.PlatformDefault = False
end
object TLayout
StyleName = 'buttons'
Align = Right
Locked = True
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
Position.X = 48.000000000000000000
Position.Y = 2.000000000000000000
Size.Width = 50.000000000000000000
Size.Height = 18.000000000000000000
Size.PlatformDefault = False
end
object TBrushObject
StyleName = 'foreground'
Brush.Color = claBlack
end
object TBrushObject
StyleName = 'selection'
Brush.Color = x7F2A96FF
end
object TFontObject
StyleName = 'font'
end
object TLabel
StyleName = 'prompt'
Locked = True
Opacity = 0.500000000000000000
Visible = False
end
object TActiveStyleObject
StyleName = 'magnifierglass'
Align = Left
CapMode = Tile
Margins.Top = 1.000000000000000000
SourceLookup = 'Windows 10 Desktopstyle.png'
Position.Y = 1.000000000000000000
Size.Width = 20.000000000000000000
Size.Height = 21.000000000000000000
Size.PlatformDefault = False
WrapMode = Center
ActiveTrigger = Pressed
ActiveLink = <
item
SourceRect.Left = 4.000000000000000000
SourceRect.Top = 358.000000000000000000
SourceRect.Right = 20.000000000000000000
SourceRect.Bottom = 374.000000000000000000
end>
SourceLink = <
item
SourceRect.Left = 4.000000000000000000
SourceRect.Top = 358.000000000000000000
SourceRect.Right = 20.000000000000000000
SourceRect.Bottom = 374.000000000000000000
end>
TouchAnimation.Link = <>
end
end
end