Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#3

AW: Suchfeld in ListView verändern

  Alt 26. Apr 2024, 02:34
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.
Delphi-Referenz durchsuchenTListView.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';
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (26. Apr 2024 um 03:06 Uhr)
  Mit Zitat antworten Zitat