![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать TPageControl и TTabsSheet ...например черного цвета? [D5, Win95/98]
TankMan © (2003-02-13 00:37:00)Собственно сабж... спрашиваю, потому что не нашел, такого свойства в самих классах :(.. разве что у прародителей, но я никак до них добратся не могу :(...
TankMan (2003-03-24 00:54:00) [1]Удалено модератором
Примечание: Offtopic
TankMan (2003-03-16 23:53:00) [2]OK...корректирую вопрос..
Задача - Сделать так, чтобы PageControl и TabSheet-ы были черного цвета...
Можно пожалуйста пример?... Ну не пойму я чего-то видимо, а очень нада... :(
NAlexey (2003-03-05 16:44:00) [3]У таб(извините)шита Rect ето то на что ты жмешь мышкой вверху... Чтобы поменять страницу. Такто.
TankMan (2003-03-05 04:42:00) [4]Так... вот привел пример закраски PageControl Sentinel, но как закрасить его способом сами TabSheet-ы?
в его строчке (WM_ERASEBKGND: FillRect(HDC(WParam),PageControl1.ClientRect,GetStockObject(BLACK_BRUSH));
)
поменял PageControl1.ClientRect на PageControl1.ActivePage.ClientRect.ClientRect, насколько я понимаю, по идее,должен закрашиватся активный Рект табщита... а оно не работает :(... чего я делаю не так?
TankMan (2003-03-01 15:10:00) [5]Ну вобщем помогли блин...:(.. ну если бы я знал, как находить этот rect самой PageSheet, разве бы я спрашивал?
>>Sentinel
А ты посмотри мой основной вопрос... разве твой ответ мне поможет? Я почему-то не увидил других результатов, кроме тех, что и у меня получались...
Может всетаки кто-нибудь поделится куском кода, который непосредствено закрашивает Полность(!) весь PageControl вместе с ее Sheet-ами... может всетаки ктонибудь решится поделится столь "секретной" информацией...
Alex44 (2003-02-22 21:17:00) [6]Удалено модератором
Примечание: Offtopic
Sentinel (2003-02-22 04:09:00) [7]А голова, извините, зачем?
Мне, вот, например, недосуг заморачиваться этой идеей. Своих хватает. Был поставлен вопрос - был дан ответ, утрированный, но дан.
> ... можно плз пояснить, как это "перехватить ... у TPageControl
> или..."?
Перехватили.
> Ха... если я не могу закрасить этот... компонент, то что
> ты думаешь, что я смогу написать новый?
Ха... Так стоит ли?
TankMan (2003-02-21 22:49:00) [8]Удалено модератором
Примечание: Offtopic
Alex44 (2003-02-21 22:46:00) [9]Ego krasit i risuet Windows. Estestvennyj vopros: esli Vam ne nravitsya to, chto risuet Windows, zachem ispol"zovat" ee standartnye classy? Sdelajte svoj, i risujte, chto dushe ugodno. Ideya standartnyh window classes: STANDARTNAYA prorisovka i povedenie.
TankMan (2003-02-21 22:40:00) [10]>>Sentinel
Извини, конечно, за недоходчивость... но...я чего-то недопонимаю... вот например я вставил тот кусок кода, что ты мне дал, у меня окрашивались раньше только табы, теперь, окрашивается в черный цвет, поле, где могут быть табы (вверху полоска), и каемочка такая образовывается вокруг, самой TabSheet, хотя само поле, для размещения всяческих элементов, не перекрашивается... попробовал я по другому, изменил, я чуток, то что ты мне дал, поставил на обработчике событий не PageControl а TabSheet, и его clientRect... но результат оказался таким же :(... откуда я всетаки не пойму дельфи закрашивает серым (стандартным) цветом сам TabSheet....:(
Sentinel (2003-02-21 17:03:00) [11]Имеется ввиду, очевидно, следующая конструкция.
type
TForm1 = class(TForm)
PageControl1: TPageControl;
procedure FormCreate(Sender: TObject);
protected
OldPageCtrlWndProc: TWndMethod;
procedure PageCtrlWndProc(var message: TMessage);
end;
procedure TForm1.PageCtrlWndProc(var message: TMessage);
begin
with message do
case Msg of
{Здесь можно перехватить сообщения, посылаемые оконному елементу и обработать их так, как нам это нужно}
WM_ERASEBKGND: FillRect(HDC(WParam),PageControl1.ClientRect,GetStockObject(BLACK_BRUSH));
else
{Если мы не обработали сообщение, тогда перемаем управление старой процедуре обработки}
OldPageCtrlWndProc(message);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{А здесь мы заменяем стандартную оконную процедуру, предоставляемую нам по умолчанию, на свою}
OldPageCtrlWndProc := PageControl1.WindowProc;
PageControl1.WindowProc := PageCtrlWndProc;
end;
Таков принцип, дальше - дело рули сам. Все равно получается OwnerDraw.
TankMan (2003-02-21 16:23:00) [12]... можно плз пояснить, как это "перехватить ... у TPageControl или..."? Я как то не пойму?
Clickmaker (2003-02-21 11:25:00) [13]Перехватить WM_ERASEBKGND у TPageControl или TTabSheet и закрасить фон самому. Типа FillRect(hdc, Rect, CreateSolidBrush(RGB(0,0,0)));
TankMan (2003-02-21 00:37:00) [14]http://www.lmc-mediaagentur.de/dpool.htm
Это конечно хорошая ссылка, красивая такая, но зачем мне она? там есть только шароварный компонент, чем-то там связанный с PageControl..(это насколько я понял)...а я... спрашивал, как закрасить? а не где взять...
Игорь Шевченко (2003-02-20 09:02:00) [15]http://www.lmc-mediaagentur.de/dpool.htm
TankMan (2003-02-20 01:34:00) [16]>>Игорь Шевченко
Посмотрел я в эту сторону... спасибо конечно за наводку... закрасил я сами закладки, а вот как быть с полем этих закладок? Как найти его параметры , т.е. Rect, и как его закрасить? Тут уж я непонял как быть :(
Игорь Шевченко (2003-02-13 10:17:00) [17]Смотреть в сторону OnwerDraw
Ihor Osov'yak (2003-02-13 02:15:00) [18]Положи на панелю, панель закрась в нужный цвет. По логике вещей они цвет парента должны брать во внимание...