Textarea farbliche selektierung.
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Mathias-KwiatkowskiBetreff: Textarea farbliche selektierung. |
So, Okt 29, 2017 22:42 Antworten mit Zitat |
|
---|---|---|
Ich möchte gern ein editor schreiben, einfach nur so aus langeweile und interesse, es soll das wort Print dick und eben rot gemalt werden, dies funktioniert wunderbar. problem an der sache ist wenn man nun zwischen dem wort Print par buchstaben dazwischen setzt werden sie ebenfalls rot, kla macht sinn es wird bei einer wort trennung nicht die farbe verändert.
so nun zu meiner frage wie kann man es am sinvollsten gestallten, bei einer veränderung des wortes die farbe zurück zu setzen in schwarz. problem ist PrSFDFint muss ja das Pr schwarz gemacht werden das eigentliche und das danach. was ich nich möchte ist mit einer schleife immer wieder durch den gesamten text zu gehen um zu schauen wo Print steht. oder gibts da eine ganz besondere vorgehensweise? Code: [AUSKLAPPEN] SuperStrict
Import maxgui.drivers Type TMain Global Window:Tgadget Global Textarea:Tgadget Function Create() Window = CreateWindow("Editor", 0, 0, 640, 480, Desktop(), WINDOW_TITLEBAR | WINDOW_RESIZABLE | WINDOW_STATUS | WINDOW_CENTER | WINDOW_ACCEPTFILES) Textarea = CreateTextArea(0, 0, ClientWidth(Window), ClientHeight(Window) , Window) SetGadgetLayout(Textarea, 1, 1, 1, 1) End Function Function Do() Create() Local Befehl:String = "Print" CreateTimer 60 Repeat WaitEvent() Local Pos:Int = TextAreaCursor(Textarea) If Pos > 1 Then If TextAreaText(Textarea, Pos - Befehl.Length, Befehl.Length) = "Print" Then FormatTextAreaText(Textarea, 255, 0, 0, TEXTFORMAT_BOLD, Pos - 5, 5) EndIf EndIf Local TmpGadget:Tgadget Select EventID() Case EVENT_GADGETACTION TmpGadget = TGadget(EventSource()) Case EVENT_TIMERTICK Case EVENT_GADGETPAINT Case EVENT_APPTERMINATE, EVENT_WINDOWCLOSE End End Select Forever End Function End Type TMain.Do() |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
Thunder |
Mo, Okt 30, 2017 0:12 Antworten mit Zitat |
|
---|---|---|
Wenn der Text im Editor geändert wird (egal wie, durch Tastatur, öffnen einer anderen Datei ...), dann möchtest du das Highlighting erneuern.
Beim Öffnen einer neuen Datei hast du keine Wahl, als einfach das Highlighting auf den ganzen Text anzuwenden. Wenn du aber genauere Informationen darüber hast, wo sich was geändert hat (Tastendruck, Bearbeiten->Rückgängig, ...), kannst du es zeilenweise aktualisieren. Ich glaube, es weiter herunterzubrechen (wortweise) macht keinen sinn. Du hast sowieso mit zeilenweiser Aktualisierung schon zusätzliche Sonderfälle abzuhandeln. Beispielsweise: BlitzMax: [AUSKLAPPEN] Rem
Wenn ich jetzt noch eine dritte Zeile vor EndRem einfüge, sollte die gleich gefärbt sein wie der Rest des Kommentars, aber wenn der Algorithmus nur die Zeile ansieht, die ich einfüge, kann er das nicht wissen. Ich empfehle den Code nicht, aber der Code von MaxIDE ist öffentlich und in BlitzMax geschrieben. Da gibt es eine 211 Zeilen lange Methode, die dafür zuständig ist, Updates zum Syntaxhighlighting zu machen (SetCode). Diese versucht auch, nicht das ganze File zu aktualisieren, soweit ich das sehe, aber sie ist nicht sehr leserlich geschrieben. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group