Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Требуется помощь в поиске ошибки   Найти похожие ветки 

 
saNat ©   (2005-12-29 01:11) [0]

Доброго времени суток :о)

Для проекта написан класс. В ScrollBox динамически создаются TPanel, связанные двусторонним списком.

//Объявление списка
TPListPanel=^TListPanel;

TListPanel=Record
 SinglePanel           :TPanel;
 LastPanel             :TPListPanel;
 NextPanel             :TPListPanel;
End;

//Объявление класса
TInfoPanel=Class(TObject)

  //Конструктор
  Constructor  Create(Parent:TWinControl);
  //Добавить элемент
  Procedure    Add;
  //Перейти вверх списка
  Procedure    UpList;
  //Перейти к верхнему элементу
  Procedure    LastItem;
  //Перйти к нижнему элементу
  Procedure    NextItem;
  //Перейти вниз списка
  Procedure    DownList;
  //Удалить текущий элемент
  Procedure    Delete;
  //Удалить все элементы
  Procedure    DeleteAll;
  //Деструктор
  Destructor   Destroy;                        Override;

 Private

  ScrollBox            :TScrollBox;
  //Текущий элемент и вспомогательная переменная
  HeadList,ThisItem    :TPListPanel;
  //Количество элементов
  CountPanel           :Integer;
  //Номер активного элемента
  ThisPanelNumber      :Integer;
  //Цвет элемента
  FItemColor           :TColor;
  //Цвет активного элемента
  FActiveItemColor     :TColor;

  Function     GetThisPanel:TPanel;
  Procedure    SetItemColor(Param:TColor);
  Procedure    SetActiveItemColor(Param:TColor);
  //Изменение цвета элементов
  Procedure    RePaint(Param:Boolean);

 Public

 Published

  //Указатель на элемент
  Property ThisPanel:TPanel
   Read     GetThisPanel;
  //Цвет текущего элемента
  Property ItemColor:TColor
   Write    SetItemColor;
  //Цвет активного элемента
  Property ActiveItemColor:TColor
   Write    SetActiveItemColor;

End;


Возникла следующая проблема. Выполняем последовательность:
1. Создаем такое количество элементов (TPanel), чтобы они "не помещались" по высоте (появляется ертикальный ScrollBar)
2. Переходим к последнему (нижнему элементу списка)
3. Добавляем новый элемент.
При этом он создаеттся не вверху списка. Помогите найти причину.
Алгоритм добавления нового элемента:
1. Создать новый элемент
2. Если он первый, установить активный цвет
3. Если имеются созданные элементы (HeadList<>Nil), перейти вверх списка (UpList), Установить связь со следующим нижним элементом. Вновь созданному присвоить активный цвет.
4. Увеличить счетчик количества элементов
5. Пересчитать свойство Increment и Range для нового количества элементов.

По наблюдениям, новый созданный элемент "не попадает" наверх. Ссылки между элементами сохранены.

Исходные файлы находятся в архиве (62 КБайт) и размещены по адресу "http://webfile.ru/720111".

Класс находится в модуле "InfoPanelUnit.pas". В архиве также находится проект в котором выполняется отладка.

С уважением, ЕВА


 
saNat ©   (2005-12-29 18:15) [1]

К начинающим перекинуто... Ну да ладно. Вопрос в силе.


 
saNat ©   (2006-01-05 00:31) [2]

Вот новогодние каникулы и завершились. Мастера, ни кто не может мне подсказать?

С уважением, ЕВА



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.057 c
4-1131393148
MAXHO
2005-11-07 22:52
2006.01.22
Как поместить все значки из трея на форму?


2-1136138892
SpyBoy
2006-01-01 21:08
2006.01.22
Всё тот же процесс-менеджер!


5-1123089950
Juice
2005-08-03 21:25
2006.01.22
Сохранение свойства-обьект


2-1136664055
Zikmu
2006-01-07 23:00
2006.01.22
Папки с иконками пользователя в поиске файлов


2-1134987889
Дева
2005-12-19 13:24
2006.01.22
счетчик в запросе