Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetScrollInfo , нужна помощь 
:(
    Опции темы
Comm
Дата 9.1.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет и с наступившим =))
Нашел я тут в Delphi World пример для пропорционального отображения скролл бара в StringGrid и перевел кое как На Си.... Вроде как бы и работает но когда ползунок прокручиваешь до конца в низ... то строки 2-3 не доводится...гляньте...может кто встречался с такой траблой
Код

 // Same for a TStringGrid 

procedure TForm1.Button1Click(Sender: TObject);
 var
   info: TScrollInfo;
 begin
   FillChar(info, SizeOf(info), 0);
   with info do
   begin
     cbsize := SizeOf(info);
     fmask  := SIF_ALL;
     GetScrollInfo(StringGrid1.Handle, SB_VERT, info);
     fmask := fmask or SIF_PAGE;
     nPage := 5 * (nmax - nmin) div StringGrid1.RowCount;
     // whatever number of cells you consider a "page" 
  end;
   SetScrollInfo(StringGrid1.Handle, SB_VERT, info, True);
 end;

Код Си
Код

TScrollInfo info;
  memset(&info,0,sizeof(info));
  info.cbSize=sizeof(info);
  info.fMask=SIF_ALL;
  if(GetScrollInfo(StringGrid1->Handle,SB_VERT,&info))
  { ShowMessage(info.nMax);
  }else return;
  info.fMask|=SIF_PAGE;
  // ShowMessage(info.nMax);
   //ShowMessage(StringGrid1->RowCount);

  info.nPage=5*(info.nMax-info.nMin)/StringGrid1->RowCount;
  //ShowMessage(info.nPage);
  SetScrollInfo(StringGrid1->Handle,SB_VERT,&info,true);


Спасибо за внимание.


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Comm
Дата 10.1.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile 


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Comm
Дата 10.1.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Неужели никто с этим не встречался?((


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
THandle
Дата 10.1.2009, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Comm, выложи тестовый проектик. Посмотрим.
PM   Вверх
Comm
Дата 11.1.2009, 04:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот,я понимаю что нужен перерасчет какой то сделать...но какой...
строка где всё это дело умножается на 5 и делится на количество строк стринг грида...там чем больше цифра умножения тем больше отклонений..... 


Это сообщение отредактировал(а) Comm - 11.1.2009, 14:45

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  ______.rar 40,78 Kb


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
THandle
Дата 12.1.2009, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Comm, чем больше высота ползунка(размер страницы) тем больше он не докручивает до конца. Нужно его размер уменьшать.
Я честно говоря не очень понимаю сути проблемы.... Какая ут задача хоть? smile
Ведь стандартно ставится ползунок нормального размера...
PM   Вверх
Comm
Дата 12.1.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Стандартно ползунок у TStrinGrid не меняется вообще(а если убрать операцию умножения в строке "info.nPage=5*(info.nMax-info.nMin)/StringGrid1->RowCount;
" то ползунок будет до безобразия маленьким даже при минимуме строк нужных для появления скроллбара) 

Это сообщение отредактировал(а) Comm - 1.2.2009, 17:29


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Comm
Дата 1.2.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Желательно что бы ползунок отображался так же как и в TMemo в Project-е который прилагается,у кого есть время посмотрите пожалуйста..заранее спасибо
З.Ы. Пишу в C++ Builder 6.

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  ______.rar 342,70 Kb


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Comm
Дата 1.2.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile  smile  smile  Незнаю что уже делать,проект висит (


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
586
Дата 1.2.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Цитата(Comm @  9.1.2009,  21:42 Найти цитируемый пост)
Вроде как бы и работает но когда ползунок прокручиваешь до конца в низ... то строки 2-3 не доводится

Происходит это потому, что ползунок большой (увеличен на 2-3 единицы) и до конца не доходит. И StringGrid работает без учёта размера ползунка.
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TScrollInfo info;
  memset(&info,0,sizeof(info));
  info.cbSize=sizeof(info);
  info.fMask=SIF_ALL;
  if(GetScrollInfo(StringGrid1->Handle,SB_VERT,&info))
  { //ShowMessage(info.nMax);
  }else return;
  info.fMask = SIF_PAGE | SIF_RANGE;

  // ShowMessage(info.nMax);
   //ShowMessage(StringGrid1->RowCount);
  info.nPage=5*(info.nMax-info.nMin)/StringGrid1->RowCount;
  info.nMax += info.nPage;    // !!!!!
  //ShowMessage(info.nPage);
  SetScrollInfo(StringGrid1->Handle,SB_VERT,&info,true);
}

PM   Вверх
Comm
Дата 2.2.2009, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



586,спасибо большое...собственно в этом и заключалась трудность... я не понимал чем заполнять nMax ... +


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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