Турбо Паскаль 6.0



         

Перекрытие цветов по умолчанию.


Очевидный способ изменить цвета - это изменить палитру. Если Вам не нравится цвет нормального текста скроллера, Вы можете захотеть изменить элемент 1 (нормальный текст) в палитре скроллера, например с 6 на 5. Нормальный текст скроллера отображается в элемент окна для элемента управления полосы скроллера (по умолчанию синий-на-бирюзовом). Запомните: 5 - это не цвет! Все, что Вы сделали - это сказали скроллеру, что его нормальный текст должен выглядеть так же, как полосы скроллинга вокруг него! Что делать, если Вы не хотите желтый-на-синем? Измените элемент палитры для нормального текста окна в TApplication. Поскольку это последняя не nil палитра, элементы в палитре программы определяют цвета, которые будут появляться во всех видимых элементах окна, т.е. цвета не являются абсолютными, а определяются палитрами владельца. Это имеет смысл: вероятно Вы хотите, чтобы Ваши окна выглядели одинаково. Вероятно Вы не захотите указывать каждому отдельному окну какого цвета оно должно быть. Если Вы захотите изменить его позже (или разрешить пользователю настраивать цвета), Вам придется изменить элементы для каждого окна. Так же скроллер или другой интерьер не должен беспокоиться о его цветах, если он вставляется в какое-то окно, отличное от того, в какое Вы хотели вставить его первоначально. Например, если Вы поместили скроллер в диалоговое окно вместо окна, он не будет (по умолчанию) того же цвета, а вместо этого будет цвета нормального текста в диалоговом окне. Чтобы изменить палитру видимого элемента, перекройте метод GetPalette. Чтобы создать новый тип объекта скроллера, который рисует себя цветом рамки окна вместо цвета нормального текста, объявление и реализация объекта будут включать:

type TMyScroller = object(TScroller) function GetPalette: PPalette; virtual; end;

function TMyScroller.GetPalette: PPalette; const CMyScroller = #1#7; PMyScroller: string[Length(CMyScroller)] = CMyScroller; begin GetPalette := @PMyScroller; end;

Заметим, что константа палитры - это строковая константа, поскольку Turbo Vision использует тип String для представления палитры. Это позволяет более просто манипулировать палитрой, поскольку все строковые функции могут использоваться с палитрами.

Примечание: Типы TPalette и String полностью взаимозаменяемы.




Содержание  Назад  Вперед