Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизМассив объектов Найти похожие ветки
← →
Grey_g (2003-05-28 07:39) [0]Вопрос: можно ли создать какой-нибудь массив объектов, чтобы в дальнейшем можно было присвоить какое-то свойство всем и сразу(например Label"ов штук так 100)?
← →
Anatoly Podgoretsky (2003-05-28 07:50) [1]Можно, а всем и сразу не возможно в принципе
← →
Forester (2003-05-28 08:08) [2]Можно создать наследника TObjectList с определенным свойством, в методе записи которого прописать код установки свойств элементов списка. Тогда присвоение значения свойствам 100 TLabel сведется к одной строке.
TLabelList=class(TObjectList)
...
private
procedure SetCaption(const Value:TCaption);
public
property ItemsCaption:TCaption write SetCaption;
end;
...
implementation
...
procedure TLabelList.SetCaption(const Value:TCaption);
var
i:integer;
begin
for i:=0 to Count-1 do
if Items[i] is TLabel then
(Items[i] as TLabel).Caption:=Value;
end;
...
← →
Palladin (2003-05-28 08:37) [3]
> Grey_g © (28.05.03 07:39)
ты когданибудь пробовал из одного пистолета залить 105 баков?
← →
Skier (2003-05-28 08:59) [4]>Forester (28.05.03 08:08)
Лучше так :
TLabelList = class(TObjectList)
private
procedure SetCaption(const Value:TCaption);
protected
function GetItem(Index: Integer): TLabel;
procedure SetItem(Index: Integer; AObject: TLabel);
public
property Items[Index: Integer]: TLabel read GetItem write SetItem; default;
property ItemsCaption:TCaption write SetCaption;
end; //TLabelList
← →
Skier (2003-05-28 09:00) [5]+
public
function Add(AObject: TLabel): Integer;
← →
Levan Varshanidze (2003-05-28 09:28) [6]ИЗ книги Фаронова "Учебник по Делфи 4"
(может: точно не помню: но смысд понятеен)
"Замечательгой особенностью TsringList являктсф то, что он в каждом элементе хранит string и Tobject"
пример
procedure TForm1.Button1Click(Sender: TObject);
var ll:tstringlist;
i:integer;
begin
ll:=tstringlist.Create();
ll.AddObject("",label1);
ll.AddObject("",checkbox1);
for i:=0 to ll.Count-1 do
twincontrol(ll.Objects[i]).Visible:=fa;se;
end;
Здесь label1,checkbox1 e.t.c суть какието объекти
a twincontrol(ll.objects[i]) суть приведение Tobject-а к
нужному типу, у которого есть требуемое свойство
(конечно, заранее надо бить уверенным, что приведенгие
ll.jbjectss[i] к типу twincontrol не приведет к исключению
попробуйте, может пригодиться
← →
Levan Varshanidze (2003-05-28 09:33) [7]Ох уж эти мои злополучные опечатки....
Извините
← →
Tano (2003-05-28 18:45) [8]Самое простое, что можно сделать:
var
aLabels :array[1..100] of TLable; //глобальная переменная
......
//создание - в TForm1.FormCreate()
for i:=1 to 100 do
begin
aLabels[i]:=TLabel.Create(self);
aLabels[i].Parent:=self;
/// другие свойства - по вкусу
end;
//удаление - в TForm1.FormDestroy()
for i:=1 to 100 do
aLabels[i].Free;
Соответственно всегда можно обратиться к любому элементу массива: aLabels[i].свойство
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c