String formatieren
-
Hallo,
bei einer Windows-Forms Anwendung (in C++ geschrieben) möchte ich in allen Zellen einer Spalte eines DataGridViews einen String ausgeben. Damit diese Strings, trotz unterschiedlichen Inhalts, schön bündig zueinander sind, möchte ich sie entsprechend formatiert ausgeben. Ein String setzt sich hierbei aus mehreren Dezimalzahlen zusammen, die per Leerzeichen voneinander getrennt sind. Das problematische dabei ist die unterschiedliche Stellenanzahl der einzelnen Dezimalzahlen. Die erste Dezimalzahl jedes Strings soll bündig zu der ersten Dezimalzahl der weiteren Strings sein, ebenso die zweite und die folgenden Dezimalzahlen.
Zahl1 Zahl2 Zahl3 (1.String)
Zahl1 Zahl2 Zahl3 (2.String)
Zahl1 Zahl2 Zahl3 (3.String)Gibt es hierfür eine Möglichkeit die einzelnen Strings dementsprechend zu formatieren oder ist eine andere Vorgehensweise ratsam/notwendig?
Vorab Danke für Eure Mithilfe...
-
Wenn ich in jede Spalte einen Text einsetze, ist dieser durch die Spalten des Grids doch von alleine Bündig ^^
| Text1 | Text22344 | Text3 | Text4 | Text5 | Text6
-
Ja, das ist klar. Der Gesamttext der einzelnen Zellen ist in der Spalte bündig.
Aber jeder Text setzt sich aus einzelnen Zahlen zusammen. Und genau diese Zahlen sollen ebenso bündig zueinander sein.| 123 22 1 | | 110 122 110 | | 22 67 67 |
-
Ahso...
Hast Du Dir mal das umfangreiche Thema zur Format Funktion von String angeschaut ? (Hab es noch nicht benötigt und war zu viel um es mal nebenbei zu lesen)
-
Komplett durchgelesen habe ich mir das auch nicht... nur die für mich interessanten Stichpunkte...
Habe jetzt eine halbwegs zufriedenstellende Lösung gefunden. Bevor ich die einzelnen Zahlen in einen String zusammenfasse, werden sie einzeln in einen String umgewandelt und dieser mit "PadLeft" auf die gewünschte Länge mit Leerzeichen aufgefüllt.
while(iByteIndex < iAnzahlFelder){ //Einzelne Datenbytes zu einem String zusammenfügen sHelp = aoDataPacket[iByteIndex]->ToString()->PadLeft(3); //Alle Strings habe die Länge 3 /* ... */ sDaten += sHelp + " "; iByteIndex++; }
Nun ist es noch wichtig, dass als Schriftart für diese Spalte "Courier New" verwendet wird, da bei ihr die einzelnen Zeichen die gleiche Laufweite haben. Dadurch ist die gewünschte Formatierung erreicht.
Wenn jemand eine andere Lösung hat, bitte unbedingt melden, denn gänzlich zufrieden bin ich mit dem Ansatz nicht.