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

Вниз

Новые переменные   Найти похожие ветки 

 
Ramzes   (2002-11-03 18:06) [0]

Как не создавая новой компоненты, добавить в старую новые переменные:
Например, мне нужно добавить переменную Size пита Longint в ListView1.Items.Item[1], чтобы получилось ListView1.Items.Item[1].Size
Заранее спасибо за ответ.


 
BOA_KAA ©   (2002-11-03 18:14) [1]

Я бы не советовал этого делать, но если нужно, то через New Component вызываешь исходник, переделываешь и вперед


 
TTCustomDelphiMaster ©   (2002-11-03 18:55) [2]

У TListItem есть замечательное свойство Data. С помощью него можно добавить все что угодно.


 
Ramzes   (2002-11-03 20:04) [3]

А пример можно?


 
Ramzes   (2002-11-03 20:05) [4]

Или способ как получить новую переменную ListView1.Items.Item[1].Size типа Longint


 
Сатир ©   (2002-11-03 20:49) [5]

TSizeListBox = class (TListBox)
function GetSize (const AIndex:integer):longint;
public
property Size[const AIndex: integer]:longint
read Getsize ;default;
end;

implementation

function TSizeListBox.GetSize(const AIndex:integer):longint;
begin
if assigned(self.items.item[AIndex]) then
Result:= sizeof(self.items.item[AIndex])
else raise Exeception.Create("the value isn""t assigned!")
end;
end.

add: директива default позволяет обращаться к свойству таким макаром:
SizeListBox[1]
или
SizeListBox.size[1]


 
TTCustomDelphiMaster ©   (2002-11-03 21:06) [6]

ListView1.Items.Item[0].Data := Pointer(i);
i := LongInt(ListView1.Items.Item[0].Data);



 
Ramzes   (2002-11-03 21:20) [7]

Что-то я не очень понимаю.
А если, например, мне нужно добавить переменную Attr типа Byte и Name типа String в ListView1.Items.Item[1], чтобы получилось ListView1.Items.Item[1].Attr?

Как это получить?


 
TTCustomDelphiMaster ©   (2002-11-03 21:48) [8]

Тут для TreeView. Но для ListView тоже самое будет

_Александр_ (09.08.02 04:58)
Думаю,одним integer-ом дело не обойдётся :)...
Так, что сразу такой ответик:

1. Создаёшь новый тип
type
...
TMyRec = record
SomeInt : integer;
SomeByte : byte;
SomeString : string[50];
SomeFloat : real;
end;

TPMyRec = ^TMyRec;
...


2. Запись в Data (а быть точнее - создаём переменную нужного нам типа и передаём её адрес полю Data):

var
P : TPMyRec;
begin
...
New(P);
P^.SomeInt := 123;
P^.SomeByte := 255;
P^.SomeString := "abceklmn";
P^.SomeFloat := 3.14;
Твой_3Ноде.Data := P;
...
end;



3. Раз переменные создавал - нужно их и прибивать:

В событии OnDeletion TreeView-а:

if TTreeNode.Data <> nil then
Dispose(TPMyRec(TTreeNode.Data));



4. Чтение/запись значений
MyInt := TPMyRec(ListView1.Items[0].Data)^.SomeInt;
TPMyRec(ListView1.Items[0].Data)^.SomeByte := NewByte;


 
Юрий Зотов ©   (2002-11-03 22:13) [9]

> Ramzes

Без переделки или написания наследника - никак. Используйте свойство Data, он специально для того и сделано.



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-45980
First_May
2002-11-04 14:56
2002.11.14
MDI проект...


7-46156
BCPP_Builder_Dev
2002-09-12 14:27
2002.11.14
Коллеги! Как программно


3-45761
arkara
2002-10-23 10:50
2002.11.14
Объясните! Загадочные lookup поля в TQuery...


1-45849
MetalFan
2002-11-05 11:50
2002.11.14
TPrintDialog


1-45795
kofman
2002-11-02 13:50
2002.11.14
Как грамотно применить операцию @ применительно к процедуре?