Ano, máš pravdu, je to způsob jakým se snažím vytvořit ten colorizer. Zatím jsem si navrhl i komponentu, kterou vykresluji sám, ale přišlo mi zajímavé, jak snadno se dá obarvovat RTB, tak jsem si řekl, že by nemuselo být marné zkusit to i tak. Na netu jsem kdysi našel třídu, jež si brala v konstruktoru jako parametr RTB a pak jej taky obarvovala, ale nedědila z něj. Fungoalo to perfektně, ale bylo založeno na WIN API a já se teď snažím napsat stejnou třídu s tím, že bude z RTB dědit. Zatím to celkem jde, takže si nemyslím, že bych to měl uzavírat. Ty vlastnosti navíc mi tam vcelku nevadí, šlo mi jen o to, že je nepoužívám ani u RTB, takže mi přišli zbytečné u CodeBoxu (jak jsem svou komponentu pojmenoval). A ještě, ať nezakládám zbytečně nové vlákno, bych měl dotaz k RegExům:
For Each Word As String In Me.Keywords
For Each match As Match In Regex.Matches(Me.Text, "(?<=[\s|(|)|.])" & Word.ToLower & "(?=[\s|(|)|.])\b", RegexOptions.IgnoreCase)
Me.SelectionStart = match.Index
Me.SelectionLength = match.Length
Me.SelectionColor = Me.ForeKeywordColor
Next
Next
Kde KeyWords je pole řetězců reprezentující klíčová slova jazyka (hodlám to rozšířit na několik sad slov, přičemž každá by měla jinou barvu, což je v některých jazycích třeba). Tento RV mi sice označí všechna klíčová slova, ale nikdy neoznačí slovo, které je na úplném začátku textu. Nevíte proč?
|