Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-26388
Wasilla
2003-05-21 14:04
2003.06.09
LangDriver in Table(change)


14-26750
Markizzz
2003-05-22 21:37
2003.06.09
Счётчики для сайта


1-26437
Andrey V.
2003-05-29 07:38
2003.06.09
закрытие формы


1-26543
daos
2003-05-25 16:56
2003.06.09
Пмогите нарисовать двоичное дерево!!!!


14-26649
Kesha
2003-05-20 18:51
2003.06.09
Outlook Email Resolve





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский