Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - append löschen bei listbox?


D. Annies - Di 01.02.11 20:43
Titel: append löschen bei listbox?
Hi, Delpher,
wie kann ich bei einer Listbox einen Eintrag anhängen/ergänzen oder löschen? :)
In meinem Code ist noch der Wurm.


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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
procedure TBuchMain.Button2Click(Sender: TObject);   // übernehmen
var n : integer;
begin
  listbox3.Items[listbox3.itemindex] := edit1.Text;
  assignfile(t1, label30.caption + 'OUTTXT\FL.txt'); rewrite(t1);
  n := 0;
  repeat
    if listbox3.Items[n] <> ''  then
    begin                                     //  <--- muss weg
      writeln(t1, listbox3.items[n]);
      inc(n);
    end;                                      //  <--- weg, also inc(n) darf nicht geklammert sein  
  until n = listbox3.Items.Count;
  closefile(t1);
  listbox3.Clear;
  showmessage(inttostr(n) + ' Daten geschrieben');
  Fachleitungen1Click(Self);
  edit1.Text := '';
end;

procedure TBuchMain.Fachleitungen1Click(Sender: TObject);   // laden
var zei: string;
begin
  listbox3.Clear;
  assignfile(t1, concat(label30.caption, 'OUTTXT\FL.txt')); reset(t1);
    while not eof(t1) do  begin readln(t1, zei); listbox3.Items.add(zei); end;
  closefile(t1);
  checkbox7.checked := true; checkbox7click(self);
  SetLbWidth(listbox3);   //SetScrollWidth(listbox3);
  listbox3.Width := listbox3.Width + 50;
    if listbox3.Width > groupbox11.Width - 40 then groupbox11.Width := listbox3.Width+40;
end;
procedure TBuchMain.Fachleitungen2Click(Sender: TObject);  
begin  
  Fachleitungen1Click(Self);  
end;

procedure TBuchMain.Zeilelschen1Click(Sender: TObject);
begin
  if listbox3.Selected[listbox3.ItemIndex] then
    listbox3.Items[listbox3.ItemIndex] := '';
  Button2Click(Self);                                // Hier PRG-Absturz!! 
end;

procedure TBuchMain.Zeilehinzufgen1Click(Sender: TObject);
begin  
  listbox3.items.append(edit1.text);     
end;


Danke für eine Idee,
Detlef

P.S: manchmal muss man nur mal eine Pause machen ... siehe oben


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 01.02.2011 um 21:10


jaenicke - Di 01.02.11 22:22

Nicht nur ein Wurm:
Erstens wäre es ein wenig einfacher, wenn du einfach eine TStringList benutzt und die dann komplett mit SaveToFile speicherst. (Es sei denn die Geschwindigkeit ist entscheidend.)

Zweitens ist es keine gute Idee Button2Click usw. aufzurufen statt eigene Prozeduren zu erstellen und ordentlich zu benennen. Die kannst du dann sowohl von Button2Click als auch von woanders aufrufen. Dass es so nicht gerade sinnvoll ist, sieht man ja auch an den notwendigen Kommentaren dahinter... statt einfach die Buttons usw. ordentlich zu bezeichnen...

Drittens ist die Formatierung abenteuerlich. Ein Befehl pro Zeile...

Und viertens hast du schon gefunden. :D


D. Annies - Mi 02.02.11 19:02

Danke, werde ich berücksichtigen.
Gruß, Detlef