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/)
-   -   Delphi Nachträglich ListItem verändern (https://www.delphipraxis.net/88182-nachtraeglich-listitem-veraendern.html)

ManuMF 11. Mär 2007 14:27


Nachträglich ListItem verändern
 
Hallo,

ich habe mir ein ListView erstellt, das von verschiedenen Sachen Name und Status anzeigen soll. Wenn das Item dem ListView hinzugefügt wird, führe ich eine Prozedur aus, die dann Weiteres übernimment und den Status ändern soll.

Ich habe jetzt probiert, der Prozedur das Handle des hinzugefügten Items zu übergeben. Wie komme ich da weiter, also mit was komme ich vom Handle auf das ListItem?

Danke,
ManuMF

Matze 11. Mär 2007 14:42

Re: Nachträglich ListItem verändern
 
Hi,

ich kann dir nicht ganz folgen. Wofür möchtest du das Handle ermitteln? Den Inhalt der Items kannst du so verändern:

Delphi-Quellcode:
ListView1.Items[MainIndex] := '...';
ListView1.Items[MainIndex].SubItems[SubIndex] := '...';

ManuMF 11. Mär 2007 14:44

Re: Nachträglich ListItem verändern
 
Ich weiß ja selbst nicht, ob das Handle die perfekte Lösung ist (und ermittelt habe ich es ja schon). Mit dem Index kann ich aber definitiv nicht arbeiten, da er sich ja auch ändert.

Gremlin 11. Mär 2007 15:00

Re: Nachträglich ListItem verändern
 
Zitat:

Zitat von ManuMF
Ich weiß ja selbst nicht, ob das Handle die perfekte Lösung ist (und ermittelt habe ich es ja schon). Mit dem Index kann ich aber definitiv nicht arbeiten, da er sich ja auch ändert.

Ich kann nicht genau nachvollziehen was du jetzt wirklich möchtest,
aber du kannst eventuell für eine ID die zu einem TListItem gehört
den Data-Teil missbrauchen.

Gruss Gremlin

ManuMF 11. Mär 2007 15:14

Re: Nachträglich ListItem verändern
 
Ich möchte folgendes:

1. Prozedur A - Item hinzufügen: Name "XYZ", Status "Beginne"
2. Prozedur B - Status verändert sich: "Beginne" -> "MacheWas")

Ich kann nicht mit dem Index arbeiten, einfachster Problemfall:

1. Item hinzufügen "XYZ"
2. Item hinzufügen "XYZ2"
3. Status ändern - würde das falsche Item ändern.

Deshalb brauche ich etwas, mit dem ich in der Prozedur B noch das Item erreiche. Ich dachte, das wäre über das Handle möglich.

@Gremlin: Wie meinst du das mit der ID?

Gremlin 11. Mär 2007 15:48

Re: Nachträglich ListItem verändern
 
Zitat:

Zitat von ManuMF
Ich möchte folgendes:

1. Prozedur A - Item hinzufügen: Name "XYZ", Status "Beginne"
2. Prozedur B - Status verändert sich: "Beginne" -> "MacheWas")

Ich kann nicht mit dem Index arbeiten, einfachster Problemfall:

1. Item hinzufügen "XYZ"
2. Item hinzufügen "XYZ2"
3. Status ändern - würde das falsche Item ändern.

Deshalb brauche ich etwas, mit dem ich in der Prozedur B noch das Item erreiche. Ich dachte, das wäre über das Handle möglich.

@Gremlin: Wie meinst du das mit der ID?

hmm du kannst doch einfach die ID (den Data-Teil des TListItem) als
Identifiktionsmerkmal verwenden. Natürlich musst du wissen, welche
ID dann der Eintrag für Status "Beginne" hat

Delphi-Quellcode:
function AddToListItem(const Name, Status:string):integer;
begin
  // Tag der Listview als Zähler missbrauchen
  <DeineListview>.Tag := <DeineListview>.Tag+1;
  with <DeineListview>.Items.Add do begin
    Data := Pointer(<DeineListview>.Tag);
    Caption := Name;
    SubItems.Add(Status);
  end;
end;

function ChangeListItem(const Name, Status:string; Nr:integer):Boolean;
var
  i : integer;
begin
  Result := False;
  for i := 0 to Pred(<DeineListview>.Items.Count) do begin
    if (integer(<DeineListview>.Items[i].Data)=Nr) then begin
      Result := True;
      <DeineListview>.Items[i].Caption := Name;
      <DeineListview>.Items[i].Status := Status;
    end;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.

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