Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2016, 14:49   #1
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию TTreeView раскрасить первые 3 буквы.

хочу раскрасить первые три буквы Итема TreeView
было бы хорошо если показали бы любой пример. дальше сам бы разобрался.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 21.05.2016, 15:46   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

вместо 1000 слов:

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.05.2016, 16:20   #3
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

беда у меня с хелпом, если несложно прикрепите код из подсказки.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 21.05.2016, 17:58   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Рисуй первых три символа одним цветом Canvas.TextOut, Цвет задавай в Canvas.Font. Остаток строки другим цветом. Ширину первых трех символов можно узнать например с помощью Canvas.TextWidth
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.05.2016, 18:45   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
беда у меня с хелпом
что за беда?

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.05.2016, 13:19   #6
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
что за беда?
аллергия на F1
П,С. спасибо за помощь нашёл хелп в интернете
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 23.05.2016, 13:24   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
аллергия на F1
О, повезло, что не геморрой!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.05.2016, 14:34   #8
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

такой код:
Код:
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with TreeView1.Canvas do
 Begin
  DefaultDraw := False ;
  Font.Color := clLime;
  TextOut( 10, 0, Copy(Node.Text,0,3));
  Font.Color := clWindowText;
  TextOut( 10+TextWidth(Copy(Node.Text,0,3)), 0, Node.Text);
 end;
end;
end.
результат
1.png
по идее зелеными должны были быть первые 3 символа.
вопрос собственно что я делаю не так??
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 23.05.2016, 14:38   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Для начала посмотри, как и с какими данными работает функция Copy().
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.05.2016, 14:55   #10
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

функция Copy работает со строками копирует количество символов строки с указанной позиции
у меня получается копирует 3 первых символа TextOut выводит их зеленым
затем
Код:
TextOut( 10+TextWidth(Copy(Node.Text,0,3)) // ищет позицию на которой нужно продолжить рисовать строку 
, 0, Node.Text); // и по идее должно дорисовать черным.
что с функцией копи то не так??
П.С, если принципиально для примера чтоб выводилась та же строка что и была задана то
Код:
  TextOut( 10+TextWidth(Copy(Node.Text,0,3)), 0,Copy(Node.Text,4,Length(Node.Text)));
хотя это ничего не меняет.
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 23.05.2016 в 14:59.
Dvoishnik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить в файле все первые буквы в словах на заглавные буквы Luchfan12 Помощь студентам 6 15.10.2014 13:10
Во введенной строке поменять первые буквы каждого слова на прописные Эйфория=* Общие вопросы Delphi 25 10.06.2013 17:18
Оставить Только Первые Буквы Слов В Предложении PDiddy Microsoft Office Excel 5 30.04.2013 07:17
Как получить первые буквы из слов в предложении? artemavd Общие вопросы Delphi 18 23.12.2012 00:01
выделить первые буквы по которым можно прочитать слово андрей.... Помощь студентам 0 21.12.2012 17:10