Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Иконка в statusbar


Автор: ZBugz 22.2.2010, 12:52
Всем привет. А как поместить иконку в statusbar и обработать по ней клик ?
Ну допустим внадо ее поместить в statusbar.Panels[1]  и обрабатывать ее. Т.е. когда что то там, то неактивна иконка, если все что надо, иконка активна и по ней можно кликать и обрабатывать. Все как в Internet Explorer, у него тоже самое внизу.

Автор: Rrader 22.2.2010, 15:54
Простейший способ - создать или поместить на строку TImage
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  StatusBar1.Height := 23;
  with TImage.Create(Self) do
  begin
    Parent := StatusBar1;
    AutoSize := True;
    Left := StatusBar1.Panels[0].Width + 2;
    Top := Top + 4;
    Picture.Icon.LoadFromFile('C:\help.ico');
    OnClick := ImageClick; // Обработчик
  end;
end;

Автор: ZBugz 22.2.2010, 21:44
Цитата(Rrader @ 22.2.2010,  15:54)
Простейший способ - создать или поместить на строку TImage
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  StatusBar1.Height := 23;
  with TImage.Create(Self) do
  begin
    Parent := StatusBar1;
    AutoSize := True;
    Left := StatusBar1.Panels[0].Width + 2;
    Top := Top + 4;
    Picture.Icon.LoadFromFile('C:\help.ico');
    OnClick := ImageClick; // Обработчик
  end;
end;

Спасибо, работает. Но мне надо что бы statusbar был стандартного размера. Так же почему то иконка 16х16 вылазиет за границы, если статусбар стандартный, и вылазиет не хило.
И не очень понял про это  smile 
Код

OnClick := ImageClick; // Обработчик

Че там писать после ImageClick smile 

Автор: Akella 22.2.2010, 23:34
Так уменьши размер изображения каким-нибудь редактором.

Добавлено через 3 минуты и 38 секунд
Цитата(ZBugz @  22.2.2010,  21:44 Найти цитируемый пост)
Че там писать после ImageClick 

Почему после? 
ImageClick - это событие обработки щелчка мышки.
Код

type
  TForm7 = class(TForm)
......


  private
    procedure ImageClick(Sender: TObject);

  public
    { Public declarations }

  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.ImageClick(Sender: TObject);
begin
 ShowMessage('тру-ля-ля');
end;

Автор: Rrader 23.2.2010, 05:14
Цитата(ZBugz @  23.2.2010,  03:44 Найти цитируемый пост)
Но мне надо что бы statusbar был стандартного размера

Цитата(ZBugz @  22.2.2010,  18:52 Найти цитируемый пост)
Все как в Internet Explorer, у него тоже самое внизу. 

У IE высота строки = 23 px

Автор: ZBugz 24.2.2010, 09:28
Цитата(Rrader @ 23.2.2010,  05:14)
У IE высота строки = 23 px

А, чето даже не обращал внимания smile

Добавлено через 2 минуты и 29 секунд
Цитата

Так уменьши размер изображения каким-нибудь редактором.

Дык все уменьшенно. У меня наборы иконок, 16х16 вылазила...


Цитата

Код

procedure TForm7.ImageClick(Sender: TObject);
begin
 ShowMessage('тру-ля-ля');
end;


А, понял smile 



Всем спасибо smile +1

Автор: ZBugz 24.2.2010, 12:07
А еще вопрос, а как брать иконку не из файла, а из imagelist который на форме ?

Автор: ZBugz 24.2.2010, 12:26
Все, нашел smile
Код

 with TImage.Create(Self) do
  begin
    Parent := SB;
    AutoSize := True;
    Left := SB.Panels[0].Width + 2;
    Top := Top + 4;
    InfoImg.GetIcon(10, Picture.Icon);
    OnClick := ImageClick;
  end;

Причем тут сразу же решается проблема влазиния иконки  в рамки smile, о которой я выше написал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)