Frage: ist es möglich 2 farben in einem Text zu nutzen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Frage: ist es möglich 2 farben in einem Text zu nutzen

Beitrag von udg »

Ich habe ein EditorGadget welches mit Blauer Schrift versehen ist.

Im Text, der editiert wird, sind Variabeln die ausgefüllt werden über StringGadgets, und nach klick auf meine CheckBox, werden die Daten in das EditorGadget übernommen.

Der Übersicht wegen, wäre es schön, wenn die unausgefüllten Variabeln im Blauen Text "rot" wären und wenn sie per Klick eingefügt wurden, der eingefügte Text "grün" wird.

Hier deklariere ich die blaue Schrift:

Code: Alles auswählen

        AddGadgetItem(#Panel_1, -1, "blub")
          EditorGadget(#Panel_Neu, -1, -1, 661, 700,#PB_Editor_WordWrap)
            SetWindowTheme_(GadgetID(#Panel_Neu), @"", @"") ; entferne Rahmen
            SetWindowLongPtr_(GadgetID(#Panel_Neu), #GWL_EXSTYLE, 0) ; entferne Rahmen
            SetWindowPos_(GadgetID(#Panel_Neu), 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_FRAMECHANGED) ; entferne Rahmen

            SetGadgetFont(#Panel_Neu, LoadFont(#Font_Panel_Neu, "MS Mincho", 10, #PB_Font_HighQuality)) ; Textfeld Font
            SetGadgetColor(#Panel_Neu, #PB_Gadget_BackColor, $151312)
            SetGadgetColor(#Panel_Neu, #PB_Gadget_FrontColor, $AE874B) ; blaue Schrift
Meine Variabeln im Text sind folgendermaßen benannt: {VAR1},{VAR2},{VAR3}

diese möchte ich im unausgefüllten Zustand "rot" und wenn per Klick auf meine Checkbox, der eingefügte Text "grün" dargestellt sein. Damit man sehen kann ,dass nichts vergessen wurde.

Auszug aus meiner Frage die sich auf das Ersetzen von Text bezog:

Ich habe ein StringGadget (#Name), welches Text enthält der da lautet: Name eingeben
In ein EditorGadget (#Panel) lade ich bei Programmstart eine Textdatei hinein, die es im EditorGadget nun anzeigt, welche durchnummerierte Variabeln enthält.
Alle Variabeln die in der geöffneten Textdatei im EditorGadget folgendermaßen deklariert sind: {VAR1}, an einer anderen Stelle {VAR2} usw. sollen überprüft und der Farbton ersetzt von "rot" zu "grün" werden.

Beispiel Textdatei:

Hallo {VAR1} und willkommen zum {VAR2}. Heute haben
wir inzwischen den {VAR3} und es wird Zeit, dass Du deine
{VAR4} wechselst.


Im Code meines kleinen Programms deklariere ich die Eingabefelder wie Folgt:

Eingabetext1$= GetGadgetText(#Name) ; Eingabe auslesen
Eingabetext2$= GetGadgetText(#Datum) ; Eingabe auslesen


Nun möchte ich per Klick auf meine CheckBox die Variabeln im EditorGadget durch: "rot" zu "grün". ersetzen.
GEÄNDERT

Code: Alles auswählen

...
Case #CheckBox_1
         If EventGadget()= #CheckBox_1

           Eingabetext1$= GetGadgetText(#Name)  ; Eingabe auslesen
           Editorneuetext$ = GetGadgetText(#Panel_1)
           Editorneuetext$ = ReplaceString(Editorneuetext$, "{VAR1}", Eingabetext1$, #PB_String_NoCase); #Panel_1=(EditorGadget) =  Ziel wo {VAR1}  rot durch grün ersetzt werden soll
           Eingabetext2$= GetGadgetText(#Datum)                                                         ; Eingabe auslesen
           Editorneuetext$ = ReplaceString(Editorneuetext$, "{VAR2}", Eingabetext2$, #PB_String_NoCase); #Panel_1=(EditorGadget) =  Ziel wo {VAR2} rot durch grün ersetzt werden soll
           SetGadgetText(#Panel_1, Editorneuetext$)
        EndIf
...


Vielen Dank für Unterstützung
Zuletzt geändert von udg am 15.06.2015 20:35, insgesamt 2-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Frage: ist es möglich 2 farben in einem Text zu nutzen

Beitrag von HeX0R »

Wo ist die Kamera?

Du kannst doch nicht allen ernstes wieder deinen falschen Code hier reinsetzen, den Dir Demivec bereits hier verbessert hatte?

Um dennoch Deine Frage zu beantworten:
Bunter Text im Editorgadget ist nur mit Hilfe von API möglich.
Es gibt auch entsprechende Codes (irgendwo in den Foren).
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: Frage: ist es möglich 2 farben in einem Text zu nutzen

Beitrag von udg »

Ja danke, stimmt, den habe ich schon korrigiert. Danke.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Frage: ist es möglich 2 farben in einem Text zu nutzen

Beitrag von HeX0R »

Kannst Du nicht mal ein lauffähiges zusammengekürztes Beispiel posten, damit man sieht, was Du eigentlich vorhast?

Evtl. verrennst Du Dich da in eine Idee, die man viel eleganter lösen könnte.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: Frage: ist es möglich 2 farben in einem Text zu nutzen

Beitrag von udg »

Das Tool ist soweit fertig. Das mit der Schrift war nur noch eine Idee Zwecks der Übersicht.
Das "rtf Text zu EditorGadget" Beispiel mit versch. Farben habe ich mir schon mal angeschaut. Evtl funktioniert das, muss vordefinierte Codepage aber beibehalten, um ANSI Bilder anzeigen zu können.

Ich kürze den Code mal ein, damit der Code geladen werden kann.

Es handelt sich um einen "NFO Ansi Viewer" und "Editor". Man kann NFOs einfügen und bearbeiten. Eigene *.txt Datei wird automatisch beim Start ins Panel geladen die mit besagten {VAR1} ect. deklariert sind, die dann im Editor durch eigene Eingabe geändert werden können.
Da NFOs mehr oder weniger Szene sind, muss ich das Tool erst anpassen.

Güße
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten