ListView Komponente mit leben erfüllen und Bearbeiten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ListView Komponente mit leben erfüllen und Bearbeiten

    Hallo,
    erstens ich kenne die F1 taste hat aber nichts gebracht, bin verzweifeld und ratlos und ein n00b aber das macht nicht nun zum Problem.
    Ich habe ein Listview, 9Editfelder eine MemoKomponente.
    Die Listview ist in 10 Spalten geteilt (für jedes der edit und memo komponenten eine) und ich muss irgendwie Die Daten (Texte) aus den Komponenten an die Listview übergben mit einem klick auf Knöpfchen und das will nich gehen weiß nicht wie ich das anstellen soll.
    Zum schluss solls so was wie ne Datenbank für arme sein ich kann also mehrere Datensatze(bestenend aus 10 einträgen) in die listview übergeben. und das Problem was sich diesem anschließt ist Wenn ich eine Zeile makiere sollen die Daten brav wieder in den Edit komponenten angezeigt werden damit man sie gegebennenfals nochmal ändern kann.
    ICH RAUCHE HILFE oder ist mir hier nicht mehr zu helfen ???
    Bitte schnellstmöglich :)
    Vielen Dank schon mal im voraus
  • Naja code kann mans nicht nennen hier ist mal das Projekt an sich ielecht hilft das ja weiter.
    [code:1]
    procedure TForm1.BitBtn3Click(Sender: TObject);
    begin
    ListView1.DeleteSelected;
    end;

    procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
    Selected: Boolean);
    begin
    with Item do
    begin
    Edit10.Text:= SubItems.Strings[0];
    Edit1.Text:= SubItems.Strings[1];
    Edit2.Text:= SubItems.Strings[2];
    Edit3.Text:= SubItems.Strings[3];
    Edit4.Text:= SubItems.Strings[4];
    Edit5.Text:= SubItems.Strings[5];
    Edit6.Text:= SubItems.Strings[6];
    Edit7.Text:= SubItems.Strings[7];
    Edit8.Text:= SubItems.Strings[8];
    Edit9.Text:= SubItems.Strings[9];
    Memo1.Text:= SubItems.Strings[10];
    end;
    end;


    procedure TForm1.BitBtn2Click(Sender: TObject);
    var Listitem: TlistItem;
    begin
    ListItem:=TListItem.Create(ListView1.Items);
    ListItem.SubItems.Add(Edit10.Text);
    ListItem.SubItems.Add(Edit1.Text);
    ListItem.SubItems.Add(Edit2.Text);
    ListItem.SubItems.Add(Edit3.Text);
    ListItem.SubItems.Add(Edit4.Text);
    ListItem.SubItems.Add(Edit5.Text);
    ListItem.SubItems.Add(Edit6.Text);
    ListItem.SubItems.Add(Edit7.Text);
    ListItem.SubItems.Add(Edit8.Text);
    ListItem.SubItems.Add(Edit9.Text);
    ListItem.SubItems.Add(Memo1.Text);
    ListView1.Items.AddItem(ListItem);
    end;
    .[/code:1][/code]
  • Noch ein paar probleme mit dem ding

    Hab doch noch ein Problem beim erstellen also das was isch einfüge ist verschoben fängt nicht in der erstel Spalte an mit einfügen sondern in der zweiten und bei der zurückübertragen in die EditKomponente fängt er an und Bringt mir bezeichner fehler kann mir da einer elfen???

    [code:1]procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    close;
    end;

    procedure TForm1.BitBtn5Click(Sender: TObject);
    begin
    Listview1.Clear;
    end;

    procedure TForm1.BitBtn3Click(Sender: TObject);
    var i:Integer;
    begin
    for i := 0 to ListView1.Items.Count -1 do
    if ListView1.Items.Selected then
    ListView1.Items.Delete(i);
    end;

    procedure TForm1.BitBtn2Click(Sender: TObject);
    var listitem:Tlistitem;
    begin
    ListItem:=TlistItem.Create(ListView1.Items);
    ListItem.Caption:='Museum AE';
    ListItem.SubItems.Add(Edit1.Text);
    ListItem.SubItems.Add(Edit2.Text);
    ListItem.SubItems.Add(Edit3.Text);
    ListItem.SubItems.Add(Edit4.Text);
    ListItem.SubItems.Add(Edit5.Text);
    ListItem.SubItems.Add(Edit6.Text);
    ListView1.Items.AddItem(ListItem);
    end;

    //Procedure ListView1SelectItem(Sender: Tobject; Item: TListItem;
    // Selected: Boolean);
    //begin
    //with Item do
    // begin
    // Edit1.Text:=IntToString;
    // Edit1.Text:=SubItems.Strings[0];
    // Edit2.Text:=SubItems.Strings[1];
    // Edit3.Text:=SubItems.Strings[2];
    // Edit4.Text:=SubItems.Strings[3];
    // Edit5.Text:=SubItems.Strings[4];
    // Edit6.Text:=SubItems.Strings[5];
    // end;

    procedure TForm1.BitBtn4Click(Sender: TObject);
    begin
    with ListView1.ItemFocused do
    begin
    SubItems[0]:=Edit1.Text;
    SubItems[1]:=Edit2.Text;
    SubItems[2]:=Edit3.Text;
    SubItems[3]:=Edit4.Text;
    SubItems[4]:=Edit5.Text;
    SubItems[5]:=Edit6.Text;
    end;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Edit1.Text:='';
    Edit2.Text:='';
    Edit3.Text:='';
    Edit4.Text:='';
    Edit5.Text:='';
    Edit6.Text:='';
    end;
    [/code:1]
  • Hallo, ich schalt mich mal ein....

    ....zum speichern ist eigentlich am einfachsten die items in eine .txt datei zu schreiben. bei einem ähnlichen datenbankenprogramm hatte ich das mal folgendermaßen gelöst (zwar simpel aber tuts):

    Ich hatte eine Listbox in der diverse Links gespeichert waren

    [code:1]
    procedure TForm1.btnsaveClick(Sender: TObject);// Speichern der Links
    begin
    form1.listbox.Items.SaveToFile('ed2k.txt');// Speichern der
    listboxeinträge in .txt Datei
    end;
    [/code:1]

    Laden funktioniert dann mit:
    [code:1]
    procedure TForm1.btnladenClick(Sender: TObject);
    begin
    listbox.Items.LoadFromFile('ed2k.txt');// Ort von wo die Liste geladen wird
    end;

    [/code:1]
    mfg KC
  • Ja danke für den Ansatz mit Listbox aber der Hilft mir nicht weiter da mein Listview ja mehrere Spalten hat (12 Stück). Habe mir gesacht einen Stream zu benutzen? Für eine Listview wäre das doch wohl am besten???
    [code:1]
    procedure TForm1.BitBtn7Click(Sender: TObject);
    var
    Stream1:TfileStream;
    begin
    Stream1:= TFileStream.Create('museum.txt', fmopenread or fmShareDenyNone);
    Stream1.ReadComponentRes(ListView1);
    Stream1.Free;[/code:1]
    Das ist doch dann so richtig?
  • Hmmm ggf wärs vllt einfacher mit einer StringGrid zu arbeiten, je nach dem. Ansonsten hätt ich hier noch einen Ansatz, vllt kannst du den ja bei dir einbauen:

    [code:1]
    var
    Stream: TFileStream;
    begin
    Stream := TFileStream.Create('C:\MeineDatei.dat', fmCreate);
    Stream.WriteComponentRes('', ListView1);
    Stream.Free;
    end;

    [/code:1]
    mfg KC
  • So bis jetzt hat alles geklappt vielen dank nochmal Habe nur noch problem habe jetzt einenen Quickreport erstellt und das ein wenig hübschgemacht doch da teil mag nicht richtig drucken woran kann da liegen?? Druckt nur beim eingestelten standart Drucker.
    Ist das ne sache die mit den Treibern unter Windows zusmammenhängt?
  • So hier der Quelltext zum Quickreport vielleicht es euch mal
    [code:1]
    var
    QuickReport2: TQuickReport2;

    implementation

    uses Unit1;

    {$R *.DFM}

    procedure TQuickReport2.QuickRep1BeforePrint(Sender: TCustomQuickRep;
    var PrintReport: Boolean);
    begin
    Z:=0;
    end;

    //da hier keine Datenbank verwendet wird müssen die Daten aus der listview eingelesen werden
    procedure TQuickReport2.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
    begin
    Moredata:=True;
    Moredata:=z<Form1.ListView1.Items.Count -1;
    inc(z)
    end;

    //Und in die Labels des Quickreports übertragen
    procedure TQuickReport2.QRLabel12Print(sender: TObject; var Value: String);
    begin
    Value:=Form1.Listview1.Items.Item[z-1].SubItems[(Sender as TQRLabel).Tag];
    end;[/code:1]

    P.S. das programm ist jetzt vollkommen fertig wenn ihr fragen darüber habt schreibt einfach wie gesagt ist eine Billig Datenbank mit Listview