Autor Beitrag
Biarchiv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: So 06.01.08 12:42 
Hallo,

für folgendes finde ich keine Lösung:

1. Ich möchte gerne automatisch ein Klick auf die erste Column durchführen lassen (dann wird es alp. Sortiert).
2. In einer ListView stehen (vsReport) untereinander im ersten Column Wörter.
Diese soll per Schleife mit der nechsten Zeile und weiteren verglichen werden. Sollte die nechste Zeile gleich
sein dann muss die nechste Zeile im ListView gelöscht werden und auf der momentant stehende
in der ersten Subitem die stehende Zahl mit 1 addiert werden - und im 2. Feld Prozent (2 Komma) vom gesamt mit 100%
errechnet werden.

ZB: meinWort - 2 - 23,45
2 so oft kam das Wort vor
23,45 das sind in Prozent


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:
var i, gesamt : integer;
    s, s2 : string;
    AItem : TListItem;
begin
// wie kann ich hier automatisch auf den ersten column klicken
// Mein Code funktioniert wenn ich selbst trauf klicke

gesamt := Listview1.items.Count;

for i := 0 to Listview1.items.Count - 1 do
  begin
  s := listview1.Items[i].caption;
  if listview1.Items.count < i  then
  begin
  if CompareText(s, listview1.Items[i+1].caption) = 0 then
    begin
    AITem := ListView1.Items[i];
    s2 := AITEM.SubItems[0].text;

    // hier plus eins in 2 Spalte geht aber nicht.
    AITEM.SubItems[0].text := inttostr(strtoint(s2) + 1);

    // hier Prozent in 3 Spalte
    s2 := AITEM.SubItems[1].text;
    AITEM.SubItems[1].text := inttostr(gesamt div strtoint(s2));

    AItem.Free;
    end;

  // nechste Zeile soll gelöscht werden da die doppelt ist
  listview1.Items[i+1].delete;
  end;

  end;
DrRzf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Mo 07.01.08 03:28 
diese konstellation ist von haus aus schonmal zum scheitern verurteilt.
du machst eine schleife mit items.count und löschst aus der liste items.
sobald welche gelöscht werden, läuft dir die schleife übers ende der liste hinaus.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 
for i := 0 to Listview1.items.Count - 1 do  
  begin  
  ...
  ...
  listview1.Items[i+1].delete;  
  end;


hier wäre villeicht besser eine repeat..until konstellation zu verwenden, und den zähler selbst zu manipulieren.

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.