Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Di 01.02.11 20:43 
Hi, Delpher,
wie kann ich bei einer Listbox einen Eintrag anhängen/ergänzen oder löschen? :)
In meinem Code ist noch der Wurm.

ausblenden volle Höhe 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

_________________
ut vires desint, tamen est laudanda voluntas
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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

Für diesen Beitrag haben gedankt: D. Annies
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Mi 02.02.11 19:02 
Danke, werde ich berücksichtigen.
Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas