Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Anzahl von listbox Strings anpassen -> aus grid geladen (https://www.delphipraxis.net/55248-anzahl-von-listbox-strings-anpassen-aus-grid-geladen.html)

rhodan 18. Okt 2005 16:17


Anzahl von listbox Strings anpassen -> aus grid geladen
 
Grüße aus Hamburg,

muss nochmal mit meiner Listbox nerven :P

Habs jetzt zwar mit Hilfe geschafft die einträge aus dem Grid in der Listbox anzuzeigen, allerdings hab ich am ende der listbox immer leere Zeilen/Items (sry bin mir nicht sicher wie exakte name ist).
dies ist mein code mit dem ich die listbox fülle (ein paar var einträge kommen in diesem teil des quelltextes nicht vor, hab nur den listbox-quellcode kopiert):

Delphi-Quellcode:
var
 iRow: integer;
  sPrev, sCurr: string;
  datei : TextFile;
  dateiname : String;
  zeile : String;
  inhalt : String;
  perslist : Sarr;
  pers : Sarr;
  i, j : integer;
  begin
etc etc..........


listbox1.Clear;
   for iRow := 1 to length(perslist) do
    begin
    sCurr := StringGrid1.Cells[CI_ACCT, iRow];
    if sCurr <> sPrev then
    begin
      if iRow > 1 then
      listbox1.items.Add('');
      listbox1.items.Add(sCurr);
      listbox1.items.Add(StringOfChar('-', 10));
      sPrev := sCurr;
    end;
    listbox1.items.Add(StringGrid1.Cells[CI_NAME, iRow]);
  end;
 dateiname := ('rankinglist.htm');
  AssignFile(datei, dateiname);
  reset(datei);
  inhalt := '';
  repeat
    Readln(datei, zeile);
    inhalt := inhalt + zeile;
  until eof(datei);
  CloseFile(datei);
  inhalt := getTable(inhalt);
  perslist := getEntries(inhalt);

  i := 0;
  while (perslist[i] <> '') do
  begin
    pers := processAccount(perslist[i]);
    for j := 0 to 11 do
    begin
      Stringgrid1.cells[j+1,i+1]:=pers[j];
    end;
    inc(i);
  end;
 reloadtable.Enabled := true;
      reloadhtml.Enabled := true;
end;
end;
end;
Was ich schon heraus gefunden habe ist das die "Zeilenanzahl" der listbox mit der Sarr definition zusammenhängt.
Delphi-Quellcode:
for iRow := 1 to length(perslist) do
    begin
ist die zeile (denk ich) die auf "sarr" zurückgreift. Die Definition von "Sarr" hab ich ziemlich weit oben in meinem code stehen, direkt über der implementation:

Delphi-Quellcode:
type
 Sarr = Array [0..1000] of String;
statt der 1000 kann ich hier auch ne andere zahl eintragen, meine listbox wird immer exakt diese "Zeilenanzahl" haben. :cry:

da ich unterschiedlich lange listen in die listbox lade, möchte ich nun das dieses Array variabel ist bzw. sich an die anzahl der im Grid befindlichen Einträge hält. Wenn ihr nen anderen Quellcode braucht sagt bitte bescheid, ich komm da einfach nicht hinter :coder2:

Gruße von

Rhodan

marabu 18. Okt 2005 16:40

Re: Anzahl von listbox Strings anpassen -> aus grid gelad
 
Hi Rhodan,

die Lösung deines Problems steckt in deinem Parser. Beim Parsen weißt du ja, an welchen Platz im Array persList du zuletzt geschrieben hast. Wenn du die Werte dann wieder ausliest, dann musst du dieses Wissen wieder einbringen:

Delphi-Quellcode:
// so werden auch die unbenutzten Items verarbeitet
// for iRow := 1 to length(perslist) do

// Merke dir beim Parsen den letzten Index in PersCount
// und lasse die Schleife dann so laufen:

for iRow := 1 to PersCount do
Grüße vom marabu

rhodan 18. Okt 2005 21:23

Re: Anzahl von listbox Strings anpassen -> aus grid gelad
 
hmmm, wenn ich das so schreibe bekomme ich die meldung das "perscount" ein undef. bezeichner ist

marabu 19. Okt 2005 06:01

Re: Anzahl von listbox Strings anpassen -> aus grid gelad
 
Mache PersCount zu einer Variablen deiner Form, dann können der Parser und die von dir gezeigte Methode zum Füllen der ListBox auf diese Variable zugreifen.

Grüße vom marabu

rhodan 19. Okt 2005 19:04

Re: Anzahl von listbox Strings anpassen -> aus grid gelad
 
danke dir, werds mal ausprobieren :)

grüße von rhodan

rhodan 20. Okt 2005 00:05

Re: Anzahl von listbox Strings anpassen -> aus grid gelad
 
ok habs endlich gelöst. habs auf nem anderen weg geschafft. :dancer2:

Delphi-Quellcode:
var
Q: integer;

begin
for Q := listbox1.Items.Count - 1 downto 0 do
begin
if listbox1.Items[listbox1.Items.Count-1]='' then
listbox1.Items.Delete(listbox1.Items.Count-1);
end;
end;
und dafür hab ich 4 nächte gebraucht :wall:

Grüße aus Hamburg,

Rhodan


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 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