Модуль MyItems
Писал для себя, поэтому долго не думал, как назвать :)
В модуле описан класс TMyItem, упрощающий работу с TListView в режиме таблицы (ViewStyle — vsReport).
type TMyItem=Class(TObject) Caption: String; SubItems: TStrings; constructor Create; destructor Destroy; override; procedure AddValueToItem(Value: String); procedure ApplyColumnWidthsToList(List: TListView); procedure AddItemToList(List: TListView); procedure ApplyColumnsToList(List: TListView); procedure ItemToMyItem(List: TListView; ItemIndex: Integer); procedure CaptionToMyItem(List: TListView); procedure CaptionWidthsToMyItem(List: TListView); function IsNumeric: Boolean; procedure StrToMyItem(s: String); function MyItemToStr: String; procedure Clear; function Count: Integer; end;
По порядку:
Caption и SubItems – аналогично элементам у TListView, решил их не прятать.
AddValueToItem – добавить значение. Если элемент ещё не заполнен, пойдёт в Caption, иначе в SubItems.
AddItemToList – добавить (скопировать) созданный элемент в указанный TListView.
ApplyColumnsToList – наш элемент содержит имена столбцов. Присвоить их.
ApplyColumnWidthsToList – наш элемент содержит ширину столбцов. Присвоить.
В последнем случае нам нужно быть уверенными, что все элементы легко преобразуются в целые числа, иначе вызывается исключение. Для этого можно воспользоваться функцией IsNumeric.
ItemToMyItem – наоборот, берём информацию из существующего элемента TListView.
CaptionToMyItem, CaptionWidthsToMyItem – ApplyColumnsToList и ApplyColumnWidthsToList в обратном направлении.
StrToMyItem – преобразуем строку в TMyItem. Формат строки: Caption|SubItem1|SubItem2|…
MyItemToStr – формируем такую строку.
Ещё один момент: если мы присваиваем заголовок, и где-нибудь есть знак %, то он исчезнет, а у столбца появится свойство Tag=1. И в обратную сторону знак процента появится, если стоит Tag=1.
И при копировании материала с блога, обязательно оставляйте прямую ссылка на http://parsers.info.
В своё время пришлось помучиться с TListView, ибо логически не сразу понятно, как работать с элементами в режиме таблицы. С этими и другими проблемами очень помогали форумы программистов. А сейчас этот модуль написал за две поездки в метро :)
Virtual Tree пробовали?
Нет) Посмотрю, спасибо
Отлично. давно искал. спасибо
Давненько искал, что то подобное и вот вуаля, благодарю. парсерс!!!