AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox Item überschreiben

Ein Thema von Stern · begonnen am 21. Nov 2007 · letzter Beitrag vom 21. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#1

Listbox Item überschreiben

  Alt 21. Nov 2007, 11:28
Hallo zusammen,

ich habe eine Frage zum Ändern eines bestimmmten Eintrags in einer ListBox.
Ich habe im Prinzip 2 Textdateien, die beide eingelesen werden und deren Inhalte jeweils in einer Listbox
ausgegeben werden. Beide Dateien enthalten die gleiche Anzahl an zeilen!

Wenn ich nun in der ersten Listbox ein Element auswähle, wird das entsprechende Element (mit dem gleichen Index)
der zweiten Listbox in einem Edit angezeigt. nun kommts...

Der Benutzer soll nun diesen Eintrag ändern können und über einen Button Speichern die Zeile in der Datei ÜBERSCHRIEBEN werden.
Bis jetzt bekomm ich es immer nur hin, dass er den Text am ENDE oder am ANFANG einfügt, aber icht überschreibt.
Kann mit da jemand einen Tipp geben? Ich steh da wohl gerade ziemlich auf dem Schlauch...

Liebe Grüße
Steffi

PS: Das Edit fülle ich so:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var
  i: Integer;
begin
       for i := 0 to ListBox1.Items.Count -1 do
       begin
            if ListBox1.Selected[i] then
            Memo1.text := ListBox2.Items.Strings[i];
            end;
       end;
steffi
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 11:32
Dreh doch die Zuweisung einfach um:
ListBox2.Items.Strings[<index>] := Memo1.Text;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 11:33
Versuch es mal so:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var
  i: Integer;
begin
       for i := 0 to ListBox1.Items.Count -1 do
       begin
            if ListBox1.Selected[i] then
            Memo1.Lines[i] := ListBox2.Items[i];
            end;
       end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 11:34
Zitat von Stern:
Ich habe im Prinzip 2 Textdateien, die beide eingelesen werden und deren Inhalte jeweils in einer Listbox
ausgegeben werden. Beide Dateien enthalten die gleiche Anzahl an zeilen!

Wenn ich nun in der ersten Listbox ein Element auswähle, wird das entsprechende Element (mit dem gleichen Index)
der zweiten Listbox [...]
Hört sich wieder einmal so an, als sei eine TListView besser dafür geeignet ...
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 11:54
Zitat von Stern:
[...] wird das entsprechende Element (mit dem gleichen Index)
der zweiten Listbox in einem Edit angezeigt.
Zitat von Stern:
Memo1.text := ListBox2.Items.Strings[i];
Ich dachte es handelt sich um ein Edit und kein Memo?

Zitat von mkinzler:
ListBox2.Items.Strings[<index>] := Memo1.Text;
Etwas ungünstig oder? Ein Memo kann nun mal mehrere Zeilen beinhalten, eine einzige Zeile dagegen nicht, sonst wäre es ja auch keine Zeile mehr ...
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#6

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 12:13
Oh...
Sorry, da habe ich mich wohl vertan. Ich benutze ein edit. Kein Memo.
Hast du mir vielleicht noch einen Tipp, wie ich die Zeile dann überschreiben kann?

Liebe Grüße
Steffi
steffi
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 12:15
ListBox2.Items.Strings[<index>] := Edit.Text;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Stern
Stern

Registriert seit: 26. Feb 2007
Ort: Köln
74 Beiträge
 
#8

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 12:27
@mkinzler: danke für deine Antwort. Joa, dass hab ich schon so drinne

Zitat:
ListBox2.Items.Strings[<index>] := Edit.Text;
Allerdings hab ich nun ja das problem, dass ich momentan nicht weiß, wie ich den richtigen Index bekomme.
Wenn ich das wie oben verwendet, wird der geänderte Eintrag an die erste Zeile geschrieben.
Aber ich möchte ja den ausgewählten Eintrag, der ja vielleicht auch in der 10. Zeile steht überschreiben.
Ich muss sagen, dass ich erst seit ein paar Tagen mit Delphi "experimentiere"...

Also kann mir jemand nen Tipp geben, wie ich an den richtigen Index komme?

Liebe Grüße
Steffi

PS: Hier nochmal die wichtigen Codeteile:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
s:string;
begin

     if OpenDialog1.Execute then
     begin
          ListBox1.Clear;
          AssignFile(F, OpenDialog1.FileName);
          try
             Reset(F);
          except
                ShowMessage('Datei konnte nicht geöffnet werden');
                exit;
          end;

          if IOResult <> 0 then
          exit;

          while not EoF(F) do
          begin
          ReadLn(F,s);
          ListBox1.Items.Add(s);
          end;
     CloseFile(F);
    end;
  end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  i: Integer;
begin
       for i := 0 to ListBox1.Items.Count -1 do
       begin
            if ListBox1.Selected[i] then
            Edit1.text := ListBox2.Items.Strings[i];
            end;
       end;
procedure TForm1.Button3Click(Sender: TObject);

var
F:TextFile;
s: string;

begin
      if OpenDialog2.Execute then
     begin
          ListBox2.Clear;
          AssignFile(F, OpenDialog2.FileName);
          try
             Reset(F);
          except
                ShowMessage('Datei konnte nicht geöffnet werden');
                exit;
          end;

          if IOResult <> 0 then
          exit;

          while not EoF(F) do
          begin
          ReadLn(F,s);
          ListBox2.Items.Add(s);
          end;
     CloseFile(F);
    end;
end;
procedure TForm1.Button2Click(Sender: TObject);

var i: integer;
begin
     ListBox2.Items.Strings[i] := Edit1.Text;
     ListBox2.Update;
end;
steffi
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 12:32
Hallo,

meinst du etwa ListBox2.ItemIndex?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SList: TStringList;
  Datei: AnsiString;
begin
  Datei:= 'C:\meineDatei.txt';
  if FileExists(Datei) then
  begin
    SList:= TStringList.Create;
    try
      SList.LoadFromFile(Datei);
      if ListBox2.ItemIndex >= 0 then
      begin
        SList.Strings[ListBox2.ItemIndex]:= Edit1.Text;
        SList.SaveToFile(Datei);
      end;
    finally
      SList.Free;
    end;
  end;
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Listbox Item überschreiben

  Alt 21. Nov 2007, 12:32
Zitat von Stern:
Allerdings hab ich nun ja das problem, dass ich momentan nicht weiß, wie ich den richtigen Index bekomme.
Wenn ich das wie oben verwendet, wird der geänderte Eintrag an die erste Zeile geschrieben.
Aber ich möchte ja den ausgewählten Eintrag, der ja vielleicht auch in der 10. Zeile steht überschreiben.
TListBox.ItemIndex
Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:14 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