![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Help_mE! |
![]()
Сообщение
#1
|
Гость ![]() |
НАРОД, поможите как сделать массив из объектов в Дельфях!!!!
Допустим, у меня на форме 10 Эдитов.. надо что бы они принадлежали массиву A ... первый едит - А[1]... и так далее.. и чтобы я мог обращатся к ним так - допустимм A[4].text:='ага гаа' !!!!!!!! |
Vit |
![]()
Сообщение
#2
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 156 Пол: Мужской Репутация: ![]() ![]() ![]() |
Допустим у тебя на форме стоит 10 Edit'ов - Edit1..Edit10
Тогда объявляем массив: Var e:array[1..10] of TEdit; Заполняем массив: For i:=1 to 10 do E[i]:=FindComponent('Edit'+inttostr(i)) as TEdit; Теперь наслаждаемся работой с массивом: e[5].text:='It is me!'; -------------------- With the best regards Vit
Все всегда уезжают навсегда. Вернуться невозможно-вместо нас всегда возвращается кто-то другой |
SAB |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 23 Репутация: ![]() ![]() ![]() |
Робята, а зачем нужен массив Editов? Не проще ли работать с ними по отдельности?
-------------------- Человек должен думать, а компьютер работать.
|
Vit |
![]()
Сообщение
#4
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 156 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нет не проще, представим себе, что этих Edit'ов стоит например 100, а операции над ними надо сделать однотипные, например надо все очистить - тогда можно написать компактный код:
for i:=0 to 99 do MyArray[i].text:=''; Если таких массовых операций много, то можно сделать код значительно компактнее. -------------------- With the best regards Vit
Все всегда уезжают навсегда. Вернуться невозможно-вместо нас всегда возвращается кто-то другой |
SAB |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 23 Репутация: ![]() ![]() ![]() |
Дак, ведь обычно имена-то у них разные. Если на форме 100 Edit'ов и у всех имена Editxx, то в них без поллитры не разберешся, а если разберешся, то утром все равно не вспомнишь.
-------------------- Человек должен думать, а компьютер работать.
|
___ALex___ |
![]()
Сообщение
#6
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
SAB
написано же было - это делается для удобства и компактности кода |
Nightmare |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если нужно сделать одотипные операции, то порождаешь объект от TEdit и добовляешь обработчик своего события.
|
___ALex___ |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
Nightmare
ты о чём? ты видимо не догоняешь... |
Nightmare |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я о том, для чего был нужен этот массив.
|
___ALex___ |
![]()
Сообщение
#10
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
да о чём мы?
автор спросил, что ему надо было, ему ответили, стало быть зачем-то надо было, это в конце концов его проблемы ;) |
Nightmare |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ладно, проехали.
|
Shadow |
![]()
Сообщение
#12
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это кусок кода моей программы учета кабелей
с генерацией динамических компонентов которые изображ муфты -=-=-=-=-=-= перед их генерацией программа находит их в базе данных -=-=-=-=--= муфты(компоненты) находяться в массиве -=-=-=-=-=-= Код { генерируем найденные данные в виде панелек муфт } c:=Form7.Query1.FieldByName('Number').asInteger; c1:=Form7.Query1.FieldByName('Number').asString; // значение из активного поля колонки Number For i:=1 to Form7.Query1.RecordCount do begin MyPan[c] := TPanel.Create(Image1); MyPan[c].Name:='Pan' + c1; // генерируем имя компонента MyPan[c].height := 10; MyPan[c].width := 10; MyPan[c].BevelInner:=bvLowered; MyPan[c].caption :=Form7.Query1.FieldByName('Number').asString; MyPan[c].Cursor:=crHandPoint; MyPan[c].Color:=clWhite; // button1.Hint:='Hello Word'; // button1.ShowHint:=true; // Application.HintColor:=clAqua; Application.HintHidePause:=7500; MyPan[c].Hint:='Муфта '+Form7.Query1.FieldByName('NameMuf').asString+#13+#10+'расстояние от ТП '+Form7.Query1.FieldByName('LonFroTP').asString+#13+#10+'растояние до ТП '+Form7.Query1.FieldByName('LonGoTP').asString; MyPan[c].ShowHint:=True; MyPan[c].PopupMenu:=PopupMenu1; MyPan[c].left:=Form7.Query1.FieldByName('Mous_X').asInteger; MyPan[c].top:=Form7.Query1.FieldByName('Mous_Y').asInteger; MyPan[c].Parent :=ScrollBox1; MyPan[c].OnMouseMove:=MyPanMouseMov; MyPan[c].OnClick:=MyPanOnCl; Form7.Image1.Left:=0; Form7.Image1.Top:=0; Form7.Query1.Next; // следующая запись c:=Form7.Query1.FieldByName('Number').asInteger; c1:=Form7.Query1.FieldByName('Number').asString; end; end else exit; Block:=False; end; { Обработка события Движен Мыши над динамич панельками } Procedure TForm7.MyPanMouseMov(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Form7.Add1.Enabled:=False; Form7.Del1.Enabled:=True; // Label1.Caption:=((Sender as TPanel).Name); StatusBar1.Panels[4].Text:=((Sender as TPanel).Caption); { Вот тут самое интересное если бы не наткнулся на эту строку то долго бы еще парился как определить из какого динамичексго компонента пришло событие Sender --- отправитель } (Sender as TPanel).Color:=clRed; end; { Выборка динамического компонента из массива и его изничтожение как компонента, а так же из базы данных } Сообщение отредактировано: volvo - 5.01.2005 13:47 -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
Shadow |
![]()
Сообщение
#13
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
:D
-=-=-=-= а вот предварительная генерация его по обработке события щелчка мышки правой кнопки по полю Image =-=-=- Код private { Private declarations } public MyPan : array[1..99]of Tpanel; { Опишем массив в сотню Компонентов -1 класса TPanel } MufFilNames:String; //-------------- end; Const PsevBas : array [0..5] of String = ('z','v','s','k','l','c'); var Form7: TForm7; wx,wy:Integer;{Доступность переменных в разных формах} MyPanMouseMov:TMouseMoveEvent; MyPanOnCl:TNotifyEvent; implementation uses lbsd2, lbsd8, LBSD10; {$R *.dfm} { Монстрячим динамический компонент класса TPanel } procedure TForm7.Add1Click(Sender: TObject); Var Numb:Integer; MufFilN:String; begin Form7.Query1.Last; Numb:=Form7.Query1.FieldByName('Number').asInteger; { получаем количество записей в компоненте Query (количество найденых записей) } Numb:=Numb+1; { получаем следующий номер муфты (нового компонента) } MyPan[Numb] := TPanel.Create(Image1); { динамический компонент класса TPanel конструктор на событие Create (Создать) от компонента Inmage1 то есть получаем его свойства (задаем владельца нового компонента) } with MyPan[Numb] do BEGIN Parent :=ScrollBox1; // родитель компонента height := 4; // работает width := 4; // с новым caption := 'M'; // компонентом Cursor:=crHandPoint; Color:=clLime; left:=wx+Image1.Left; top:=wy+Image1.Top; END; { при создании нового компонента пишем его место расположения, имя номер и т.д в базу данных } With Form7.Table1 do begin Append; FieldByName('Number').AsInteger:=Numb; FieldByName('NameMuf').AsString:=Form7.NameMuft.Text; FieldByName('Lines').AsString:=ilLine.Caption; FieldByName('Fiders').AsString:=ilFider.Caption; MufFilN:=ilLine.Caption+ilFider.Caption+'MufIm'+ FieldByName('Number').AsString+PsevBas[Form2.IndexBas]; FieldByName('MufZaoz').AsString:=MufFilN; FieldByName('LonFroTp').AsInteger:=StrToInt(Form7.ot_TP.Text); FieldByName('LonGoTp').AsInteger:=StrToInt(Form7.k_TP.Text); FieldByName('Im_X').AsInteger:=Image1.Left; FieldByName('Im_Y').AsInteger:=Image1.Top; FieldByName('Mous_X').AsInteger:=wx; FieldByName('Mous_Y').AsInteger:=wy; Post; end; { после генерации панели создаем новую запись в базе данных и пишем туда данные } end; Сообщение отредактировано: volvo - 5.01.2005 13:54 -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
___ALex___ |
![]()
Сообщение
#14
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
кому это байда нужна, сабж вроде как уже проехали
|
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 23:37 |