![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, возникла новая проблема с изменение цвета определённого слова.
Где-то нашёл код, как изменить цвет в ричедите определённого слова. Но мне надо это всё в комбобокс занести, т.е. Человек выбирает в комбобоксе: Ничего либо Красный, либо синий и т.д. Так же этих комбобоксов несколько, один выделяет то слово, другой другое. Дак вот можно ли этот код адаптировать под несколько комбобосксов? Или надо использовать другой, я вот попытался, сделать пока с 2 комбобоксами, но при компиляции сразу же выдаёт ошибку, что-то типа программа обратилась к неправильному адрессу. И указывает на строку: if form8.ComboBox1.ItemIndex <> 0 then begin И не запускает программу. Вот весь код, который я пока сделал на 2 комбобокса, для проверки.. Код:
procedure TForm1.scriptChange(Sender: TObject); const combo1: array[1..3] of string[9] = ('switch','select','case'); combo2: array[1..3] of string[9] = ('getitem','delitem','countitem'); combo3: array[1..1] of string[9] = ('zeny'); combo4: array[1..3] of string[9] = ('mes','next','close'); combo5: array[1..3] of string[9] = ('if','else','end'); combo6: array[1..1] of string[9] = ('""'); var k,i: integer; begin if form8.ComboBox1.ItemIndex <> 0 then begin for i:=1 to length(combo1) do begin k:=-length(combo1[i]); repeat k:=script.FindText(combo1[i],k+length(combo1[i]), length(script.Text)-k-length(combo1[i]),[stWholeWord]); script.SelStart:=k; script.SelLength:=length(combo1[i]); if form8.ComboBox1.ItemIndex = 1 then script.SelAttributes.Color:=clRed; if form8.ComboBox1.ItemIndex = 2 then script.SelAttributes.Color:=clBlue; if form8.ComboBox1.ItemIndex = 3 then script.SelAttributes.Color:=clGreen; if form8.ComboBox1.ItemIndex = 3 then script.SelAttributes.Color:=clYellow; until k < 0; script.SelAttributes.Color:=clBlack; end; end; if form8.ComboBox2.ItemIndex <> 0 then begin for i:=1 to length(combo2) do begin k:=-length(combo2[i]); repeat k:=script.FindText(combo2[i],k+length(combo2[i]), length(script.Text)-k-length(combo2[i]),[stWholeWord]); script.SelStart:=k; script.SelLength:=length(combo2[i]); if form8.ComboBox2.ItemIndex = 1 then script.SelAttributes.Color:=clRed; if form8.ComboBox2.ItemIndex = 2 then script.SelAttributes.Color:=clBlue; if form8.ComboBox2.ItemIndex = 3 then script.SelAttributes.Color:=clGreen; if form8.ComboBox2.ItemIndex = 3 then script.SelAttributes.Color:=clYellow; until k < 0; script.SelAttributes.Color:=clBlack; end; end; end; |