![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Картинка в StatusBar [D5, NT4]
Tutov Roman © (2002-06-12 14:09:00)Возможно-ли такое ? Если да то как ?
Юрий Жуков (2002-06-20 13:42:00) [1]Изврасченцы :)
Наследуете StatusBar с возмоностью положить все что пожелаешь :))
constructor TAdvStatusBar.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csAcceptsControls, csOpaque];
end;
[aka] (2002-06-20 12:05:00) [2]Бросаешь Image на форму. Входишю а тесктовой режим DFM и ручками cut/paste в Status. Всегда так делал и лишнего кода == 0
Севостьянов Игорь (2002-06-20 11:30:00) [3]Можно также воспользоваться стандартным Windows StatusBar из
Import ActiveX Control для C:\WINNT\System32\MSCOMCTL.OCX
У меня вот получилась MSComctlLib_TLB.pas там не только StatusBar с картинками
nick_sniper (2002-06-20 07:11:00) [4]TStatusBarPro v1.11
by Kambiz R. Khojasteh
kambiz@delphiarea.com http://www.delphiarea.com
Прекраснейший статусбар с картинками и наворотами и абсолютно бесплатный.
liho26 (2002-06-20 04:50:00) [5]Титову Роману.
Роман, я бы с удовольствием, да ток не знаю как это надо делать и кому отправлять. Это во-первых. Во-вторых у меня есть негативный опыт отправки таких вещей. Примерно год назад я отправлял на пару сайтов (уж и не помню какие) кое что, да таки не опубликовали... :) Если Вы в этом действительно заинтересованы, напишите на мылоal28@mail.ruписьмо, договоримся :)
-------------------------------
С уважением
Kaban (2002-06-19 16:06:00) [6]2 N A N
OwnerDraw
N A N (2002-06-19 15:56:00) [7]а у меня событие OnDrawPanel не возникает?
Tutov Roman (2002-06-19 15:08:00) [8]что за зверь - не знаю...но живет тут :)
http://delphibase.endimus.com/
DPetrovich (2002-06-19 14:51:00) [9]пардон, UBFPD - это что за зверь?
Tutov Roman (2002-06-19 14:25:00) [10]а ещё лучше сразу в UBFPD
Tutov Roman (2002-06-19 13:49:00) [11]Может вы оформите это красиво и в факи ?
Будет полезно...
liho26 (2002-06-14 08:12:00) [12]Блин.. Ошибочка выше вкрлась... Получается, что рисуем картинкой раньше, чем ее загружаем. Не досмотрел. :) Правильно будет так
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;
liho26 (2002-06-14 08:09:00) [13]Извиняюсь, про картинку забыл. Перефразируя знаменитую фразу кота Матроскина могу сказать следующее: "Для того, чтобы нарисовать что-то ненужное, нам надо создать что-то ненужное"! :)
Ок. Для рисования нам понадобится 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 07:49:00) [14]Ок.. Будем делать панельку в стиле "а-ля 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. Получается интересный эффект разорванныхквадратов. :)
---------------------------
С уважением ко всем...
Slava (2002-06-14 07:35:00) [15]procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
StatusBar.Canvas.Draw(Rect.Left, Rect.Top, Application.Icon);
end;
Tutov Roman (2002-06-13 16:24:00) [16]Как пользоваться не знаю...в чем-же еще .
Ps Где на пример посмотреть ?
Song (2002-06-12 17:05:00) [17]OwnerDraw и onDrawPanel есть.. так в чём проблема ?
Tutov Roman (2002-06-12 15:18:00) [18]нет это не наш путь...:)
Хочу как в эксплорере....
Kani (2002-06-12 15:03:00) [19]Можно сделать полосу состояния из панели (Panel), без использования Status Bar-a. А на Panel уже можно кинуть картинку. :))