Используйте стиль TStatusBar и графические эффекты в элементе управления TTabSet - PullRequest
0 голосов
/ 21 января 2011

ОС: Windows XP Pro SP3

Выпуск:

Sorry for small image. Click to enlarge.

Как видите - в левой части находится StatusBar Control;Справа - элемент управления TabSet.

Какой подход вы бы предложили, чтобы «скопировать» стиль StatusBar (динамическое затемнение Top и Button) в элемент управления TabSet?Цветовые манипуляции, такие как clNone или AlphaBlend не работают ... и TransparentColor опора также недоступна ...

Опять я тожеозадачен, потому что есть много вариантов (imho) на выбор, но я не знаю возможные побочные эффекты и уровень совместимости в различных версиях Windows.

Спасибо очень очень очень любая помощьвообще ..


Перефразируя вопрос

StatusBar1 является родителем TabSet1.Теперь это выглядит так (неправильно):

alt text

Я должен добиться этого StatusBar1.Panels [0] и TabSet1 выглядят (правильно):

http://i.stack.imgur.com/gd9r9.png


Я также пытался использовать технику psOwnerDraw (http://delphi.about.com/od/vclusing/a/statusbar_owner.htm) для StatusBar1.Panels [0] и получить такой результат:

alt text

Ответы [ 2 ]

3 голосов
/ 21 января 2011

Я попробовал следующее в Turbo Delphi:

  • Создайте новое приложение VCL.
  • Удалите TStatusBar и TTabSet в форму.
  • Добавьте следующий обработчик OnCreate:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      StatusBar1.SimplePanel := True;
      StatusBar1.SimpleText := 'Hallo';
      TabSet1.Tabs.Add('Code');
      TabSet1.Tabs.Add('History');
      TabSet1.SetBounds(30, 0, TabSet1.Width, StatusBar1.Height); // Replace the 204
      TabSet1.ParentBackground := True;
      TabSet1.SoftTop := True;
      TabSet1.Style := tsSoftTabs;
      TabSet1.Parent := StatusBar1;
    end;
    
  • Добавьте XPMan к условию использования Unit1.

  • Запустите приложение под XP.Это дает мне следующую форму: alt text

Это то, что вы хотите?

0 голосов
/ 21 января 2011

У вас есть два основных способа сделать это:

  1. Делайте так, как это делает копируемый вами элемент управления, то есть вызывайте движок XP Theming. Если вы делаете это таким образом, вы должны знать, что этот эффект является условным и показан только в системах, которые (а) поддерживают и (б) имеют включенные темы, поэтому любой пользователь, выбравший классическую тему Windows (стиль эпохи Windows 2000) и чувствую) не увидит.

  2. Напишите код, чтобы сделать эффекты самостоятельно. В этом случае это растровое изображение, которое аккуратно раскрашивается в область поверх вкладки, нарисованной владельцем. Это даст вам непротиворечивый вид приложения, но будет игнорировать, возможно, преднамеренные, непреднамеренные, предпочтения пользователей относительно того, как приложение должно выглядеть.

Очевидно, что есть компромиссы в обоих подходах.

...