Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизНе понял! Цвета палитры виндовс (типа clBtnShadow и т.д) Найти похожие ветки
← →
Чайник (2004-09-18 01:18) [0]Пытаюсь присвоить некоему элементу цвет из палитры Windows, например clBtnShadow - постоянно выдает черный цвет (значение
-2147483632). Любой конкретный цвет вроде clRed воспринимает. В чем дело?
У меня стоит WinXP, но стиль классический. Может здесь собака порылась? А как тогда добраться до цветов системной палитры?
← →
Yanis © (2004-09-18 01:28) [1]Нормальный цвет, точно не чёрный и код другой.
← →
Чайник (2004-09-18 01:32) [2]В том то все и дело, что бы не задал (clHighlight, clBtnShadow и т.п.), показывает дурацкий отрицательный код и все черным-черно.
← →
Yanis © (2004-09-18 01:42) [3]По твоему если написать
Panel1.Color := clBtnShadow;
Панель будет черный?
← →
Palladin © (2004-09-18 01:43) [4]У тебя ошибка в программе (С) АП
← →
Чайник (2004-09-18 02:19) [5]Виноват - по ошибке не в тот форум вопрос кинул - хотел в "компоненты".
Я создаю компонент:
type
TMyComp = class(TCustomControl)
private
FColorBegin : TColor;
procedure SetColorBegin(const Value: TColor);
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure Paint; override;
published
property ColorBegin : TColor read FColorBegin write SetColorBegin default clWhite;
end;
...
procedure TMyComp.SetColorBegin(const Value: TColor);
begin
IF FColorBegin<>Value Then begin
FColorBegin := Value;
Invalidate;
end;
end;
В процедуре Paint нечто-то вроде:
Canvas.Brush.Color := RGB(R,G,B);
Canvas.FillRect(CopyR);
Так вот, если я задаю свойсто этого компонента конкретным цветом
MyComp1.ColorBegin := clSkyBlue;
Цвет рисуется SkyBlue, а если clBtnShadow - черный
← →
DiamondShark © (2004-09-18 10:44) [6]В приведённом коде не хватает одной маленькой детали: использование цвета при рисовании.
← →
Defunct © (2004-09-18 19:21) [7]Чайник (18.09.04 02:19) [5]
Системные цвета (clBtnFace, clBtnShadow и т.п.) представляют собой код цвета из системной палитры, который начинается с зарезервированного байта F0h, а последующие три байта отведены под номер цвета.
Для получения RGB цвета воспользуйтесь:
ColorToRGB( )
← →
Сине-белый (2004-09-18 21:22) [8]> Defunct © (18.09.04 19:21) [7]
Я меня в итоге так сделал:FColorBegin := GetSysColor(COLOR_BTNHIGHLIGHT);
Вашим способом тоже работает:FColorBegin := ColorToRGB(clBtnHighlight);
Как я понимаю, те же яйца, только в профиль.
← →
Defunct © (2004-09-18 21:30) [9]> Как я понимаю, те же яйца, только в профиль.
Да, тока ColorToRGB обслуживает все палитры (в т.ч. VGA256, EGA16), а GetSysColor только системную
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c