Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Смена цвета слова в Memo 
:(
    Опции темы
mr.Anderson
Дата 5.9.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Задача. Юзверь вводит в Memo энный текст. Надо разыскать в этом тексте слово "Variable" и перекрасить его в синий цвет + сделать его жирным шрифтом. Подскажите, как это можно реализовать? Только плиз попроще, попонятней, если можно...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Snowy
Дата 5.9.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



В мемо нельзя.
Используй RichEdit.
Или SysUniHighliter
PM MAIL   Вверх
mr.Anderson
Дата 5.9.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



А там как менять? Приведите плиз пример. На моей задаче.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
FRAGNATIC
Дата 5.9.2005, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



sim7
я так понимаю те подсветку синтаксиса надо! то это по любому лучше юзай SynEdit + SysUniHighliter
потому что с ричэдитом оч много гемороя будет и будет это всё оч голимо работать)
PM MAIL   Вверх
Snowy
Дата 5.9.2005, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(sim7 @ 5.9.2005, 20:39)
А там как менять? Приведите плиз пример. На моей задаче.

Примеров с ричедитом здесь полно. Просто набери в поиске RichEdit.
Ну и загляни, конечно, в раздел по SysUniHighliter'у.
PM MAIL   Вверх
~FoX~
Дата 6.9.2005, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



sim7
C:\Program Files\Borland\Delphi7\Demos\RichEdit\


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
mr.Anderson
Дата 6.9.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Порылся я в поиске, ничего не нашел. SunUniHighliter мне не подходит - я хочу сделать своими ручками. Прошу дать мне пример кода (без всяких наворотов, просто перекраска) слова Variable в синий цвет и сделать его жирным! Все, мне больше ничего не надо! Дальше я сам разберусь, надеюсь.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 6.9.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



http://forum.vingrad.ru/index.php?showtopic=63101
Добавлено @ 17:18
P.S.
ладно б тема месячной давности была...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.Anderson
Дата 6.9.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Видел я эту тему. Да не разобрался в коде тамошнем... smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 6.9.2005, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а другого нет smile
Добавлено @ 17:34
+ что именно тебе не понятно?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.Anderson
Дата 7.9.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Сообщение там от Archon7th. Он приводит код, а потом говорит:
Цитата
делает слово begin красным, при размере файла 65кб примерно за 0,5 сек

Ну, я в упор не вижу в энтом коде слова "begin"...
Добавлено @ 16:06
В смысле, не вижу, как оно используется. Непонятно. Зачем-то разбор на символы...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 7.9.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а при чем тут его код?
код WIN32API вполне рабочий...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Akella
Дата 7.9.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



memo2 - TRichEdit

Код

    memo2.Lines.Add('>---ПОЛУЧЕНО СООБЩЕНИЕ ОТ: '+socket.RemoteHost+'---');
    L:=Length(Memo2.Text);
    memo2.SelStart:=Length(Memo2.Text);//начиная с конца текста, т.е. начало выделения
    memo2.SelAttributes.Color:=clRed;//выделяем будущий текст красным
    memo2.Lines.Add('>'+vResText);//добавляем текст
    memo2.SelLength:=L+Length(Memo2.Text);//выделяем текст, т.е. узнаем кол-во символов выделяемого текст
    memo2.Lines.Add('>---КОНЕЦ СООБЩЕНИЯ-------');

PM MAIL   Вверх
Rennigth
Дата 7.9.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76





--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Delphins
Дата 7.9.2005, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2005
Где: Россия, Краснодар

Репутация: нет
Всего: нет



Приведу вырезку из MSDN, если хочеш разберайся. ,
Цитата
Coloring an Edit Control
Each time an edit control is about to be painted to the screen, Windows sends the parent window a WM_CTLCOLOR message. The wParam parameter contains the handle to the display context of the edit control, the low-order word of the lParam parameter identifies the edit control, and the high-order word of lParam contains CTLCOLOR_EDIT. The application can set the color or pattern for the edit control by returning a handle to a brush. Brush handles can be obtained by selecting a stock object or by building a brush from a pattern bitmap. The application can also set the text foreground and background colors.

The following code sets the colors for an edit control to white text on a gray background. The colors for other controls use the defaults.

.
.
.
  case WM_CTLCOLOR:
      if ( HIWORD(lParam) == CTLCOLOR_EDIT ) {
        // Set the text background color.
            SetBkColor(wParam, RGB(128,128,128));
        // Set the text foreground color.
            SetTextColor(wParam, RGB(255, 255, 255) );
        // Return the control background brush.
            return GetStockObject(LTGRAY_BRUSH);
                  }
      else
        return GetStockObject(WHITE_BRUSH);
