Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как проще получить индекс панели в StatusBar 
:(
    Опции темы
2508
Дата 20.5.2007, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 3.5.2007
Где: Неразборчиво

Репутация: нет
Всего: нет



Есть ли более простой способ узнать индекс панели в статус баре непосредственно по клику мышки без пересчета ХУ и Width панелей по MouseDown?
PM MAIL WWW   Вверх
Klin
Дата 20.5.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



А какой панели вы говорите? Компонент какой? Уточните.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Partizan
Дата 20.5.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 67



Klin, о статус баре речь видимо.... там же полосу статусбара можно разделить на несколько частей и у каждой будет свой индекс...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
2508
Дата 20.5.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 3.5.2007
Где: Неразборчиво

Репутация: нет
Всего: нет



 см. картинку

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  Clipboard02.jpg 84,94 Kb
PM MAIL WWW   Вверх
Klin
Дата 20.5.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Сорри, не увидел, что компонент в названии темы указан. Старый стал. smile ИМХО такой функции нет, StatusBar - изначально служит для вывода информации. Используйте другой компонент (например ToolBar) или просто напишите функцию для OnClick.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
2508
Дата 20.5.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 3.5.2007
Где: Неразборчиво

Репутация: нет
Всего: нет



Мнр нравится, когда клик по статус бару позволяет переключать контекст или вызывать меню...
Для тех кому /то тоже нравится привожу код.
Код

//---------------------------------------------------------------------------
void __fastcall TForm1::StatusBar1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  int i = 0, x = 0;
  while (i < StatusBar1->Panels->Count - 1) {
    x += StatusBar1->Panels->Items[i]->Width;
    if (x > X) break;
    i++;
  }
  ShowMessage(IntToStr(i));
}
//---------------------------------------------------------------------------

Просто очень не хотелось бы использовать MouseDown, а на OnClick не знаю как...

Это сообщение отредактировал(а) 2508 - 20.5.2007, 17:50
PM MAIL WWW   Вверх
Klin
Дата 20.5.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(2508 @  20.5.2007,  18:27 Найти цитируемый пост)
а на OnClick не знаю как...

Практически также, используется функция GetCursorPos.

Код

TPoint mouse;
GetCursorPos(&mouse);
iny X = mouse.x , Y = mouse.y - StatusBar1->Top;
...


Примерно так.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
2508
Дата 20.5.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 3.5.2007
Где: Неразборчиво

Репутация: нет
Всего: нет



Не вижу чем это решение лучше...
PM MAIL WWW   Вверх
Klin
Дата 20.5.2007, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Ни чем smile, но вы же сами для OnClick просили, а если серьезно, то можно поиграться smile
Код


void __fastcall TForm1::MyClick(TObject *Sender)
{
 ShowMessage(((TPaintBox*)Sender)->Name);  // вместо этого - ваши действия
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
const count = 3; // Количество панель в статусе (непомню, как свойство компонента в константу запихнуть)
TPaintBox *Box[count];
 for (int i=0; i<count; i++) {
  Box[i] = new TPaintBox (StatusBar1);
  Box[i]->Name = "Box" + IntToStr(i+1);
  Box[i]->Left = 0;
  for (int n = 0; n<i; n++)
   Box[i]->Left+= StatusBar1->Panels->Items[i]->Width;
  if (StatusBar1->Panels->Count-1 != i)
   Box[i]->Width = StatusBar1->Panels->Items[i]->Width;
  else Box[i]->Width = this->Width - Box[i]->Left;
  Box[i]->Parent = StatusBar1;
  Box[i]->OnClick = MyClick;
 }
}
//---------------------------------------------------------------------------


Только в h файле незабудь прописать:

Код

        void __fastcall MyClick(TObject *Sender);



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.