Label mehrzeilig???
-
Hi, hab folgendes problem. ich erstelle ein Label zur laufzeit, die caption ließ ich aus einer sqlite db.
int __fastcall TForm7::LoadGruppe(int x) { Index_Gruppe = 1; sql = "SELECT ID, Name, Farbe, Schrift, SchriftFarbe, PosL, PosT, PosW, PosH FROM Gruppe"; if(SQLITE_OK != sqlite3_exec(db, sql, CallbackGruppe, NULL, &dberr)) { free(dberr); } } int CallbackGruppe( void *Pointer, int argc, char **argv, char **columnNames) { int ID=atoi(argv[0]); TForm7* Form = reinterpret_cast<TForm7*>(Pointer); TLabel*GruppeBon[iMaxGruppe]; GruppeBon[ID] = new TLabel(Form7); GruppeBon[ID]->Parent = Form7; GruppeBon[ID]->Name = "GruppeBon" + IntToStr(ID); GruppeBon[ID]->Color = RGB(iFarbe[atoi(argv[2])][0],iFarbe[atoi(argv[2])][1],iFarbe[atoi(argv[2])][2]); GruppeBon[ID]->Font->Color = RGB(iFarbe[atoi(argv[4])][0],iFarbe[atoi(argv[4])][1],iFarbe[atoi(argv[4])][2]); GruppeBon[ID]->AutoSize = false; GruppeBon[ID]->Left = atoi(argv[5]); GruppeBon[ID]->Top = atoi(argv[6]); GruppeBon[ID]->Width = atoi(argv[7]); GruppeBon[ID]->Height = atoi(argv[8]); GruppeBon[ID]->OnMouseDown = Form7->GruppeOnMouseDown; GruppeBon[ID]->OnMouseUp = Form7->GruppeOnMouseUp; GruppeBon[ID]->Font->Size = atoi(argv[3]); GruppeBon[ID]->WordWrap = true; GruppeBon[ID]->Layout = tlCenter; GruppeBon[ID]->Alignment = taCenter; GruppeBon[ID]->Caption = argv[1]; return 0; }
im argv[1] steht "Zeile1\nZeile2".
er macht mir aber keinen zeilenumbruch.
wenn ich ich ein label im design modus erstelle und dann
Label1->Caption = "Zeile1\nZeile2";
schreibe funktioniert das.muß ich argv[1] in irgend eine anderes string format umwandeln???
vielen lieben dank...
-
Escape-Sequenzen (wie z.B. '\n') funktionieren nur im Code direkt, da der Compiler die Umsetzung vornimmt.
Wenn du die Daten extern einliest, so mußt du die String-Ersetzung selber vornehmen, d.h. "\\n" ersetzen durch '\n', z.B. mittels der std::string-Methoden find() und replace().
-
danke funktioniert super. allerdings muß ich mit "\\\n" ersetzen, damit er einen zeilenumbruch macht. und dann hab ich
Zeile1\
Zeile2stehen.
aber kein problem, mit replace bekomme ich das "\" auch wieder weg. :-))
keine schöne lösung, aber es funktioniert, danke.