Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2015, 17:03   #1
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
Вопрос Как определить нажатый панель StatusBar-а

Всем привет. Ребята кто нибудь знает, как можно определить какой панель была нажата в компонент StatusBar? Короче, мне нужно сделать так чтобы при щелчке на второй панель программа выводила сообщение "Это второй панель".
Моя родина там, где мой компьютер
SASFM вне форума Ответить с цитированием
Старый 27.12.2015, 17:38   #2
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 156
По умолчанию

Повесить на onmousedown что-то вроде этого:
Код:
procedure Tsample.StatusBarMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const atext:array[0..4] of string=('первый','второй','третий','четвёртый','пятый');
var
  I: Integer;
  x1,x2:integer;
begin
if Button=TMouseButton.mbLeft then else exit;
for I := 0 to StatusBar.Panels.Count-1 do
begin
  x1:=x2;
  x2:=x2+StatusBar.Panels[i].Width;
  if (x<=x2) and (x>=x1) then
    begin
     showmessage('Это '+atext[i]+' панел');
     break;
    end;
end;
end;
DIONISKA вне форума Ответить с цитированием
Старый 27.12.2015, 18:26   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Примерно так
Код:
procedure TForm1.StatusBar1Click(Sender: TObject);
var CursorPos: TPoint;
    i,x: Integer;
begin
  CursorPos:=StatusBar1.ScreenToClient(Mouse.CursorPos);
  x:=0;
  for i:=0 to StatusBar1.Panels.Count-1 do
    if CursorPos.X<X+StatusBar1.Panels.Items[i].Width then begin
      ShowMessage(Format('Курсор на панели %d',[i]));
      Break;
    end
    else Inc(x,StatusBar1.Panels.Items[i].Width);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поместить время и дату в statusbar? Proxx-asb Общие вопросы Delphi 9 27.05.2009 22:48
Как в statusbar поместить progressbar Andrei Isaev Общие вопросы Delphi 2 22.11.2008 22:00
Как поместить trackbar в statusbar SeRhy Общие вопросы Delphi 4 11.06.2008 03:58
Как создать программу-панель (как панель Msoffice), чтобы была поверх всех окон Romanbl4 Общие вопросы Delphi 6 27.06.2007 17:23