IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Массив объектов!
сообщение
Сообщение #1


Гость






НАРОД, поможите как сделать массив из объектов в Дельфях!!!!
Допустим, у меня на форме 10 Эдитов.. надо что бы они принадлежали массиву A ... первый едит - А[1]... и так далее.. и чтобы я мог обращатся к ним так - допустимм A[4].text:='ага гаа' !!!!!!!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 156
Пол: Мужской

Репутация: -  0  +


Допустим у тебя на форме стоит 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

Все всегда уезжают навсегда. Вернуться невозможно-вместо нас всегда возвращается кто-то другой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 23

Репутация: -  0  +


Робята, а зачем нужен массив Editов? Не проще ли работать с ними по отдельности?


--------------------
Человек должен думать, а компьютер работать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 156
Пол: Мужской

Репутация: -  0  +


Нет не проще, представим себе, что этих Edit'ов стоит например 100, а операции над ними надо сделать однотипные, например надо все очистить - тогда можно написать компактный код:

for i:=0 to 99 do MyArray[i].text:='';

Если таких массовых операций много, то можно сделать код значительно компактнее.


--------------------
With the best regards Vit

Все всегда уезжают навсегда. Вернуться невозможно-вместо нас всегда возвращается кто-то другой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 23

Репутация: -  0  +


Дак, ведь обычно имена-то у них разные. Если на форме 100 Edit'ов и у всех имена Editxx, то в них без поллитры не разберешся, а если разберешся, то утром все равно не вспомнишь.


--------------------
Человек должен думать, а компьютер работать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


SAB
написано же было - это делается для удобства и компактности кода
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  1  +


Если нужно сделать одотипные операции, то порождаешь объект от TEdit и добовляешь обработчик своего события.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


Nightmare
ты о чём?
ты видимо не догоняешь...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  1  +


Я о том, для чего был нужен этот массив.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


да о чём мы?
автор спросил, что ему надо было, ему ответили, стало быть зачем-то надо было, это в конце концов его проблемы ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  1  +


Ладно, проехали.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Это кусок кода моей программы учета кабелей
с генерацией динамических компонентов
которые изображ муфты
-=-=-=-=-=-=
перед их генерацией программа находит их
в базе данных
-=-=-=-=--=
муфты(компоненты) находяться в массиве
-=-=-=-=-=-=

Код

{
 генерируем найденные данные в виде панелек муфт
}
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 -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


: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 -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


кому это байда нужна, сабж вроде как уже проехали
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 2:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name