Главная страница
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.026 c
2-1135758673
darvin
2005-12-28 11:31
2006.01.22
ДПФ пример программной реализации Delphi


8-1123675869
dDan
2005-08-10 16:11
2006.01.22
Очистить канву PaintBox а


11-1117425801
dvk
2005-05-30 08:03
2006.01.22
Как подключить OBJ-файлы


2-1135708630
Chester
2005-12-27 21:37
2006.01.22
Народ как правильно поставить счётчик?


14-1135763190
Igorek
2005-12-28 12:46
2006.01.22
Операции над "двоичными строками"