AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

StringGrid (prinzielle Abläufe)

Ein Thema von Jean312 · begonnen am 16. Jul 2014 · letzter Beitrag vom 16. Jul 2014
Antwort Antwort
Jean312

Registriert seit: 1. Dez 2013
55 Beiträge
 
#1

StringGrid (prinzielle Abläufe)

  Alt 16. Jul 2014, 18:19
Delphi-Version: 5
Ein Hallo an die Gemeinde,

ich hoffe, dass sich unter euch ein guter "teacher" befindet, der einmal die allgemeinen zeitlich funktionalen Abläufe bei der Benutzung eines StringGrids erklären kann.

Ich habe mir schon einige Foren und Threads angeschaut, wo es um die Arbeit mit StringGrids geht, jedoch fand ich eigentlich nichts, was mir die zeitlichen Abläufe zur Verständlichkeit verdeutlichen konnte.

Hauptsächlich geht es hierbei um:
- das Füllen einerseits (StringGrid.Cells[x,y]:='Wert')
- und Modifikationen (Zeichnen)
- Farbzuweisung einer bestimmten Zelle,
- ein Icon oder Bild in eine bestimmte Zelle,
- ein Objekt in eine bestimmte Zelle (z.B. Checkbox, Combobox etc.)
im OnDrawCell-Ereignis
Ich gehe davon aus, dass mit dem Füllen einer Zelle auch jedes Mal das OnDrawCell-Ereignis aufgerufen wird.

Aber wie genau funktioniert es, oder bzw. wie muss eine Routine erstellt werden, wenn bsw. in einer procedure FillGrid über eine for-Schleife bestimmte Text-Werte eingetragen werden, in bestimmten Zellen aber eine der obengenannten Modifikationen stattfinden sollen.

Wie müssen diese beiden Ereignisse [procedure zum Füllen] und die [Routine im OnDrawCell] miteinander verknüpft werden?

Beispiel: Grid leer (Ur-Zustand)
Code:
   ----------- ----------- ----------- -----------
  |0,0 zelle 1|1,0 zelle 2|2,0 zelle 3|3,0 zelle 4|
   ----------- ----------- ----------- -----------
  |0,1 zelle 5|1,1 zelle 6|2,1 zelle 7|3,1 zelle 8|
   ----------- ----------- ----------- -----------
  |0,2 zelle 9|1,2 zelle10|2,2 zelle11|3,2 zelle12|
   ----------- ----------- ----------- -----------
Beispiel Endergebnis:
Code:
   ----------- ----------- ----------- -----------
  | Text 1    | Icon 1*   | Text 2    | Combobox 1|
   ----------- ----------- ----------- -----------
  | rote Farbe| Text 3    | Edit 1    | Checkbox 1|
   ----------- ----------- ----------- -----------
  | Icon 2*   | Text 4    | Text 5    | Text 6    |
   ----------- ----------- ----------- -----------
 
  * Icons sind beispielsweise in einer ImageList
Bisher fand ich eigentlich nur Code-Beispiele, wo z.B. eine ganze Reihe farblich geändert, oder in einer bestimmten Spalte ein Objekt (z.B. Bild) eingefügt worden.

Wäre echt cool, wenn es jemand mal so richtig einleuchtend erklären könnte.

Vielen Dank schon mal im Voraus.

LG, Jean P.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: StringGrid (prinzielle Abläufe)

  Alt 16. Jul 2014, 18:23
In aRow/aCol steht der Zeilen- bzw. Spaltenindex der aktuell gezeichneten Zelle
Markus Kinzler
  Mit Zitat antworten Zitat
Jean312

Registriert seit: 1. Dez 2013
55 Beiträge
 
#3

AW: StringGrid (prinzielle Abläufe)

  Alt 16. Jul 2014, 19:22
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: StringGrid (prinzielle Abläufe)

  Alt 16. Jul 2014, 19:42
Ich glaube du hast kompliziertere Vorstellungen als es tatsächlich ist. Oder dein Problem übersteigt meine geistigen Fähigkeiten.

1)
Mit Cells[Int, Int] hast du nichts anderes als einen Setter, der in ein internes String-Array des Stringgrid schreibt: Text. Anschließend ruft er intern InvalidateCell(..) auf welches mittels Windows-API das Rechteck dieser Zelle "ivalidiert"- Es muss also neu gezeichnet werden.

2)
Und wenn neu gezeichnet wird kommt hierbei das OnDrawCell-Ereignis zum Tragen: Hier kannst du, als Benutzer des Stringgrids festlegen, wie wir uns nun in diesem Rechteck austoben können.


Spontan würde ich sagen dass es dazu mehr nicht zu sagen gibt.

PS: Comboboxen, Bilder, all sowas- Bist du sicher dass ein Stringgrid überhaupt das richtige ist und es keine bessere Lösung gibt? Ein Flowpanel mit dem ganzen Kram drin? Die TVirtualTreeView-Komponente?
  Mit Zitat antworten Zitat
Jean312

Registriert seit: 1. Dez 2013
55 Beiträge
 
#5

AW: StringGrid (prinzielle Abläufe)

  Alt 16. Jul 2014, 20:09
Danke für die Antwort.

Nun, die Sache mit der Combox, Edit oder Checkboxen habe ich schon in Anwendungen gesehen.

Aber einmal abgesehen davon, lässt es sich denn nicht realisieren, bei einem existierenden Wert in der Tabelle (StringGrid) z.B. der Wert 'X' an dieser Stelle eine Checkbox oder ein Bild darüber zu zeichnen?

Ich habe einiges getestet, aber irgendwie komme ich nicht damit klar.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: StringGrid (prinzielle Abläufe)

  Alt 16. Jul 2014, 20:31
Möglich ist alles, aber ich würde davon abraten- Checkboxen und ähnliches sind wieder eigene Komponenten (auch aus Windows-Sicht) mit ihren eigenen Paint-Handlern.

Ich würde dringend davon abraten, sowas von Null auf selber zu basteln. Es gibt dafür fertige Komponenten (Freeware und zum Kaufen). Siehe beispielsweise das Bild im Anhang. Das scheint doch genau zu sein was du willst, oder? (KGrid)
Miniaturansicht angehängter Grafiken
big1.png  

Geändert von Der schöne Günther (16. Jul 2014 um 20:33 Uhr) Grund: Anderes Bild gewählt
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: StringGrid (prinzielle Abläufe)

  Alt 16. Jul 2014, 22:35
ich hoffe, dass sich unter euch ein guter "teacher" befindet, der einmal die allgemeinen zeitlich funktionalen Abläufe bei der Benutzung eines StringGrids erklären kann.
Wieso fragst du erst das Eine, wenn du doch das Andere wissen willst? Dein Problem läßt sich ganz einfach durch die Forensuche beheben: So habe ich eben innerhalb von 20 Sekunden das hier gefunden. Da gibt es aber noch viel viel mehr ...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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