Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.052 c
14-1135688727
Ale_x_ey
2005-12-27 16:05
2006.01.22
Виртуальная машина


14-1135511079
Ламерюга
2005-12-25 14:44
2006.01.22
Как узнать значение переменной хранящейся в другой форме!


9-1123271153
Cash
2005-08-05 23:45
2006.01.22
Counter Line v0.130a


2-1136027458
GuAV
2005-12-31 14:10
2006.01.22
if Assigned(Self) then Result := FList else Result := EmptyList;


1-1134992575
Asail
2005-12-19 14:42
2006.01.22
Как отследить время простоя моего приложения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский