Obiekt RichtextBox : dodawanie tekstu + kolorowanie tekstu.

0

Hai.
Mam taki problem. zrobiłem sobie menu kontekstowe, i mam tam przycisk "Alias"
chciałem żeby on dodawał do Obiektu 'RichTextBox", o etykiecie "PoleTekstowe" dany tekst, mianowicie taki:

;alias "x" ";"

więc dałem taki kod:

private: System::Void aliasToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 
		 {
			 PoleTekstowe->Text += "\n;alias \"x \" \" ;\" ";
			 PoleTekstowe->Modified = true;
		 }

niestety po naciśnięciu tego przycisku dodaje mi ten tekst, lecz jest On dodawany na końcu PolaTekstowego, a ja bym chciał żeby się dodawał tam gdzie jest kursor.
Chodzi mi o to, żeby po naciśnięciu tego, tak jakby został wklejony tekst, w miejscu kursora, np. w środku tekstu.
Czy zna ktoś inny sposób, który rozwiązałby ten problem?

A i jeszcze jedno chciałbym żeby np. na kolor zielony mi zaznaczało wszystkie słowa alias, jak to zrobić?

0

PoleTekstowe->SelectedText = "\n;alias "x " " ;" ";

0

adf88 dziękuje bardzo. :)

A i jeszcze jedno chciałbym żeby np. na kolor zielony mi zaznaczało wszystkie słowa alias, jak to zrobić?

A to ktoś wie?

A jak bym np. chcial wkleić w dane miejsce? np. po słowie "Nigga"??
Wytłumaczył by ktoś?

0

Wszystkie twoje pytania dotyczą zaznaczenia - Selection. Odpowiednio nim manipuluj aby wstawiać tekst w wybrane miejsce czy formatować wybrany fragment.

Żeby pokolorować jakieś słowo to musisz:
1 wyszukać je (String.IndexOf)
2 zaznaczyć (RitchTextBox.Select)
3 pokolorować zaznaczenie (RichTextBox.SelectionBackColor)

Żeby wstawić coś za jakimś słowem musisz wyszukać je, umieścić zaznaczenie za nim (zaznaczenie o zerowej długości) i wstawić tekst za pomocą SelectedText.

Przeglądnij wszystkie pola klasy RichTextBox które zaczynają się od "Select..." !

0
adf88 napisał(a)

Wszystkie twoje pytania dotyczą zaznaczenia - Selection. Odpowiednio nim manipuluj aby wstawiać tekst w wybrane miejsce czy formatować wybrany fragment.

Żeby pokolorować jakieś słowo to musisz:
1 wyszukać je (String.IndexOf)
2 zaznaczyć (RitchTextBox.Select)
3 pokolorować zaznaczenie (RichTextBox.SelectionBackColor)

Żeby wstawić coś za jakimś słowem musisz wyszukać je, umieścić zaznaczenie za nim (zaznaczenie o zerowej długości) i wstawić tekst za pomocą SelectedText.

Przeglądnij wszystkie pola klasy RichTextBox które zaczynają się od "Select..." !

1 wyszukać je (String.IndexOf)

Niestety tego słowa, a raczej funkcji nie mogłem znaleźć, więc zastąpiłem ją find, może mógłbyś to wytłumaczyć?

Dałem coś takiego:

				 PoleTekstowe->Select(PoleTekstowe->Find("Config"),6);
				 PoleTekstowe->SelectionBackColor(Color::BlueViolet);

Tekst mi zaznacza, ale przy drugiej lini wyskakuje mi błąd, starałem się go rozwiązać, ale nie mogę. :<

Błąd:

1>c:\documents and settings\koldy~\moje dokumenty\visual studio 2008\projects\csce\counter-strike config editor\Form1.h(868) : error C2064: term does not evaluate to a function taking 1 arguments

Jakieś rady?

0
.KoLdY napisał(a)

Jakieś rady?
http://msdn.microsoft.com -> Search -> "RichTexBox.SelectionBackColor"

0
adf88 napisał(a)
.KoLdY napisał(a)

Jakieś rady?
http://msdn.microsoft.com -> Search -> "RichTexBox.SelectionBackColor"

Zanim napisałem przeszukałem.
http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectionbackcolor(VS.80).aspx
Ale dalej nie wiem, value jest dobrze podane, a wyskakuje błąd, nie mam pojęcia dlaczego.

0

adf88, dziękuje Ci bardzo to wyjaśniło mi wszystko wiem już jaki błąd popełniłem.
Ale jednak teraz chciałbym się jeszcze spytać coś, ponieważ koloruje mi, ale nie tak jak bym chciał.

np.

int zmienna

właśnie coś takiego chce osiągnąć, że słowo int jest niebieskie po napisaniu go, a zmienna jest normalna, ale nie wiem jak zrobić by zaznaczyło mi wszystkie słowa np. 'int' poparzez wyszukiwanie find, nie można tego zrobić ponieważ zaznacza mi jedno, oraz zostaje zaznaczenie, wiem, że można zrobić:

PoleTekstowe->DeselectAll();

Ale może jest jakaś prostsza metoda, która by to zrobiła?

0

W pętelce wyszukuj kolejne słowa, aż pokolorujesz wszystkie. Nie musisz odznaczać, wystarczy że za każdym razem zaznaczysz znalezione słowo metodą Select. Do szukania użyj bardziej rozbudowanego RichTextBox.Find.
Ta metoda pozwala sprecyzować od którego znaku zacząć wyszukiwanie (zaczynaj za ostatnio znalezionym słowem). Metoda również dostarcza kilku przydatnych opcji, tobie może przydać się RichTextBoxFinds.MatchCase i RichTextBoxFinds.WholeWord.

1 użytkowników online, w tym zalogowanych: 0, gości: 1