Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.01;
Скачать: CL | DM;

Вниз

Картинка в StatusBar   Найти похожие ветки 

 
Tutov Roman   (2002-06-12 14:09) [0]

Возможно-ли такое ? Если да то как ?


 
Kani   (2002-06-12 15:03) [1]

Можно сделать полосу состояния из панели (Panel), без использования Status Bar-a. А на Panel уже можно кинуть картинку. :))


 
Tutov Roman   (2002-06-12 15:18) [2]

нет это не наш путь...:)
Хочу как в эксплорере....


 
Song ©   (2002-06-12 17:05) [3]

OwnerDraw и onDrawPanel есть.. так в чём проблема ?


 
Tutov Roman   (2002-06-13 16:24) [4]

Как пользоваться не знаю...в чем-же еще .
Ps Где на пример посмотреть ?


 
Slava ©   (2002-06-14 07:35) [5]

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
StatusBar.Canvas.Draw(Rect.Left, Rect.Top, Application.Icon);
end;


 
liho26 ©   (2002-06-14 07:49) [6]

Ок.. Будем делать панельку в стиле "а-ля Office XP".
1. Создаем новый проект.
2. На формочку кидаем StatusBar. Изменим его параметры на следующие: Color: $00F8FAFA; Height: 30; Остальное без изменений.
3. Создаем три дополнительные панельки. Для этого в Object Inspector выбераем сво-во Panels и кликаем на кнопочку справа. Свойства каждой панельки должны быть такими: Width: 100; Style: psOwnerDraw; Остальное без изменений.
Теперь возвращаемся к StatusBar и выбираем закладку Events в Object Inspector. Тут нам надо найти обработчик onDrawPanel. Два раза кликаем и пишем такой код:


StatusBar1.Canvas.Brush.Color:=$00F8FAFA;
StatusBar1.Canvas.FillRect(Rect);
StatusBar1.Canvas.Brush.Color:=$00CCDBDB;
StatusBar1.Canvas.FrameRect(Rect);


В результате полностью процедура должна выглядеть так:


procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
StatusBar1.Canvas.Brush.Color:=$00F8FAFA;
StatusBar1.Canvas.FillRect(Rect);
StatusBar1.Canvas.Brush.Color:=$00CCDBDB;
StatusBar1.Canvas.FrameRect(Rect);
end;


Что тут что. Первая строка задает цвет кисти. Вотрая закрашивает внутреннее пространство. Третья меняет цвет кисти, и четвертая рисует рамку.
Если поменять цвет первой строки, на другой, например красный, то получится панелька из трех красных квадратиков в рамочках. Поэксперементируй с цветом. Попробуй у второй панельки (StatusBar1.panels[1]) изменить свойство с psOwnerDraw на psText. Получается интересный эффект разорванныхквадратов. :)
---------------------------
С уважением ко всем...


 
liho26 ©   (2002-06-14 08:09) [7]

Извиняюсь, про картинку забыл. Перефразируя знаменитую фразу кота Матроскина могу сказать следующее: "Для того, чтобы нарисовать что-то ненужное, нам надо создать что-то ненужное"! :)
Ок. Для рисования нам понадобится TBitMap. Поэтому приведенная выше процедура будет выглядеть так:


procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
Var
CBitmap: TBitmap;
begin


Теперь его создаем и загружаем картинку.... В общем все теперь выглядит вот так:

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
Var
CBitmap: TBitmap;
begin
StatusBar1.Canvas.Brush.Color:=$00F8FAFA;
StatusBar1.Canvas.FillRect(Rect);
StatusBar1.Canvas.Brush.Color:=$00CCDBDB;
StatusBar1.Canvas.FrameRect(Rect);
StatusBar1.Canvas.Draw(1,1,CBitmap);
CBitmap:=TBitmap.Create;
try
CBitmap.LoadFromFile("bbb.bmp");
CBitMap.Dormant;
CBitMap.FreeImage;
CBitMap.ReleaseHandle;
Finally
CBitmap.Free;
end;
end;

