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 allgemeine Frage zu Grid's (https://www.delphipraxis.net/948-allgemeine-frage-zu-grids.html)

Hansa 30. Sep 2002 19:32


allgemeine Frage zu Grid's
 
Hi,

hänge hier an drei Problemchen fest :

1. Im grid zeigt Delphi mir alle Felder an, eines ist aber nur für interne Zwecke gedacht, wie kann ich das "ausblenden" ?

2. Habe das Grid vorerst mal auf eine Form gelegt, das soll aber eigentlich alleine für sich existieren und je nach Bedarf angezeigt werden. Im Moment habe ich immer die Form im Hintergrund. Außerdem soll es auch außerhalb der Form angezeigt werden können (überlappend oder so).

3. Wie komme ich an einzelne Zellen ran, bzw. wie kann ich den Wert einer ausgewählten Zelle irgendwie verwenden ? Das Grid an sich ist doch wahrscheinlich ein Array ? Oder ?:warn:

Gruß
Hansa

Christian Seehase 30. Sep 2002 19:42

Moin Hansa,

welches Grid meinst Du?

Sebastian Nintemann 30. Sep 2002 19:47

Hallo Hansa!


Also ich beziehe mich jetzt auf StringGrids, hoffe du meinst diese.

Zu 1: Ob man einzelne Felder ausblenden kann weiß ich nicht (denke mal nicht), aber ein StringGrid ist nicht so geeignet um Daten zu speichern, lass mal eine for-Schleife durch ein Stringgrig laufen und irgendwelche Operationen mit den Zelleninhalten ausführen und dann das gleiche mit einem gleichgroßen Array of String, das StringGrid ist wesentlich langsamer. Also wenn du die Möglichkeit dazu hast würde ich die internen Werte auf eine andere Weise speichern.

Zu 2: Auf die Strings in nem StringGrid kannst du mit StringGrid1.Cells[x,y] zugreifen.

Gruß Sebastian

Hansa 30. Sep 2002 19:48

Hallo Chris,

DBgrid :angle: Sag nur, das ist noch bei jedem Grid anders ?

Gruß
Hansa

Sebastian Nintemann 30. Sep 2002 19:53

Hmm also doch kein StringGrid :oops:

Naja was solls :mrgreen:

Gruß Sebastian

Hansa 30. Sep 2002 19:55

Hallo Sebastian,

Danke für die Antwort.

Zitat:

Zu 2: Auf die Strings in nem StringGrid kannst du mit StringGrid1.Cells[x,y] zugreifen.
Also ist es doch besser das Grid nicht kreisförmig zu machen.
:mrgreen:
Wenn ich auch oft lese, "guck in der Delphi Hilfe", die ist trotzdem Sch.... In max. 10 % der Fragen finde ich dort vielleicht einen Hinweis, Beispiele sind so gut wie nicht zu finden. Soviel noch dazu.

Gruß
Hansa

Christian Seehase 30. Sep 2002 20:09

Moin Hansa,

ob es da Unterschiede gibt, weiss ich auch nicht, denn bislang habe ich nur mit StrinGrid gearbeitet. Da ich bei Datenbanken bislang keine Verwendung für grosse vorgefertigte Lösungen habe benutze ich da immer meine Eigenentwicklung ;-)

Sollten sich die Grids in diesem Bereich nicht unterscheiden, könnte ich nur noch mal auf Verdacht die Ausführungen von Sebastian ergänzen.

Zu 1.:
Da ein Grid sich ja nur, aus Zeilen/Spalten zusammensetzt, wirst Du wohl auch nur eine solche komplett ausblenden können.

Variante 1:
RowCount bzw. ColCount eine Zeile/Spalte kleiner setzen, als Du brauchst.
Variante 2:
Die Höhe/Breite der auszublenden Zeile/Spalte auf 0 setzen.

Die dann unsichtbare Spalte kannst Du dann intern nutzen.

Zu 2.
Da wirst Du wohl nicht umhinkommen Dir ein Formular zu nehmen, dass dann nur bei Bedarf angezeigt wird.

Diese Grids sind übrigens eine Eigenentwicklung von Borland, und haben so unmittelbar keine Entsprechung in den Windows Controls.
Sie haben auch die Interessante Eigenschaft, dass die Zellen nicht erst erzeugt werden müssen, dass heisst man kann auch eine Zelle ansprechen, die ausserhalb RowCount/ColCount liegt, ohne dass ein Fehler auftritt.
Die beiden Counter geben nur an inwieweit die Zellen sichtbar sein sollen.

(BTW: Da die Grids nichts mit der Windows API zu tun haben, verschieb' ich den Thread mal nach VCL-Komponenten)

Hansa 1. Okt 2002 14:14

Hallo Chris,

Zitat:

Da ein Grid sich ja nur, aus Zeilen/Spalten zusammensetzt, wirst Du wohl auch nur eine solche komplett ausblenden können.
Nun, ich hatte den falschen Ansatz, es handelt sich um ein SQL-DBgrid und dort stand select * from. Nehme ich statt dem *, die einzelnen Felder, die das Grid anzeigen soll, so gehts einwandfrei ! :D Und keiner kann mehr an meiner DB einfach so rumfummeln.

Das Thema müßte man jetzt eigentlich an Datenbanken "weiterreichen" :mrgreen: .

Gruß
Hansa

Hansa 1. Okt 2002 14:32

Hi Chris,

Da ich hier ein SQL-DBgrid habe, war mein Ansatz nicht so ganz richtig. Am einfachsten ist es statt "SELECT * FROM ....", die Felder, die angezeigt werden sollen einzeln aufzuführen. Die internen Sachen dürfen dann halt nicht angegeben werden.

Handelt es ich um ein Grid mit sehr vielen Spalten, wobei die auszublendenden weit auseinander liegen oder so, geht es auch so :

Beim Grid zeigt der OI ein Feld Columns an. Dahinter verbirgt sich ein Columns-Editor. Hier kann man nun sagen, welche Felder nicht angezeigt oder wieder hinzugefügt werden sollen.

Das war eigentlich das was ich gesucht hatte, aber direkt beim SQL schon einzugreifen ist meiner Ansicht nach doch besser. Ob das jetzt allerdings DBgrid-spezifisch ist, wer weiß ? Vermute mal der Columns Editor steht bei allen Grids zur Verfügung.

Mich stört jetzt nur noch das Aussehen des Grids. Kann man es so hinkriegen, daß das Grid den ganzen Platz ausfüllt. Bei mir ist rechts daneben und unten, alles weiß. Also Platz der gar nicht gebraucht wird.


Gruß
Hansa

Hansa 1. Okt 2002 15:04

Hi,

das Thema ist doch noch nicht erledigt.

Zitat:

Auf die Strings in nem StringGrid kannst du mit StringGrid1.Cells[x,y] zugreifena ist doch noch nicht erledigt.
Brauche den Wert des ausgewählten, wobei nur in einer Spalte ausgewählt werden darf, die anderen aber doch zu sehen sind. :shock:

Gruß
Hansa


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz