Главная страница
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.018 c
8-46011
farhad
2002-07-23 15:03
2002.11.14
Использование графики (bmp) в меню.


3-45682
myor
2002-10-24 16:34
2002.11.14
win1251 (d6+ib6+win98/xp)


1-45897
UNI_DeMoN
2002-11-06 02:33
2002.11.14
ОООЧЕнь нужны алгоритмы для разбора предложения на предикаты


4-46197
Sural
2002-10-05 06:24
2002.11.14
Как эмулировать мышь и клаву?


1-45972
Valt
2002-11-04 15:37
2002.11.14
Вид окна при разных разрешениях