Форум: Форум C++Разное
Новые темы: 00
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничный вывод динамически созданных объектов.
 
 автор: EvgenLog   (28.02.2007 в 12:14)   письмо автору
 
 

Вот насоздавал я кучу объектов, а они не влазят в один экран, полосу прокрутки использовать не желательно. Как сделать постраничный вывод этих объектов?

Спасибо.

P.S. Пример пожалуйста на Visual C#.

  Ответить  
 
 автор: cheops   (28.02.2007 в 12:51)   письмо автору
 
   для: EvgenLog   (28.02.2007 в 12:14)
 

Элементы у вас в массиве находятся?

  Ответить  
 
 автор: EvgenLog   (28.02.2007 в 14:44)   письмо автору
 
   для: cheops   (28.02.2007 в 12:51)
 

Вот так они создаются....


TotalNumCounter = 0;
            AddToLocationY  = 0;
            while (TotalNumCounter < TotalNum)
            {
                SplitSubStr = SplitAllFile[TotalNumCounter].Split(new Char[] { '_' });

                if (SplitSubStr[15].Trim() == ActName)
                {
                    CorpName[TotalNumCounter] = new System.Windows.Forms.LinkLabel();

                    CorpName[TotalNumCounter].AutoSize = true;
                    CorpName[TotalNumCounter].Location = new System.Drawing.Point(10, AddToLocationY + 10);
                    CorpName[TotalNumCounter].Name = Convert.ToString("NewLinkLabel" + TotalNumCounter);
                    CorpName[TotalNumCounter].Text = (TotalNumCounter + 1) + ". " + SplitSubStr[1].Trim();
                    CorpName[TotalNumCounter].Parent = this.panel3;

                    LocationY = CorpName[TotalNumCounter].Location.Y + 20;
                    CorpComInform[TotalNumCounter] = new System.Windows.Forms.Label();

                    CorpComInform[TotalNumCounter].AutoSize = true;
                    CorpComInform[TotalNumCounter].Location = new System.Drawing.Point(10, LocationY);
                    CorpComInform[TotalNumCounter].Name = Convert.ToString("NewLabel" + TotalNumCounter);
                    CorpComInform[TotalNumCounter].Text = "Общая информация:";
                    CorpComInform[TotalNumCounter].Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                    CorpComInform[TotalNumCounter].Parent = this.panel3;
.
.
.
                    AddToLocationY += (CorpFilInform[TotalNumCounter].Location.Y + (TotalNumCounterFil*80)) - CorpName[TotalNumCounter].Location.Y;
                }
                TotalNumCounter++;
            }

  Ответить  
 
 автор: cheops   (28.02.2007 в 22:42)   письмо автору
 
   для: EvgenLog   (28.02.2007 в 14:44)
 

Используйте вместо цикла while(), цикл for(), при этом вычисляйте начало страницы по формуле
int begin = (page - 1)*pnumber;

где page - номер страницы (начинается с 1), а pnumber - количество позиций на странице. Тогда цикл будет выглдяте следующий образом
for(int TotalNumCounter = begin; TotalNumCounter < begin + pnumber; TotalNumCounter++)
{
...
}

при переходе на другую страницу (тут наверное разумнее прибегнуть к wizard) увеличиваете page на единицу, при возврате - уменьшайте.

  Ответить  
 
 автор: EvgenLog   (01.03.2007 в 14:29)   письмо автору
 
   для: cheops   (28.02.2007 в 22:42)
 

Спасибо, попробую разобраться.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования