PS: [DELPHI] dein Code [/DELPHI] ... der Knopf mit dem Helm
Warum
if ListView.Controls[I].ClassType = TSearchBox then
und nicht
if ListView.Controls[I] is TSearchBox then
?
Echt mal, warum stellt Emba nicht direkt ein Property für den Zugriff auf FSearchEdit bereit?
Delphi-Quellcode:
procedure SetSearchStringInListView(ListView: TListView; SearchString: string);
var
C: TControl;
begin
for C in ListView.Controls do
if C is TSearchBox then begin
TSearchBox(C).Text := SearchString;
TSearchBox(C).SetFocus;
Break;
end;
end;
Aber zumindest kann man per Code dieses Suchedit ein-/ausblenden.
TListView.SearchVisible
Schön ist es auch, wenn eine Funktion nicht irgendwo rumgammelt, sondern man sie direkt in dem gewünschten Control finden kann.
Delphi-Quellcode:
uses
FMX.ListView, FMX.SearchBox;
type
TListViewHelper = class helper for TListView
private
function GetSearchText: string;
procedure SetSearchText(Value: string);
public
property SearchText: string read GetSearchText write SetSearchText;
end;
function TListViewHelper.GetSearchText: string;
begin
Result := '';
if not SearchVisible then
Exit;
for var C in Controls do
if C is TSearchBox then
Exit(TSearchBox(C).Text);
end;
procedure TListViewHelper.SetSearchText(Value: string);
begin
if Value <> '' then
SearchVisible := True;
for var C in Controls do
if C is TSearchBox then begin
TSearchBox(C).Text := Value;
if TSearchBox(C).CanFocus then
TSearchBox(C).SetFocus;
Break;
end;
end;
ListView1.SearchText := 'blubb';