![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
динамический массив из компонентов [D7, WinXP]
Suvit © (2005-01-20 11:20:00)есть такой код для Билдера
Memo* memos[]={Memo1,Memo2};
memos[((TComponent*)Sender)->Tag]->Lines->LoadFromFile
Подскажите как его переделать для Delphi, интересует как можно в делфи легко создать массив из некоторых компонентов формы.
Suvit (2005-01-20 12:32:00) [1]да я уже TObjectList взял, только получать из него плохо, все время кастовать приходиться
Poirot (2005-01-20 11:58:00) [2]Сделай проще. Сделай не массив а что-то типа списка связангого и работай сн им, а для удобства инкапсулируй это всё в какой нить класс и сделай у него дефолтным свойство напрмиер
property Items[Index:Integer]:TMemo read GerProc write GetProc; default;
и всё буит так как ты хочешь:) ООП блин:)
Suvit (2005-01-20 11:53:00) [3]
> неа... не динамический... при таком объявлении это статика..
> ибо память видуляется в стеке под этот массив, а вот если
> делать через new тогда просто так присвоить не получится...
> конечно я ненаю, что там борланд с С придумал в биледре,
> но в С всю жизть было так именно:)
> (Memo*)* memos - это совершенно другое объявление
понял, можно вызывать TMemo.Create
только им потом leftы и topы надо будет выставлять, что лень сделать :))
Style (2005-01-20 11:47:00) [4]На наслаждайся :)))
type
TMemoArray = array of TMemo;
...
function TForm1.AddArr(const Args: array of TMemo): TMemoArray;
begin
SetLength(result, Length(Args));
CopyMemory(result,@Args, sizeof(Args));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ar: TMemoArray;
begin
ar := AddArr([Memo1, Memo2,Memo3]);
ar[0].Lines.Text := 'Ops';
end;
Poirot (2005-01-20 11:47:00) [5]неа... не динамический... при таком объявлении это статика.. ибо память видуляется в стеке под этот массив, а вот если делать через new тогда просто так присвоить не получится...
конечно я ненаю, что там борланд с С придумал в биледре, но в С всю жизть было так именно:)
(Memo*)* memos - это совершенно другое объявление
Suvit (2005-01-20 11:44:00) [6]
> ЗЫ:
> >>Memo* memos[]={Memo1,Memo2};
> По IMHO Это не динамический массив, а как раз статический:)
> елси я ничего не путаю)
+1
динамический как так
(Memo*)* memos
Poirot (2005-01-20 11:37:00) [7]ЗЫ:
>>Memo* memos[]={Memo1,Memo2};
По IMHO Это не динамический массив, а как раз статический:) елси я ничего не путаю)
Poirot (2005-01-20 11:32:00) [8]боюсь что нет... хотя в последних делфях аля 2005 всё мб и возможно...
Suvit (2005-01-20 11:32:00) [9]
> А это что ни руками???
>
> А тебе какая разница как руками вводить - Так или Сяк ???
> :)))
понял, буду использовать TComponent.Conponents
Style (2005-01-20 11:30:00) [10]
> а как нибудь так
> memos = [ Memo1, Memo2, ... Memo100];
> нельзя?
А это что ни руками???
А тебе какая разница как руками вводить - Так или Сяк ??? :)))
Suvit (2005-01-20 11:27:00) [11]т.е. в если мемов будет к примеру 100 мне надо каждый элемент завоить руками?
а как нибудь так
memos = [ Memo1, Memo2, ... Memo100];
нельзя?
Poirot (2005-01-20 11:24:00) [12]memo : array of TMemo
SetLength(memo, 2);
memo[0] = Memo1;
memo[1] = Memo2;
Что-то вроде этого..
memos[((Sender as TComponent ).Tag].Lines.LoadFromFile()