Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
6-1129
sergio777
2002-04-09 20:24
2002.07.01
А как этот кусок на C переписать под Delphi?


3-897
Voldemar
2002-06-07 02:45
2002.07.01
Кол-во записей в QuickReport


14-1201
vopros
2002-05-28 12:32
2002.07.01
Вот загадки прислали:


3-909
MaxVlasov
2002-06-05 22:06
2002.07.01
Delphi & Interbase - метаданные


3-875
Ulugbek
2002-06-06 16:26
2002.07.01
Мастера опять проблема!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский