Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.05.2009, 20:08
Рената Литвинова Рената Литвинова вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 7
Репутация: 10
По умолчанию Вставка шестнадцатеричного кода цвета в редактор - как?

И снова это я)
Редактор дописан, все работает, хотелось бы еще прикрутить к нему среди прочих функций быстрой вставки тегов функцию вставки шестнадцатеричного кода выбранного цвета, как это реализовано во многих коммерческих редакторах, например, в Blumental's HTML Pad (скрин).
Можно ли (и как) реализовать что-то подобное средствами Делфи? TColorDialog подойдет ли для этого? И как тогда заставить выполнять его именно эту функцию? Нужна только вставка кода в поле редактора в формате "#HHHHHH" и ничего более. Если это возможно, помогите каким-нибудь примером или исходником, пожалуйста.
Ответить с цитированием
  #2  
Старый 26.05.2009, 20:26
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Думается надо разложить значение цвета в RGB, потом каждый байт перевести в 16-ричный вид, записать попорядку и вставить в начале решетку. Смотри GetRValue, GetGValue, GetBValue, IntToHex.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 26.05.2009, 21:14
Рената Литвинова Рената Литвинова вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 7
Репутация: 10
По умолчанию

Aristarh Dark, о боже... попроще и попримитивнее способа нет, наверное? =(
Ответить с цитированием
  #4  
Старый 26.05.2009, 21:29
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

А это сложный способ????
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 26.05.2009, 21:51
Рената Литвинова Рената Литвинова вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 7
Репутация: 10
По умолчанию

Aristarh Dark, я ламер =( Для меня пока сложный(
Ответить с цитированием
  #6  
Старый 26.05.2009, 23:25
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Есть способ проще и менее культурный. Правда, непонятно зачем, когда можно сделать нормально... =)
Код:
function GetHexColor: string;
begin
  Result := '#000000';
  if not ColorDialog1.Execute then Exit;
  Result := IntToHex(ColorDialog1.Color, 6);
  Result := '#' + Copy(Result, 5, 2) + Copy (Result, 3, 2) + Copy(Result, 1, 2);
end;

А вот "нормальный" способ:
Код:
function GetHexColor: string;
var
 hex: Cardinal;
 clrR, clrG, clrB: Byte;
begin
  Result := '#000000';
  if not ColorDialog1.Execute then Exit;
  clrR := GetRValue(ColorDialog1.Color);
  clrG := GetGValue(ColorDialog1.Color);
  clrB := GetBValue(ColorDialog1.Color);
  hex := clrB or (clrG shl 8) or (clrR shl 16);
  Result := '#' + IntToHex(hex, 6);
end;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025