Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Kolorowanie składni w Richtextbox
Usercontrol
mr. Tom



Typ: neutral
Postów: 191
Zarejestrowany: Oct 2003
Kolorowanie składni w Richtextbox

Piszę edytror HTML, i chcę, żeby skłądnia była kolorowana na niebiesko.
Mam taki problem. Procedura kolorująca składnię działa, wszystko jest ok, z jednym 'ale'. Procedura koloruje składnię w całym richtextboxie, a ja chcę tylko w jednej linijce, w tej w której user właśnie pisze. Chcę procedurę wsadzić do zdarzenia CHANGE, więc przy dłuższych tekstach, byłaby dolina. Dlatego chcę, żeby prog kolorował składnię tylko w bierzącej linijce. Jak to zrobić?

20-06-2004 13:23
Pokaż profil Usercontrol  Wyślij email do Usercontrol   Odwiedź stronę Usercontrol       1518548
deywid



Typ: neutral
Postów: 66
Zarejestrowany: Jan 2004

no widze ze nikt ci nie moze pomoc
ja sam tez nie wiem za bardzo jak...
jedynie cos takiego...
ze piszac aktywna linijka jest wyrozniona na czerwona... ale trzeba przechodzic do nastepnej enterem..
wiec bardzo ubogie dzialanie..
moge kogos naprowadzi i cos ci pomoze..

========
Public g
Public z
Private Sub Form_Load()
RichTextBox1.SelColor = vbRed
End Sub
Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
Static g As Integer

If KeyAscii = 13 Then
z = RichTextBox1.SelStart
gdzie = RichTextBox1.SelStart - g
RichTextBox1.SelStart = gdzie
RichTextBox1.SelLength = g
RichTextBox1.SelColor = vbBlack
RichTextBox1.SelStart = z
g = 0
RichTextBox1.SelColor = vbRed
Else
If KeyAscii <> 8 Then g = g + 1
If KeyAscii = 8 And g > 0 Then
g = g - 1
End If
End If
End Sub
====

22-06-2004 20:00
Pokaż profil deywid  Wyślij email do deywid        5625009
Usercontrol
mr. Tom



Typ: neutral
Postów: 191
Zarejestrowany: Oct 2003

Hmm...Ten przykład raczej nie pomoże, ale wielkie dzięki za odpowiedź.

23-06-2004 14:23
Pokaż profil Usercontrol  Wyślij email do Usercontrol   Odwiedź stronę Usercontrol       1518548
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Jedyna rzecz, jaka przychodzi mi do głowy wygląda tak:
1. Pobieramy kolejne znaki w lewo od SelStart, aż napotkamy Lf i zapamiętujemy sobie w zmiennej pozycję o jeden większą od pozycji Lf.
2. Analogicznie ze znakami w prawo, z tym, że musimy napotkać albo Cr, albo koniec tekstu i też zapamiętujemy, gdzie się znajduje.
Teraz mamy początek i koniec linii.

Jeśli jest to tylko edytor HTML to mozna też trochę oszukać . Np. kolorować wszystko od SelStart-50 do SelStart+50.

Jeśli procedura kolorująca po prostu wyszukuje tekst związany z HTML (tagi, właściwości, elementy składni), to mozna to zrobić jeszcze inaczej. Analizowac tylko to, co znajduje się między SelStart-15, a SelStart. Dlaczego? A widziałeś kiedyś znacznik lub właściwość dłuższą niż 15 znaków?


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

23-06-2004 14:54
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002

Jedna sugestia:

<coś tam> lub </coś tam>
tak wygląda jakiś TAG, którego musisz pokolorować. Czyli kolorujesz coś co jest między < a >

podobnie z cudzysłowiami "xxxx" kolorujesz od " do " (tu musisz uważać, bo możesz pokolorować nie to co jest w cudzysłowiu, ale co jest pomiędzy końcem pierwszego a początkiem drugiego, więc musisz dać jakiś dodatkowy warunek np. < .... " to jest cudzysłów otwierający a " ... >  to jest cudzysłów zamykający. Może trochę zamotałem, ale chciałem jak najprościej zasugerować ogólny algorytm programu. Niestety, ale nie mam nic pod ręką :-(


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

24-06-2004 18:39
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Gdy Jelcyn napisał o tych nawiasach i cudzysłowach, zauwazyłem jeszcze jeden problem. Linia kodu HTML (w sensie kompletnego taga od < do > nie musi się pokrywać z rzeczywistymi liniami.

Np. coś takiego

<HTML>
<BODY>
  <a href="http://www.vb4all.
canpol.pl"
target="_top"
>Link do vb4all
  </a>
</BODY>
</HEAD>


Mamy jeden znacznik, który został rozbity na 5 linii. Nawet, jesliby nie liczyć zamykajacego </a>, to nadal mamy rozbicie jednego, na 4. Nie sądzę, by ktoś tak rozbijał znacznik "a", ale jeśli zrobi tak z innym - program mozę mieć problem. Na dodatek mamy rozbitą wartość w cudzysłowiu. Wiem, zę szukam dziury w całym , ale tak też się może zdarzyć i należy to przewidzieć.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

24-06-2004 20:13
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002

niestety, ale frontpage rozbija znaczniki :-(


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

24-06-2004 21:16
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
Wszystkich odpowiedzi: 6 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1