powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Цвет в PageControl
18 сообщений из 43, страница 2 из 2
Цвет в PageControl
    #37275746
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой ужасный топик. Показательный, просто.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37275747
Жорик_8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С прямоугольником разобрался но есть 2 НО:
1. Текст на вкладке пропал.
2. Осталась рамка на TabSheet да же если BorderWith = 0;
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37275830
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамКакой ужасный топик. Показательный, просто.
Согласен на 100. Вместо того чтобы послушать ваш совет с панелью, начинаем городить огород.
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37275849
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
THask =  class (TTabSheet);
 procedure  TForm1.FormCreate(Sender: TObject);
 var  i: integer;
 begin 
   for  i :=  0   to  PageControl1.PageCount -  1   do 
    THask(PageControl1.Pages[i]).Color := clRed;
 end ;

 procedure  TForm1.PageControl1Change(Sender: TObject);
 begin 
  PageControl1.Invalidate;
 end ;

 procedure  TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer;  const  Rect: TRect; Active: Boolean);
 var  R: TRect;
 begin 
  Control.Canvas.Brush.Color := clRed;
  R := Rect;
  inc(R.Bottom, 2 );
  Control.Canvas.FillRect(R);
   with  PageControl1.Pages[TabIndex]  do 
    DrawText(Control.Canvas.Handle,Caption,Length(Caption),R,DT_Center  or  DT_VCENTER  or  DT_SINGLELINE);
 end ;
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37275881
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что творите.
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37276021
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly PodgoretskyЧто творите.
Не знаю, фигнёй маемся. Надо же что-то по ночам делать
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37276083
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Жорик_8DimaBr,
все.. спасибки за помощь!!!

А теперь внемли второму посту топика:

Гаджимурадов Рустам Разноцветные формы - зло.
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37276107
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато красота какая и играет неземная музыка.
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37276166
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Свистоперделки детектед )))
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37276179
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно вылезти из танка и потанцевать под цветомузыку.
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37276197
Гутен .Таг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамКакой ужасный топик. Показательный, просто.


Одни скриншоты чего только стоят, буээээ...
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37276208
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гутен .ТагОдни скриншоты чего только стоят, буээээ...
Лично я за красотой не гнался, главное методика
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37277205
Жорик_8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrСогласен на 100. Вместо того чтобы послушать ваш совет с панелью, начинаем городить огород.

Совет с панелью хорошо подошел, но осталась проблема с рамкой на табе.

defecator
А теперь внемли второму посту топика:

Гаджимурадов Рустам Разноцветные формы - зло.

А я и не спорю, но когда запрос от заказчика с таким дизайном надо что-то же делать.
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37277219
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Жорик_8!
You wrote on 24 мая 2011 г. 14:41:16:

Жорик_8А я и не спорю, но когда запрос от заказчика с таким
дизайном надо что-то же делать.тыкать в интерфесы от M$ носом
и спрашивать, ненавязчиво: "ты где такое, сцуко, видел?!"

--
With best regards, Мимопроходящий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37277231
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любого заказчика, даже не вполне вменяемого (как, видимо, в данном случае), можно обоснованно отговорить от новогодней елки и разноцветно бреда, реализация которого отнимает время от реализации действительно нужного функционала.
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37277739
RENaissance
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnmenЛюбого заказчика, даже не вполне вменяемого (как, видимо, в данном случае), можно обоснованно отговорить от новогодней елки и разноцветно бреда, реализация которого отнимает время от реализации действительно нужного функционала.
Нафига, если заказчик готов платить? За ваши деньги любой каприз (с)
...
Рейтинг: 0 / 0
Цвет в PageControl
    #37277810
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RENaissanceJohnmenЛюбого заказчика, даже не вполне вменяемого (как, видимо, в данном случае), можно обоснованно отговорить от новогодней елки и разноцветно бреда, реализация которого отнимает время от реализации действительно нужного функционала.
Нафига, если заказчик готов платить? За ваши деньги любой каприз (с)
Абсолютно верно. Если за каприз(ы) будет доплачено отдельно.
Но, как правило, смета составлена до начала работ. И в ней свистоперделки ((с) defecator) не предусмотрены...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Цвет в PageControl
    #39457178
Nashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите за некропостинг, но вот в тему, про прозрачность того верхнего правого уголка пэйдж-контрола, ставшую актуальной при подключении тем к дельфовым приложениям, когда вкладки стали светлыми, панели научились быть прозрачными, а пэйдж-контролы ещё нет: http://stackoverflow.com/questions/12074478/how-to-fix-tpagecontrol-background-color-without-losing-the-system-theme и закрытый http://qc.embarcadero.com/wc/qcmain.aspx?d=80381, там упоминающийся.

В Delphi 10.1 Berlin этой проблемы уже нет. Есть, правда, две других.
1) Рамка снаружи снизу и справа от вкладки не совсем прозрачна (см вложение). Но эта проблема меня не сильно волнует, я решать её не стал.
2) Надо б, чтоб не править вручную хз сколько форм, после пресадки на Берлин панели оставить непрозрачными, но так чтоб у них цвет был светлый, когда панель на вкладке. Под XP с градиентами возиться уже не особо актуально, а дальше там монотонно окрашено, благодаря моде на Метро-стиль. Узнать цвет вкладки помогла переписка https://groups.google.com/forum/?hl=en#!topic/borland.public.delphi.rtl.win32/it4ImUXqf0Q

В итоге, у меня есть модуль примерно такого содержания:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
unit DesignerOverridesUnit;
interface
uses ExtCtrls;
type
  // Cвоя копия TPanel, отличающаяся от системной тем, что у этой ParentBackground default False;
  // А то есть задизайненные формочки, где прозрачные панели показывают неприглядное исподнее...
  // Нужно, чтоб по умолчанию панели продолжали быть непрозрачными.
  // Заодно умеет перекрашиваться в спец-светлый, если обнаруживает себя лежащей на TTabSheet
  TPanel = class(TCustomPanel)
  protected
    procedure SetParent(AParent: TWinControl); override;
  public
    constructor Create(AOwner: TComponent); override;
    property DockManager;
  published
    property Align;
    property Alignment;
    property Anchors;
    property AutoSize;
    property BevelEdges;
    property BevelInner;
    property BevelKind;
    property BevelOuter;
    property BevelWidth;
    property BiDiMode;
    property BorderWidth;
    property BorderStyle;
    property Caption;
    property Color;
    property Constraints;
    property Ctl3D;
    property UseDockManager default True;
    property DockSite;
    property DoubleBuffered;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property FullRepaint;
    property Font;
    property Locked;
    property Padding;
    property ParentBiDiMode;
    property ParentBackground default False;
    property ParentColor;
    property ParentCtl3D;
    property ParentDoubleBuffered;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowCaption;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Touch;
    property VerticalAlignment;
    property Visible;
    property StyleElements;
    property OnAlignInsertBefore;
    property OnAlignPosition;
    property OnCanResize;
    property OnClick;
    property OnConstrainedResize;
    property OnContextPopup;
    property OnDockDrop;
    property OnDockOver;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnGesture;
    property OnGetSiteInfo;
    property OnMouseActivate;
    property OnMouseDown;
    property OnMouseEnter;
    property OnMouseLeave;
    property OnMouseMove;
    property OnMouseUp;
    property OnResize;
    property OnStartDock;
    property OnStartDrag;
    property OnUnDock;
  end;

implementation
uses ComCtrls, Themes, UxTheme;
{ TPanel }

constructor TPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ParentBackground := False;
end;

procedure TPanel.SetParent(AParent: TWinControl);
var
  p: TWinControl;
  TabTheme: HTHEME;
  TabColor: Cardinal;
begin
  inherited;
  p := AParent;
  while Assigned(p) and not (p is TTabSheet) do
    p := p.Parent;
  if Assigned(p) then
    if ThemeServices.ThemesEnabled then
      begin
        TabTheme := ThemeServices.Theme[teTab];
        try
          if GetThemeColor(TabTheme, TABP_AEROWIZARDBODY, 0, TMT_FILLCOLORHINT, TabColor) = S_OK then
            Color := TabColor;
        finally
//          CloseThemeData(TabTheme);
        end;
      end;
end;


и код регистрации в приложениях:

Код: pascal
1.
2.
3.
4.
  // после регистрации всех наследников TPanel, регистрация которых захотела бы
  // её перерегистрировать, убиваем регистрацию системного класса TPanel и посовываем наш
  UnRegisterClass(ExtCtrls.TPanel);
  RegisterClass(DesignerOverridesUnit.TPanel);
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Цвет в PageControl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]