Форум: "Основная";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизНовые переменные Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c