Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
ВнизКартинка в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c