![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не понял! Цвета палитры виндовс (типа clBtnShadow и т.д) [D6, WinXP]
Чайник © (2004-09-18 02:40:00)Пытаюсь присвоить свойству моего компонента цвет из палитры Windows, например clBtnShadow - постоянно выдает черный цвет (значение
-2147483632). Любой конкретный цвет вроде clRed воспринимает. В чем дело?
У меня стоит WinXP, но стиль классический. Может здесь собака порылась? А как тогда добраться до цветов системной палитры?
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 - черный
Ale}{(is) (2004-09-26 10:14:00) [1]Используй
Canvas.Brush.Color := ColorToRGB(FColorBegin);и всё будет нормально...
Чайник (2004-09-18 13:45:00) [2]> DiamondShark © (18.09.04 13:33) [2]
> Где код, в котором цвет используется при рисовании?
В пэйнте:
Canvas.Brush.Color := FColorBegin;и так далее..
Canvas.Pen.Color := FColorBegin;
DiamondShark (2004-09-18 13:33:00) [3]Где код, в котором цвет используется при рисовании?
Чайник (2004-09-18 02:44:00) [4]Методом тыка обнаружил:
если задаю цвет как
MyComp1.ColorBegin := GetSysColor(COLOR_3DDKSHADOW);
то работает, а если
MyComp1.ColorBegin := clBtnShadow;
- фиг вам.
Ну и что бы это значило?