![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() И снова это я)
Редактор дописан, все работает, хотелось бы еще прикрутить к нему среди прочих функций быстрой вставки тегов функцию вставки шестнадцатеричного кода выбранного цвета, как это реализовано во многих коммерческих редакторах, например, в Blumental's HTML Pad (скрин). Можно ли (и как) реализовать что-то подобное средствами Делфи? TColorDialog подойдет ли для этого? И как тогда заставить выполнять его именно эту функцию? Нужна только вставка кода в поле редактора в формате "#HHHHHH" и ничего более. Если это возможно, помогите каким-нибудь примером или исходником, пожалуйста. |
#2
|
||||
|
||||
![]() Думается надо разложить значение цвета в RGB, потом каждый байт перевести в 16-ричный вид, записать попорядку и вставить в начале решетку. Смотри GetRValue, GetGValue, GetBValue, IntToHex.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
![]() Aristarh Dark, о боже... попроще и попримитивнее способа нет, наверное? =(
|
#4
|
||||
|
||||
![]() А это сложный способ????
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
![]() Aristarh Dark, я ламер =( Для меня пока сложный(
|
#6
|
|||
|
|||
![]() Есть способ проще и менее культурный. Правда, непонятно зачем, когда можно сделать нормально... =)
Код:
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; |