Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

динамический массив из компонентов   Найти похожие ветки 

 
Suvit   (2005-01-20 11:20) [0]

есть такой код для Билдера

 Memo* memos[]={Memo1,Memo2};
 memos[((TComponent*)Sender)->Tag]->Lines->LoadFromFile

Подскажите как его переделать для Delphi, интересует как можно в делфи легко создать массив из некоторых компонентов формы.


 
Poirot ©   (2005-01-20 11:24) [1]

memo : array of TMemo
SetLength(memo, 2);
memo[0] = Memo1;
memo[1] = Memo2;
Что-то вроде этого..
memos[((Sender as TComponent ).Tag].Lines.LoadFromFile()


 
Suvit   (2005-01-20 11:27) [2]

т.е. в если мемов будет к примеру 100 мне надо каждый элемент завоить руками?

а как нибудь так
memos = [ Memo1, Memo2, ... Memo100];
нельзя?


 
Style ©   (2005-01-20 11:30) [3]


> а как нибудь так
> memos = [ Memo1, Memo2, ... Memo100];
> нельзя?

А это что ни руками???

А тебе какая разница как руками вводить - Так или Сяк ??? :)))


 
Poirot ©   (2005-01-20 11:32) [4]

боюсь что нет... хотя в последних делфях аля 2005 всё мб и возможно...


 
Suvit   (2005-01-20 11:32) [5]


> А это что ни руками???
>
> А тебе какая разница как руками вводить - Так или Сяк ???
> :)))

понял, буду использовать TComponent.Conponents


 
Poirot ©   (2005-01-20 11:37) [6]

ЗЫ:
>>Memo* memos[]={Memo1,Memo2};
По IMHO Это не динамический массив, а как раз статический:) елси я ничего не путаю)


 
Suvit   (2005-01-20 11:44) [7]


> ЗЫ:
> >>Memo* memos[]={Memo1,Memo2};
> По IMHO Это не динамический массив, а как раз статический:)
> елси я ничего не путаю)

+1
динамический как так
 (Memo*)* memos


 
Style ©   (2005-01-20 11:47) [8]

На наслаждайся :)))

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) [9]

неа... не динамический... при таком объявлении это статика.. ибо память видуляется в стеке под этот массив, а вот если делать через new тогда просто так присвоить не получится...
конечно я ненаю, что там борланд с С придумал в биледре, но в С всю жизть было так именно:)
(Memo*)* memos - это совершенно другое объявление


 
Suvit   (2005-01-20 11:53) [10]


> неа... не динамический... при таком объявлении это статика..
> ибо память видуляется в стеке под этот массив, а вот если
> делать через new тогда просто так присвоить не получится...
> конечно я ненаю, что там борланд с С придумал в биледре,
> но в С всю жизть было так именно:)
> (Memo*)* memos - это совершенно другое объявление

понял, можно вызывать TMemo.Create
только им потом leftы и topы надо будет выставлять, что лень сделать :))


 
Poirot ©   (2005-01-20 11:58) [11]

Сделай проще. Сделай не массив а что-то типа списка связангого и работай сн им, а для удобства инкапсулируй это всё в какой нить класс и сделай у него дефолтным свойство напрмиер

property Items[Index:Integer]:TMemo read GerProc write GetProc; default;

и всё буит так как ты хочешь:) ООП блин:)


 
Suvit   (2005-01-20 12:32) [12]

да я уже TObjectList взял, только получать из него плохо, все время кастовать приходиться



Страницы: 1 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
4-1102793329
Zahar
2004-12-11 22:28
2005.01.30
Как узнать версию программы?


1-1106132778
Denmin
2005-01-19 14:06
2005.01.30
Есть ли что-нибудь похожее на Pos, но чтобы искал с конца слова?


1-1105080743
GrayFace
2005-01-07 09:52
2005.01.30
Что такое packed array и packed record?


1-1106041780
COOLer
2005-01-18 12:49
2005.01.30
Помогите перевести кусок кода С++ на делфи


14-1105435700
Ozone
2005-01-11 12:28
2005.01.30
Как узнать модель телефона.