Autor Beitrag
Breslfezn
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 03.02.11 15:51 
Hallo Leute!

Da ich noch ein Anfänger in Turbo Delphi bin, habe ich eine Frage:

Wie kann man in einem ListView Daten über ein Edit-Feld suchen und dann durch eine Markierung sichtbar machen???
Vielen Dank im Vorraus

Breslfezn
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 03.02.11 16:18 
Hallo und :welcome: im Delphi-Forum!

Kommt drauf an. Willst du es im kompletten Listview suchen oder nur einer Spalte vom ListView (wenn es auf Report gestellt ist)? Auf jeden Fall wirst du nicht um eine Schleife rum kommen die die ListView vom ersten bis zum letzten Eintrag durchgeht und dann vergleicht.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 03.02.11 16:21 
Moin und :welcome: im Forum!

Probier das mal hier, vielleicht kommst du damit weiter (Listviews sind für Anfänger schon etwas schwer zu durchschauen :?):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
  var
    i: Integer;
begin
  for i := 0 to ListView1.Items.Count-1 do // alle Einträge durchsuchen
    if (ListView1.Items.Item[i].Caption = Edit1.Text) then begin // gefunden?
      ListView1.Items.Item[i].Selected := TRUE; // markieren
      ListView1.Items.Item[i].Focused := TRUE; // auswählen
      Exit; // abbrechen
    end;
  ShowMessage('Nicht gefunden!');
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Do 03.02.11 16:24 
Es hängt davon ab, inwiefern du suchen willst. Wenn du nur die Einträge mit dem Edit-Text vergleichen willst, also auf vollständige Funde überprüfen möchtest, dann ist das relativ einfach. Du gehst sämtliche Einträge und vergleichst, ob der Name des Items, welches du grade hast gleich dem Text des Edits ist. Dann kann man mit ListView1.Items.Item[0].Selected := True; dieses Element markieren.

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
rd3
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.02.11 16:41 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
function SearchInListView(text: string; AListView: TListView; bCaseInsensitive: Boolean = true): Boolean;
var
  i,j: integer;
  ACompareText: String;
begin
  Result := False;
  if bCaseInsensitive then
    text := lowercase(text);
  AListView.Items.BeginUpdate;
  try
    for i := 0 to AListView.Items.Count -1 do
    begin
      ACompareText := AListView.Items[i].Caption;
      if bCaseInsensitive then
        ACompareText := lowercase(ACompareText);
      if pos(text,ACompareText)>0 then
      begin
        AListView.ItemIndex := i;
        Result := True;  // Exit(true);  für neuere delphi-Versionen
        Exit;
      end;

      for j := 0 to AListView.Items[i].SubItems.Count -1 do
      begin
        ACompareText := AListView.Items[i].SubItems[j];
        if bCaseInsensitive then
          ACompareText := lowercase(ACompareText);
        if pos(text,ACompareText)>0 then
        begin
          AListView.ItemIndex := i;
          Result := True;  // Exit(true);  für neuere delphi-Versionen
          Exit;
        end;
      end;
    end;
  finally
    AListView.Items.EndUpdate;
  end;
end;

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// ListView1 = vsreport
// hideselection = false
//
  if key = #13 then
  begin
    key := #0;
    if not SearchInListView(Edit1.Text,ListView1) then
      ShowMessage('Nix gefunden.');
  end;
end;