Das Grid ist nur für BCB 6. Borland ist hier wohl nicht abwärtkompatibel.
Leider sind gute professionelle Grids teuer bzw. schwer zu finden. Schöne Grids bietet die Firma TMS-Software.Diese Grids kann man dort auch downloaden. Da es sich um Demo-Komponenten handelt, sind Hinweise auf die Firma im Grid zu sehen.
Beim Umstieg von BCB 4 auf BCB 6 mußte ich feststellen, dass das von mir favorisierte Grid nicht mehr im BCB 6 läuft. Überhaupt ist festzustellen, dass viele in Delphi geschriebene Komponenten nicht mehr im BCB 6 laufen. Was hier Borland macht ist mir ziemlich unklar (Auch der Support ist wohl der schlechteste den man sich vorstellen kann).
Nun es hat mich also gereizt selbst mal so eine Grid-Komponente zu schreiben. Die Arbeit an der vorliegende Komponente ist noch nicht beendet . Zur Zeit hat die Komponete die gleichen Eigenschaften wie die StringGrid Komponente kann aber zusätzlich:
Leider gibt es keine Klasse TCustomStringGrid. So muß das Grid von TCustomDrawGrid abgeleitet werden, da sonst prinzipiell alle Eigenschaften und Methoden public sind, ohen dass man sie ausblenden könnte. So steht das Ereigniss ONDRAWCELL nicht mehr zur Verfügung. Die Komponente übernimmt jetzt wegen der Ausrichtung generell das Zeichnen der Zellen. Asi diesem Grunde ist die Eigenschaft DEFAULTDRAWING ebenso nicht mehr vorhanden. Beide können ohne Probleme in der Komponente wieder sichtbar gemacht werden, aber einer kann nur für die Ausgabe sorgen.
Die Methoden CELL, COLS und ROWS wurden wie im BCB StringGrid implementiert.
Hier wie immer die Liste der zusätzlichen Eigenschaften (__published) und Methoden (public)
| TExtendedStringGrid | ||
| __published: | __property TExt_Align TextAlign | Generelle Ausrichtung aller Zellen im
Grid: algLeft = Links algCenter = Mitte algRight = Rechts |
| __property TExt_Align TextFixedCol | Ausrichtung der festen
Spalten: algLeft = Links algCenter = Mitte algRight = Rechts |
|
| __property TExt_Align TextFixedRow | Ausrichtung der festen Zeilen: algLeft = Links algCenter = Mitte algRight = Rechts |
|
| __property Graphics::TFont* FontFixedCols | Font der festen Spalten | |
| __property Graphics::TFont* FontFixedRows | Font der festen Zeilen | |
| __property Graphics::TFont* Font2 | freier Font. Für direkte Vorgabemethoden im Abschnitt public | |
| __property TStringList* FixedColsText | Text der festen Spalten | |
| __property TStringList* FixedRowsText | Text der festen Zeilen | |
| __property TColor SortBitmapColor | Gibt die Farbe an, mit der die Pfeile angezeigt werden, die die Sortierungsrichtung anzeigen | |
| __property TColor SelectedCellColor | Gibt die Farbe an, mit der die selektierten Zellen gezeichnet werden | |
| public: | void __fastcall TextAlignCol(int ACol,TExt_Align alg,bool fixed=false); | Die Spalte ACol bekommt die in TExt_Align angegebene Ausrichtung. Der boolsche Parameter fixed gibt an, ob dies auch für die festen Spalten gelten soll (vorgegeben false = nein) |
| void __fastcall TextAlignRow(int ARow,TExt_Align alg,bool fixed=false); | Die Zeile ARow bekommt die in TExt_Align angegebene Ausrichtung. Der boolsche Parameter fixed gibt an, ob dies auch für die festen Zeilen gelten soll (vorgegeben false = nein) | |
| void __fastcall TextAlignCell(int ACol, int ARow,TExt_Align alg); | Die Zelle an Spalte ACol, Zeile ARow bekommt die in TExt_Align angegebene Ausrichtung. | |
| void __fastcall FontCol(int
ACol,TExt_Font fnt, bool fixed); void __fastcall FontCol(int ACol,Graphics::TFont *fnt, bool fixed); |
Die Spalte ACol bekommt den in TExt_Font
angegebenen Font. fntText = Standardfont fntRows = Font der Zeilen fntCols = Font der Spalten fntFont2 = freier Font Der boolsche Parameter fixed gibt an, ob dies auch für die festen Spalten gelten soll (vorgegeben false = nein).Wird die mit Graphics::TFont *fnt überladene Funktion angewandt so kann ein Zeiger auf TFont übergeben werden. |
|
| void __fastcall FontRow(int
ARow,TExt_Font fnt, bool fixed); void __fastcall FontRow(int ARow,Graphics::TFont *fnt, bool fixed); |
Die Zeile ARow bekommt den in
TExt_Font angegebenen Font. fntText = Standardfont fntRows = Font der Zeilen fntCols = Font der Spalten fntFont2 = freier Font Der boolsche Parameter fixed gibt an, ob dies auch für die festen Spalten gelten soll (vorgegeben false = nein)Wird die mit Graphics::TFont *fnt überladene Funktion angewandt so kann ein Zeiger auf TFont übergeben werden. |
|
| void __fastcall FontCell(int
ACol, int ARow, TExt_Font fnt); void __fastcall FontCell(int ACol, int ARow, Graphics::TFont *fnt); |
Die Zelle an Spalte ACol, Zeile ARow
bekommt den in TExt_Font angegebenen Font. fntText = Standardfont fntRows = Font der Zeilen fntCols = Font der Spalten fntFont2 = freier Font Wird die mit Graphics::TFont *fnt überladene Funktion angewandt so kann ein Zeiger auf TFont übergeben werden. |
|
| void __fastcall ClearGrid(); | Löscht das komplette Grid | |
| bool __fastcall SaveAsCSV(String fname, String sep="#"); | Speichert das Grid in eine Datei. fname enthält den Pfad und Namen der Datei. Der String sep gibt an, mit welchem Zeichen die einzlenen Werte getrennt werden (Vorgabe ist das Gatter). Jede Zeile wird durch einen Zeilenumbruch gekennzeichnet. Der boolsche Rückgabewert zeigt an, ob die Funktion erfolgreich war. | |
| bool __fastcall LoadFromCSV(String fname, String sep = "#", bool clear=false); | Liest eine gespeicherte Datei wieder ein. Die Vorgabe des korrekten Trenner ist zu beachten (Vorgabe ist das Gatter). Über clear kann bestimmt werden, ob vor dem Laden die Tabelle gelöscht wird. Der boolsche Rückgabewert zeigt an, ob die Funktion erfolgreich war. | |
| bool __fastcall SaveAsHTML(String fname); | Speicher die Tabelle als HTML-Seite mit allen erforderlichen Tags. Jedoche werden keine Tabllen-Attribute gesetzt. | |
| void __fastcall DeleteRow(int ARow, int Anzahl); | Löscht ab der Zeile ARow die
angebene Anzahl von Zeilen. Dabei muß Anzahl mindestens 1 betragen, 0
löscht keine Zeile DeleteRow(3,1) = Löschen der Zeile 3 DeleteRow(3,3) = Löschen der Zeile 3,4,5 |
|
| void __fastcall DeleteCol(int ACol, int Anzahl); | Löscht ab der Zeile ACol die
angebene Anzahl von Spalten. Dabei muß Anzahl mindestens 1 betragen, 0
löscht keine Spalte DeleteCol(3,1) = Löschen der Spalte 3 DeleteCol(3,3) = Löschen der Spalte 3,4,5 |
|
| void __fastcall InsertRow(int ARow, int Anzahl); | Fügt vor der in ARow angegebenen Zeile Anzahl Zeilen ein. Dabei muß Anzahl mindestens 1 betragen, 0 fügt keine Zeile ein | |
| void __fastcall InsertCol(int ACol, int Anzahl); | Fügt vor der in ACol angegebenen Spalte Anzahl Spalten ein. Dabei muß Anzahl mindestens 1 betragen, 0 fügt keine Spalte ein | |
| bool __fastcall SortCol(int ACol, TExt_SortDirection direction, TExt_SortType type, bool sensitive=true); | Das Grid wird nach Spalte ACol sortiert.
Dabei wird in direction folgende Reihenfolge vorgegeben: sortAscending = aufwärts sortDescending = abwärts In type wird die Art der Sortierung festgelegt: sortAsString = nach String sortAsNumber = nummerisch sortAsDate = nach Datum sortAsCustom = Benutzerdefinierte Sortierung Wird "nach Strings" sortiert kann mit sensitive angegeben werden, ob Groß-/Kleinschreibung berücksichtigt werden soll. Der Rückgabewert zeigt an, ob die Sortierung erfolgreich durchgeführt wurde |
|
| bool __fastcall SetCheckBox(int ACol, int ARow, TExt_CBType Type, bool State); | Setzt in der Zelle mit der Spalte ACol
und der Reihe ARow eine CheckBox vom Typ und dem Status State true = checked false = nicht checked Der Rückgabewert zeigt an, ob das setzen der Checkbox erfolgreich war. In festen Zeilen oder Spalten kann keine Checkbox gesetzt werden. |
|
| bool __fastcall GetCheckboxState(int ACol, int ARow); | Gibt den Status einer
Checkbox mit der Spalte ACol und der Reihe ARow zurück: true = checked false = nicht checked |
|
| void __fastcall DeleteCheckBox(int ACol, int ARow); | Löscht die CheckBox ist der Zelle mit der Spalte ACol und der Reihe ARow | |
| void __fastcall TExtendedStringGrid::ColPrefix(int ACol, String value) | Setzt für jede Spalte (ACol) ein Prefix (value) zur Anzeige | |
| void __fastcall TExtendedStringGrid::RowPrefix(int ARow, String value) | Setzt für jede Reihe (ARow) ein Prefix (value) zur Anzeige | |
| Ereignisse | ||
| virtual void __fastcall CustomSort(int& Result, String a, String b); | Benutzerdefinierte Sortierung | |
| virtual void __fastcall FixedRowClick(int ARow, int ACol); | Diese Ereignisse werden ausgelöst, wenn auf eine feste Reihe oder Spalte geklickt wird. Weiterhin wird zusätzlich das Ereignis OnMouseDown weiterhin ebenfalls ausgelöst. Die Parameter geben die Reihe und Spalte an, auf die geklickt wurde. | |
| virtual void __fastcall FixedColClick(int ARow, int ACol); | ||
| virtual void __fastcall CheckBoxClick(int ARow, int ACol); | Wird eine Zelle mit einer CheckBox angeclickt, wird dieses Ereignis ausgelöst. Die Zelle wird übermittelt. | |
Sofern eine Sortierung nach String, nummerisch oder Datum nicht gewünscht ist, können eigene Sortierkirterien vorgegeben werden. Dazu ist dem Aufruf der Sortierung SortCol beim Typ sortAsCustom vorzugeben. Durch die Vorgabe dieses Typs wird beim Sortieren ein Ereignis (OnCustomSort) ausgelöst. Das Ereignis OnCustomSort wird dabei jedes mal dann ausgelöst, wenn zwei Strings der Spalte sortiert werden müssen.Der Routine werden die beiden zu sortierenden Strings übergeben (a und b). Die Routine muß die Entscheidung treffen welcher der beiden Strings zuerst kommt. Dazu ist die dem Ereignis mitübergebende Variable Result zu setzen:
Zum sortieren wird Quicksort genutzt.
Die Einstllung der genutzen Schrift und Farbe erfolgt über ein TFont-Objket.Für das Grid stehen im Objektinspektor 3 TFont-Objekte zur Verfügung:
Desweiteren sind die Methoden
wie der obigen Aufstellung zu entnehmen ist überladen. Es kann ein
Aufruf mit
fntText = Standardfont
fntRows = Font der Zeilen
fntCols =
Font der Spalten
fntFont2 = freier Font
erfolgen, wobei die im
Objektinspektor eingestellten Werte genutzt werden. Oder im Programm selber
kann ein TFont-Objekt erzeugt werden, und dieses übergeben werden.
TFont*myfont=new TFont(); myfont->Color=clGreen; myfont->Name="Steve Regular"; ExtendedStringGrid1->FontCol(2,myfont,false); ExtendedStringGrid1->FontRow(2,myfont,true); ExtendedStringGrid1->FontCell(3,3,myfont);
Die Kommentare in dem Source-File wurden mit dem Kommentator erzeugt
Download |
|
| TExtendedStringGrid | 90 KB |
| Zur Installation unter Datei -> Öffnen die *.bpk Datei öffnen, das Projekt compilieren und installieren oder das Package (BPL-Datei) installieren | |
| 29.05.2005 | Optimierung der Vergrößerung und Verkleinerung von Reihen und Spalten in Zusammenarbeit mit Bodo |
| 11.01.2003 | Sofern eine Spalte sortiert wird, wird die Sortierrichtung durch
ein grafisches Symbol dargestellt. Da jetzt zusäzliche *.res Dateien
erforderlich sind, wird das gesamte Projekt einschließlich BPK-Datei
ausgeliefert. Benutzerdefinierte Sortierung möglich. |
| 12.01.2003 | Die Ereignisse OnFiixedRowClick und OnFixedColClick eingeführt |
| 19.01.2003 | Fontzuweisung per externen Zeiger. Methoden überladen |
| 23.01.2003 | Editieren möglich, Checkboxen eingeführt, Farbe der slektierten Zellen kann gesetzt werden |
| 25.01.2003 | Die Eigenschaften einer Zelle (Ausrichtung, Font, Checkbox) werden beim Sortieren mitsortiert |
| 29.01.2003 | Prefixe für Zeilen und Spalten eingeführt |
| 23.05.2003 | RES-Datei includiert, braucht nicht mehr extra eingebunden zu werden |
| 25.05.2003 | Fehler beim sortieren & beim Ereignis OnRow- OnColClick behoben |
| 09.06.2003 | Fehler bei RowCount beseitigt |