Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Inhalte von Stringgrid bleiben unsichtbar (https://www.delphipraxis.net/116566-inhalte-von-stringgrid-bleiben-unsichtbar.html)

stefanmichel 2. Jul 2008 08:50


Inhalte von Stringgrid bleiben unsichtbar
 
Guten Morgen,

ein Anfänger bittet um einen Tipp:

Ich lese Daten aus einer externen Datei (Rechn.Nr., Kundenname, Datum, Betrag) in ein Stringrid ein und will diese zum Nachdruck der Rechnung anbieten.

Immer ab Zeile 163 bleiben die Einträge des Stringgrids unsichtbar, die Inhalte sind aber definitiv da - beim Anklicken der leeren Zeile werden die richtigen Werte ausgelesen.

Gibt es ein Limit für darstellbare Zeilen eines Stringgrids ? Wo kann ich das erhöhen, wenn überhaupt ?
Läuft das Programm außerhalb von Delphi, sind's 182 Zeilen - das legt nahe, daß es sich um ein Speicherauslastungsproblem handelt ...

Danke!

Stefan Michel

Klaus01 2. Jul 2008 09:30

Re: Inhalte von Stringgrid bleiben unsichtbar
 
Guten Morgen,

wie befüllst Du denn das StringGrid?

Eine Grenze gibt es schon beim StringGrid sie wird durch die Typen von Rows and Cols bestimmt.

Grüße
Klaus

taaktaak 2. Jul 2008 09:34

Re: Inhalte von Stringgrid bleiben unsichtbar
 
Moin, Moin,
aber an RowCount scheint's ja nicht zu liegen, die Inhalte sind offenbar vorhanden, werden aber ab einer bestimmten Zeile nur nicht angezeigt. Seltsam. Verwendest du TStringGrid oder eine andere Komponente?

stefanmichel 2. Jul 2008 09:39

Re: Inhalte von Stringgrid bleiben unsichtbar
 
Hallo Klaus,

danke für Deine Antwort.

Am Befüllen liegt's nicht, sonst wären die Daten ja nicht auslesbar. Es hapert nur an der Sichtbarkeit.

Ich verwende ein ganz einfaches Stringgrid mit 5 cols und einem rowcount, der entsprechend der Datenmenge gesetzt ist.

Stefan

stefanmichel 2. Jul 2008 09:40

Re: Inhalte von Stringgrid bleiben unsichtbar
 
um genau zu sein: ein TStrinGrid

messie 2. Jul 2008 09:42

Re: Inhalte von Stringgrid bleiben unsichtbar
 
Hast Du denn das Grid auf Defaultdrawing stehen und machst Du irgendwas in den OnDrawCell, das vielleicht Deine Zahlen überschreibt?

Grüße, Messie

angos 2. Jul 2008 09:42

Re: Inhalte von Stringgrid bleiben unsichtbar
 
Vielleicht eine dumme idee, aber setzt du vielleicht im OnDrawCell die Schriftfarbe irgendwann auf weiß ?

Ansonsten zeig doch mal den Code wie du das befüllst.

Gruß
Ansgar

stefanmichel 2. Jul 2008 09:53

Re: Inhalte von Stringgrid bleiben unsichtbar
 
nein, das mache ich nicht. ich verwende drawcell nur, um in der spalte betrag eine rechtsbündige ausrichtung zu erreichen - das funktioniert. habe drawcell auch schon weggelassen, um diese fehlerquelle zu beseitigen - trotzdem nur 163 sichtbare zeilen, wenngleich alle linksbündig :x

hallo messie, defaultdrawing ist auf true ...

taaktaak 2. Jul 2008 10:03

Re: Inhalte von Stringgrid bleiben unsichtbar
 
Na, ich denke auch: Ein bisschen Code wäre wohl jetzt sinnvoll

stefanmichel 2. Jul 2008 10:10

Re: Inhalte von Stringgrid bleiben unsichtbar
 
bitte schön:

sdat ist eine bereits gefilterte Datei, die nur die relevanten datensätze enthält:

Delphi-Quellcode:
  suchliste.RowCount := pred(filesize(sdat));
  for f := 0 to pred(suchliste.rowcount) do suchliste.rowheights[f] := 20;
  suchliste.ColWidths[0] := 40;
  suchliste.ColWidths[1] := 45;
  suchliste.ColWidths[2] := 240;
  suchliste.ColWidths[3] := 100;
  suchliste.ColWidths[4] := 100;
  for f := 0 to pred(filesize(sdat)) do begin
    read(sdat,spuff);
    str(f,t);
    suchliste.Cells[0,f] := s;
    suchliste.Cells[1,f] := spuff.num,4,'0');
    suchliste.Cells[2,f] := spuff.kun;
    suchliste.Cells[3,f] := spuff.dat;
    suchliste.Cells[4,f] := spuff.bet;
  end;
  suchliste.row := 0;
das drawcell sollte nur auf spalte 4 (betrag) wirken, tut es auch. auch wenn ich weglasse, bleibt das problem bestehen ...

Delphi-Quellcode:
  procedure TForm2.SuchlisteDrawCell(Sender: TObject; ACol, ARow: Integer;
    Rect: TRect; State: TGridDrawState);
  var s: string;
  begin
    if acol = 4 then begin
    s := Suchliste.Cells[ACol, ARow]; {Text der Zelle holen}
    Suchliste.Canvas.FillRect(Rect); {Zelle leer überzeichnen}
    DrawText(Suchliste.Canvas.Handle, PChar(s), Length(s), Rect, DT_SINGLELINE or DT_right or
      DT_VCENTER); {Text zentriert zeichnen}
    end;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.
Seite 1 von 2  1 2      

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