Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Suchfeld in ListView verändern (https://www.delphipraxis.net/215031-suchfeld-listview-veraendern.html)

schaumermal 25. Apr 2024 17:14

Suchfeld in ListView verändern
 
Hallo zusammen,

wie kann ich in dem Framework FMX den Suchbegriff in einer ListView per Code ändern.

Gegeben ist eine ListView mit Einträgen.
Man kann nun in dem Suchfeld einen Begriff eingeben und nur die passenden Einträge werden angezeigt (Standardverhalten).
Nun möchte ich zusätzlich wenn der Anwender einen Barcode scannt diesen in das Suchfeld eintragen lassen.

Wie komme ich an dieses Feld um einen Suchbegriff (Barcode) hier eintragen zu können?


Danke im voraus.

schaumermal 25. Apr 2024 22:42

AW: Suchfeld in ListView verändern
 
Hier die Lösung :wink:

procedure SetSearchStringInListView(ListView:TListView;Searc hString:string);
var I: Integer;
SearchBox: TSearchBox;
begin
for I := 0 to ListView.Controls.Count-1 do
if ListView.Controls[I].ClassType = TSearchBox then
begin
SearchBox := TSearchBox(ListView.Controls[I]);
SearchBox.Text := SearchString;
SearchBox.SetFocus;
Break;
end;
end;

himitsu 26. Apr 2024 02:34

AW: Suchfeld in ListView verändern
 
PS: [DELPHI] dein Code [/DELPHI] ... der Knopf mit dem Helm :zwinker:

Warum
Delphi-Quellcode:
if ListView.Controls[I].ClassType = TSearchBox then

und nicht
Delphi-Quellcode:
if ListView.Controls[I] is TSearchBox then
?

Echt mal, warum stellt Emba nicht direkt ein Property für den Zugriff auf FSearchEdit bereit? :wall:
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;
Delphi-Quellcode:
ListView1.SearchText := 'blubb';


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz