AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze aus ner ListView ohne ID ändern?
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze aus ner ListView ohne ID ändern?

Ein Thema von AlexII · begonnen am 15. Okt 2012 · letzter Beitrag vom 16. Okt 2012
 
Popov
(Gast)

n/a Beiträge
 
#4

AW: Datensätze aus ner ListView ohne ID ändern?

  Alt 15. Okt 2012, 19:27
Hast wahrscheinlich schon selbst gelöst, aber ich habe so Just4Fun ein Beispiel geprogt. Vielleicht interessiert es mal einen.

Beispiel ist nicht perfekt, kann man besser machen, ich hoffe ohne Fehler. Nicht wundern über Teile des Beispiels, einige Funktionen habe ich aus einem anderen Projekt genommen, vor allem die Daten für Beispiel.

Delphi-Quellcode:
type
  TInfo = class
    ID: Integer;
  end;

  {Gibt den X-ten Teilstring eines mit Kommas getrennten Daten-Strings}
function ExtractSubStr(Str: String; Index: Integer): String;
var
  i: Integer;
begin
  Result := '';
  if Index < 1 then Exit;
  Str := Str + ',';
  for i := 1 to Index - 1 do Delete(Str, 1, Pos(',', Str));
  Result := Trim(Copy(Str, 1, Pos(',', Str) - 1));
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  sl: TStringList;
  i: Integer;
  NewColumn: TListColumn;
  ListItem: TListItem;
  Info: TInfo;
begin
  with ListView1 do
  begin
    ViewStyle := vsReport;
     
    //Erstellt Spalten
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Name';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Ort';
    NewColumn := Columns.Add;
    NewColumn.Caption := 'Freunde';

    {Beispieldaten. Letzter Wert ist eine ID}
    sl := TStringList.Create;
    try
      //Beispieldaten in TStringList
      sl.Add('Anna, Köln, 1 Gemeinsame Freunde, 0');
      sl.Add('Kristina, München, 1 Gemeinsame Freunde, 1');
      sl.Add('Sonja, Berlin,,2');
      sl.Add('Petra, Frankfurt, 1 Gemeinsame Freunde, 3');
      sl.Add('Berbel, Lübeck,, 4');

      for i := 0 to sl.Count - 1 do
      begin
        //Daten an ListView übergeben
        ListItem := Items.Add;
        ListItem.Caption := ExtractSubStr(sl[i], 1);
        ListItem.SubItems.Add(ExtractSubStr(sl[i], 2));
        ListItem.SubItems.Add(ExtractSubStr(sl[i], 3));

        //Info 4 an die TInfo Klasse
        Info := TInfo.Create;
        Info.ID := StrToIntDef(ExtractSubStr(sl[i], 4), -1);
        //Objekt an Item Data übergeben
        ListItem.Data := Info;
      end;
    finally
      sl.Free;
    end;
  end;
end;

procedure TForm1.ListView1Click(Sender: TObject);
var
  Info: TInfo;
begin
  with ListView1 do
  begin
    if ItemIndex < 0 then Exit;

    Info := TInfo(Selected.Data);
    ShowMessage(IntToStr(Info.ID));
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  Info: TInfo;
  i: Integer;
begin
  with ListView1 do
  begin
    for i := 0 to Items.Count - 1 do
    begin
      //Diese Funktion gibt die Objekte wieder frei.
      //Beim löschen eines Items müß immer vorher das Objekt freigegeben werden
      Info := TInfo(Items[i].Data);
      Info.Free;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Info: TInfo;
  i: Integer;
begin
  with ListView1 do
  begin
    if ItemIndex < 0 then Exit;
    if Selected = nil then Exit;

    //Beim löschen eines Items vorher Objekt freigeben
    Info := TInfo(Selected.Data);
    Info.Free;
    Selected.Delete;
  end;
end;
TInfo ist eine simple Klasse die die ID beinhaltet, mehr nicht. Wichtig ist vor allem, dass nicht mehr direkt gelöscht wird, sondern vorher immer zuerst das Object des Items freigegeben wird.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 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