Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   hat TStringgrig eine innere Größenbeschränkung? (https://www.delphipraxis.net/154564-hat-tstringgrig-eine-innere-groessenbeschraenkung.html)

Satty67 16. Sep 2010 19:24

AW: hat TStringgrig eine innere Größenbeschränkung?
 
Also die Hinweise zusammengeworfen, (wenn schon die ganze Datenbank eingelesen und angezeigt werden muss) würde es am meisten Sinn machen, die Daten in einen schnellen "Container" einzulesen.

Also Daten erst in ein passendes dyn. Array einlesen und über eine simple Funktion die Werte für die jeweilige Zeile/Spalte bereitstellen (ist im Ausgangspost ja quasi schon vorhanden)
Delphi-Quellcode:
function GetDatabaseArrayValue(ACol, ARow): String;
.

Nach dem Einlesen ist RowCount bekannt und kann im StringGrid gesetzt werden. Das StringGrid wird jetzt nicht gefüllt sonder wie mkinzler vorgeschlagen hat, nur der sichtbare Bereich via DrawCell angezeigt (Beispiel mit einer fixed Row):
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

var
  s : String;
begin
  with (Sender as TStringGrid) do begin

    if gdFixed in State then
      SetTextStyle(Canvas, clBtnFace, clBtnText, [])
    else
    if gdSelected in State then
      SetTextStyle(Canvas, clHighlight, clHighlightText, [])
    else
      SetTextStyle(Canvas, clWindow, clWindowText, []);

    if ARow = 0 then
      s := Cells[Acol,Arow]
    else
      s := GetDatabaseArrayValue(ACol, ARow);

    Canvas.TextRect(Rect,Rect.Left +2,Rect.Top+2, s);
  end;
end;

p80286 17. Sep 2010 11:05

AW: hat TStringgrig eine innere Größenbeschränkung?
 
@Satty67
Das wird das beste sein.
Mal sehen was ich damit anfangen kann. Ich würde es so benennen:
"Ein Browserfenster über die Daten gleiten lassen."
Da als alternative Ausgabe Text/TMemo vorhanden ist kann man da gleich Nägel mit Köpfen machen. CopyundPaste bliebe dann zwar auf der Strecke habe ich bisher aber nicht benötigt.

Ich hab mal an der Ausgangsfragestellung weiter gebastelt und würde jetzt "ja" sagen.
(zumindestens bei Stringgrids mit weniger als 512 Cols)
Mein Fehler tritt immer dann auf, wenn das Stringgrid x7FFF80 oder mehr Cells enthalten soll.
egal ob der Eintrag in das Grid über Cells[x,y] oder Rows[y] erfolgt.
bevor es jemand anmerkt, ja RowCount und CellCount waren initialisiert.

Vielen Dank an alle, die sich Ihren Kopf darüber zerbrochen haben.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz