String Grid mit zusätzlichen Werten Beschreiben
-
Hallo Leute,
sorry für die ungenaue Angabe im Titel, aber mir es echt nichts besseres eingefallen:
Ich habe mehrere StringGrids welche ich mit Zeiten beschreibe. (also eigentlich Integer-zahlen) Zusätzlich habe ich immer noch " µs" als Einheit hinzugefügt.
Mittlerweile muss ich diese Daten aber wieder weiter verwenden. Natürlich brauche ich dafür nur die Integer-Werte.
Meine Frage ist, ob es für die StringGrids ne Möglichkeit gibt, dass im Feld eigentlich nur der Integer-Wert steht, aber Integer Wert + µs angezeigt wird.
Also so wie es im MS Exel ohne Probs geht?Im Notfall müsste ich halt bei jedem Element die letzten 3 Zeichen löschen, finde aber die Lösung wie im Exel schöner.
Gruß Kiki
PS: Ich programmiere unter Windows mit BCB V5.
-
Hallo
TStringGrid kann nur Strings verwalten. Du kannst entweder die Integer-Werte in einem extra Int-Array der gleichen Dimension zwischenspeichern, oder du nimmst statt TStringGrid TDrawGrid, wo du die Umwandlung von int nach String und damit das Anhängen der Einheit erst im Draw-Event machst.
Eine dritte Möglichkeit ist, die Werte in TStringGrid::Cols::Objects einzutragen.
bis bald
akari
-
Hi
char* Temp = DeinString.c_str(); String Temp2 = ""; int i =0; while (Temp[i] != '[e]mu[/e]') { AppendStr(Temp2,Temp[i]); i++; } int Zahl = StrToInt(Temp2);meinst du sowas???
ich hab nich alles verstanden. Was sind StringGrids?? bin davon ausgegangen, das es Strings sindcorvin
[EDIT] das μ durch ein leerzeichen ersetzen, wenn der erste buchstab ein ' ' ist
-
Ich habe die Integer-Werte beim eintragen immer mit StrToInt(9 in Strings umgewandelt und zusätzlich die Zeichen " µs" angehängt.
... int a=1000; StringGrid1->Cells[1][0]=StrToInt(a)+" µs"; ...Mit TDrawGrid habe ich zwar noch nicht gearbeitet, aber ich glaube nicht, dass es funktioniert, da ich die Werte gleich in das StringGrid schreiben muss und erst zu einem späteren Zeitpunkt weiterverwenden will.
Die dritte Möglichkeit: TStringGrid::Cols::Objects sagt mir gerade auch nichts. Werde mich gleich mal schlau machen!
-
@Cornvin: StringGrids sind Tabellen, also quasi wie im Exel! Und ich will eigentlich die Werte nicht bearbeiten, sondern nur ein StrToInt() machen müssen. Sonst könnte ich auch einfach ...
int wert=0; wert=StrToInt(StringGrid1->Cells[1][0].Substring(1,StringGrid1->Cells[1][0].Length()-2));...machen.
Aber ehrlich gesagt finde ich des ziemlich unschön.
-
Hi
habs eilig1.schaue nach der länge
2. (länge -2) zeichen in das erste Feld schreiben
3. rest in 2. Feld
corvin
-
Hallo
Mit TDrawGrid habe ich zwar noch nicht gearbeitet, aber ich glaube nicht, dass es funktioniert, da ich die Werte gleich in das StringGrid schreiben muss und erst zu einem späteren Zeitpunkt weiterverwenden will.
Das kannst du auch. Denn meine Idee wäre, erstmal von TDrawGrid ableiten und diesem ein internes int-Array sowie passende Zugriffsfunktionen darauf einbauen. Genauso wie TStringGrid::Cells[x][y] ja den Zugriff auf ein internes AnsiString-Array ermöglicht.
Dann must du nur noch im OnDraw...-Event die Integers in passende Strings umwandeln und anzeigen.
Das hat den Vorteil das du nach außen hin nicht umwandeln must.bis bald
akari
-
kiki_666 schrieb:
Ich habe die Integer-Werte beim eintragen immer mit StrToInt(9 in Strings umgewandelt und zusätzlich die Zeichen " µs" angehängt.
... int a=1000; StringGrid1->Cells[1][0]=StrToInt(a)+" µs"; ......
wieso machst du StrToInt um in das StringGrid zu schreiben? schließlich willst du ja nicht einen String in einen Integer umwandeln, sondern einen Integer in einen String -> IntToStr ist hier wohl sinnvoller
StrToInt / StrToIntDef brauchst du um die Daten wieder aus dem StringGrid zu bekommen, natürlich nur wenn da nur Zahlen stehen
-
Oh, klar, hab ich falsh herum geschrieben, hab natürlich schon ein IntToStr() gemacht. Habe mein Problem mitlerweile gelöst. Zwar nicht so wie ich es mir erhofft habe, aber ich werde es überleben!