Вот теперь точно - все! :)
--------------------------------
С уважением...


 
liho26 ©   (2002-06-14 08:12) [8]

Блин.. Ошибочка выше вкрлась... Получается, что рисуем картинкой раньше, чем ее загружаем. Не досмотрел. :) Правильно будет так

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
Var
CBitmap: TBitmap;
begin
StatusBar1.Canvas.Brush.Color:=$00F8FAFA;
StatusBar1.Canvas.FillRect(Rect);
StatusBar1.Canvas.Brush.Color:=$00CCDBDB;
StatusBar1.Canvas.FrameRect(Rect);
CBitmap:=TBitmap.Create;
try
CBitmap.LoadFromFile("bbb.bmp");
CBitMap.Dormant;
CBitMap.FreeImage;
StatusBar1.Canvas.Draw(1,1,CBitmap);
CBitMap.ReleaseHandle;
Finally
CBitmap.Free;
end;
end;


 
Tutov Roman   (2002-06-19 13:49) [9]

Может вы оформите это красиво и в факи ?
Будет полезно...


 
Tutov Roman   (2002-06-19 14:25) [10]

а ещё лучше сразу в UBFPD


 
DPetrovich ©   (2002-06-19 14:51) [11]

пардон, UBFPD - это что за зверь?


 
Tutov Roman   (2002-06-19 15:08) [12]

что за зверь - не знаю...но живет тут :)
http://delphibase.endimus.com/


 
N A N   (2002-06-19 15:56) [13]

а у меня событие OnDrawPanel не возникает?


 
Kaban ©   (2002-06-19 16:06) [14]

2 N A N
OwnerDraw


 
liho26 ©   (2002-06-20 04:50) [15]

Титову Роману.
Роман, я бы с удовольствием, да ток не знаю как это надо делать и кому отправлять. Это во-первых. Во-вторых у меня есть негативный опыт отправки таких вещей. Примерно год назад я отправлял на пару сайтов (уж и не помню какие) кое что, да таки не опубликовали... :) Если Вы в этом действительно заинтересованы, напишите на мыло al28@mail.ru письмо, договоримся :)
-------------------------------
С уважением


 
nick_sniper ©   (2002-06-20 07:11) [16]

TStatusBarPro v1.11
by Kambiz R. Khojasteh
kambiz@delphiarea.com http://www.delphiarea.com

Прекраснейший статусбар с картинками и наворотами и абсолютно бесплатный.


 
Севостьянов Игорь ©   (2002-06-20 11:30) [17]

Можно также воспользоваться стандартным Windows StatusBar из
Import ActiveX Control для C:\WINNT\System32\MSCOMCTL.OCX
У меня вот получилась MSComctlLib_TLB.pas там не только StatusBar с картинками


 
[aka]   (2002-06-20 12:05) [18]

Бросаешь Image на форму. Входишю а тесктовой режим DFM и ручками cut/paste в Status. Всегда так делал и лишнего кода == 0


 
Юрий Жуков ©   (2002-06-20 13:42) [19]

Изврасченцы :)

Наследуете StatusBar с возмоностью положить все что пожелаешь :))


constructor TAdvStatusBar.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csAcceptsControls, csOpaque];
end;



Страницы: 1 вся ветка

Текущий архив: 2002.07.01;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
1-989
HitMan
2002-06-20 11:53
2002.07.01
Импорт типа переменной из DLL


14-1142
kaif
2002-05-28 16:16
2002.07.01
Как в NT4 с мышью бороться?


14-1149
Yuraz
2002-05-29 10:57
2002.07.01
Новые введения в интернете: почти все ссылки новых форумов


3-905
Egor111
2002-06-06 11:48
2002.07.01
Access


1-958
Задумчивый
2002-06-19 14:03
2002.07.01
Размер изображения в файле bmp