Labels zweifarbig?
-
kann ich in einen label z.B. Test1234 Test in Rot und 1234 in grün schreiben?
danke
-
Nein, nicht im Standardlabel. Sieh dich mal bei www.torry.net o.ä. nach einer entsprechend erweiterten Komponente um oder benutz halt zwei Labels.
-
In diesem Fall könntest Du 2 Labels direkt nebeneinander plazieren, ins eine schreibst Du "Test" rechtbündig und ins zweite "12345" linksbündig. Den Font Color der beiden Labels stellst Du natürlich entsprechend ein.
Oder Du nimmst z.B. ein Panel anstatt eines Labels und malst da mit TextOut direkt auf den Canvas. Dann kannste glaube ich den FontColor genau steuern. Hab ich aber nicht getestet, ist mir nur so gerade eingefallen
-
Kann man das ganze eigentlich auch über ein RichEdit?
Das beispielsweise Zeile1 und Zeile2 jeweils den Hintergrund rot haben und Zeile3 und Zeile4 blau?Das würde ja dann so ähnlich wie hier im Forum aussehen(Helgrau-Grau)-Zwischen den einzelnen Antworten.
-
Hallo
@Andist
Kann man das ganze eigentlich auch über ein RichEdit?das soll Deutsch sein?
Sorry wenn ich dich da anmaule, aber das ist genau das was ich an NEUDEUTSCH hassebesser waere doch
Kann man das ganze eigentlich auch über ein RichEdit machen oder..?Wie gesagt, nicht persoenlich nehmen (aber wenn ich sowas sehe muss ich losschreien
-
Leider kommen das bißßchen verspättet:
Ich hab hier gerade was geschrieben, um so was ähnliches wie ein zweifarbiges Label zu erhalten. Man merkt es praktisch nicht.
Ich habe noch nie eine Komponente erstellt. Deshalb kann ich den Quelltext leider nicht als Komponente frei geben.
Aber funktioniert trotzdem://Benutzereinstellungen: int Links = 0; //<-- Left angeben; int Oben = 0; //<-- Top angeben; String Aufschrift = "HelloWorld! This is my new Label!"; //<--Caption angeben const int anzFarben = 4; //<-- Anzahl der Farben angeben const TColor Farbe[anzFarben] = {clRed, clBlue, clGreen,clYellow}; //<--Farben angeben //Ende der Benutzereinstellungen const int x = 1000; TLabel *Label[x]; int ZeichenProLabel = 0; int ZeichenPosition = 0; int LabelNr = 0; int Hoehe = 0; int Breite = 0; int Feld = 0; int ZeichenPos = 0; int TextRest = Aufschrift.Length()%anzFarben; String TextGesamt = Aufschrift; ZeichenProLabel = Aufschrift.Length()/anzFarben; for(ZeichenPosition=1; ZeichenPosition < Aufschrift.Length()+1; ZeichenPosition++) { LabelNr++; Label[LabelNr] = new TLabel(this); Label[LabelNr]->Parent = this; Label[LabelNr]->Caption = Aufschrift.SubString(ZeichenPos+1,ZeichenProLabel); ZeichenPos = ZeichenPos+ZeichenProLabel; Label[LabelNr]->AutoSize = true; Label[LabelNr]->Transparent = false; Label[LabelNr]->Top = Oben+Hoehe; Oben = Label[LabelNr]->Top; Label[LabelNr]->AutoSize = true; Label[LabelNr]->Left = Links+Breite; Breite = Label[LabelNr]->Width; Links = Label[LabelNr]->Left; Label[LabelNr]->Color = Farbe[Feld++]; if (Feld >=anzFarben) goto ende; } ende: Label[LabelNr]->Caption = Label[LabelNr]->Caption + Aufschrift.SubString(ZeichenPos+1,TextRest);
1. Den kompletten Quelltext einfach in ein Ereignis hineinkopieren (Beispiel: Button1Click)
2. Die Variablen Links und Oben sind die Koordinaten (Left, Top);
3. Aufschrift ist der Text, der in dem "Mehrfarbigen" Label angezeigt werden soll.
4. anzFarben ist die Anzahl der "Farben" die das Label erhalten soll;
Vorsicht: Darf nicht kleiner als die Anzahl der Farben sein, die unter "Farben" angegeben werden:
5. Bei Farbe die Farben angeben, die das Label erhalten soll.6. Fertig! Compilieren!
So kann also das Mehrfarbige Label zwischen //Benutzereinstellungen und //Ende Ben... eingestellt werden. Der ganz Quelltext dannach setzt die Sachen einfach nur in die Tat um.
Was haltet ihr davon?
-
Original erstellt von Andist:
Was haltet ihr davon?das möchtest du nicht wissen...
spätestens beim
goto
sollte jeder den Finger hochhalten..
Ansonsten gibt es für derartige Probleme Komponeten. Du bist mit einen ganz falschen Ansatz rangegangen.
Original erstellt von Andist:
Ich habe noch nie eine Komponente erstellt. Deshalb kann ich...dann wird es Zeit sich damit zu beschäftigen. Siehe Signatur..
-
Naja wenns funktioniert
Was ist am goto so schlecht?Danke für den Tip! Werde mir mal das Tutorial runterladen. Mal sehen - Vielleicht setz ich das ganze in eine Kompo um.
-
Original erstellt von Andist:
**Naja wenns funktioniert
**hehe, so kann mans natürlich auch sehen...
Original erstellt von Andist:
**Was ist am goto so schlecht?
**goto macht ein Programm unübersichtlich und schlecht lesbar. nicht nur deshalb ist goto Allgemein in C++ ungern gesehen.
Mehr dazu kannst du im C++- Forum erfragen.
übrigens. Wenn man für ein Objekt Arbeitsspeicher reserviert:
Label[LabelNr] = new TLabel(this);
muss man ihn auch wieder freigeben.
wenn jemand tatsächlich auf die Idee kommt, dein Quelltext in ein Ereignis zu kopieren, wird bei jeden Buttonklick für 1000 Labels Speicherplatz reserviert. Aber niemals freigegeben. FATAL !
[ Dieser Beitrag wurde am 11.05.2003 um 18:22 Uhr von AndreasW editiert. ]