.
.
.

In Windows version 3.0, there is a bug that caused a single-line edit control to be colored incorrectly. Windows would draw the control with the colors and brush from a WM_CTLCOLOR message and then again with the standard colors. Here are two workarounds to this problem:

Create a multiple-line edit control instead of a single-line edit control.
Use the following code instead of the code earlier in this section:
.
.
.
  case WM_CTLCOLOR:
      if ( HIWORD(lParam) == CTLCOLOR_EDIT
        || HIWORD(lParam) == CTLCOLOR_MSGBOX ) {
        // Set the text background color.
            SetBkColor(wParam, RGB(128,128,128));
        // Set the text foreground color.
            SetTextColor(wParam, RGB(255, 255, 255) );
        // Return the control background brush.
            return GetStockObject(LTGRAY_BRUSH);
            }
      else
        return GetStockObject(WHITE_BRUSH);
.
.
.

SetBkColor does not support dithered colors. This is not specific to edit controls, but the application developer needs to be aware of the situation when attempting to color edit controls. Windows uses the closest solid color for background color of a control. Thus both of the following statements produce a gray control background with a 16-color driver:

  SetBkColor(wParam, RGB(64,128,128));
  SetBkColor(wParam, RGB(128,128,128));

With a 256-color driver the first statement creates a gray/green background, and the second statement produces a gray background.


Таким образом в Memo можно сделать слово цветным.
PM MAIL ICQ Skype MSN   Вверх
mr.Anderson
Дата 7.9.2005, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



dsergey, ваш код не работает. Компилер ругается на неизвестные идентификаторы socket и vResText.



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 7.9.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



smile))
само-собой. это просто пример, а не готовое решение...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.Anderson
Дата 7.9.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Я пока не обладаю достаточным уровнем знаний, чтобы самому дописать эти идентификаторы! smile Я даже не знаю, для чего они. Вы мне можете дать готовый код смены цвета конкретного слова?! Даже если подобные темы уже были, напишите еще раз, неужели вам трудно? Напишите код и плиз подробно прокомментируйте, и все будет в порядке! smile

Это сообщение отредактировал(а) sim7 - 7.9.2005, 18:49


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 7.9.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а их и не нужно дописывать...
socket можеш вообще удалить. вместо vResText любой текст...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.Anderson
Дата 9.9.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Цитата(sim7 @ 7.9.2005, 19:49)
Вы мне можете дать готовый код смены цвета конкретного слова?! Даже если подобные темы уже были, напишите еще раз, неужели вам трудно? Напишите код и плиз подробно прокомментируйте

Ну, какие же вы ленивые, не в упрек вам будь сказано!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
_hunter
Дата 9.9.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



мы не ленивые. просто ни один программист не любит писать рутинный ( тривиальный ) код.
а тот, что ты просиш -- именно такой.
+ все, что можно было написать, -- уже написанно..


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Akella
Дата 12.9.2005, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



А ты не ленивый? Ты даже не попытался разобраться smile
PM MAIL   Вверх
Akella
  Дата 12.9.2005, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Вот тебе пример

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  Projects.rar 3,04 Kb
PM MAIL   Вверх
mr.Anderson
Дата 18.9.2005, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Цитата(dsergey @ 12.9.2005, 10:16)
А ты не ленивый?

Да нет. Я ж пытаюсь, но раз не въехал - то что ж тут поделать? Нету у меня учителя хорошего. Да и плохого нет, впрочем...
Проект сейчас гляну.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
FRAGNATIC
Дата 18.9.2005, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



sim7
да лан у 99% здесь находяшихся тож учителей небыло) книга лучший учитель)
PM MAIL   Вверх
Poseidon
Дата 19.9.2005, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Эх, ну чтоб sim7 без Посейдона делал? Что-то лень с меня сегодня сошла smile

Воть:
Код
procedure TForm1.Button1Click(Sender: TObject);
const srch = 'Variable';
var i: integer;
begin
for i:= 1 to Length(RichEdit1.Text)do
if copy(RichEdit1.Text,i,Length(srch)) = srch
then
  begin
  RichEdit1.SelStart:= i-1;
  RichEdit1.SelLength:= Length(srch);
  RichEdit1.SelAttributes.Color:= clBlue;
  RichEdit1.SelAttributes.Style:= [fsBold];
  end;

end;

Добавлено @ 00:54
Только нужно будет потом вернуть значения SelAttributes по умолчению. А то вводить не получится как хотелось бы. Но это я оставил на домашнее задание. Не все же за чужой счет делать. Нужно и самому учится smile


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1093 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.