Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2011, 10:54   #1
CrHD
 
Регистрация: 19.05.2009
Сообщений: 8
По умолчанию Связать пару объектов

Приветствую.
Есть класс TReport;
Report.Items[i].Edits[j], где Edits - массив строк. И есть массив типа TcxTextEdit. Как их связать, что бы передавать аргументом TcxTextEdit, и мне бы возвращался TReport с нужным эдитом, в который мне нужно записать инфу из того самого TcxTextEdit.Text?

Есть мысль создать класс, и связывать там объекты, толкая каждый из них в свой TList.
Но что-то я в тупике...
CrHD вне форума Ответить с цитированием
Старый 07.11.2011, 11:19   #2
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Код:
Report.Items[i].Edits.Text:=cxTextEdit.Text;
Lesha вне форума Ответить с цитированием
Старый 07.11.2011, 11:37   #3
CrHD
 
Регистрация: 19.05.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Lesha Посмотреть сообщение
Код:
Report.Items[i].Edits.Text:=cxTextEdit.Text;
Видимо я плохо сформулировал вопрос...
Необходим класс посредник, в котором бы хранились два массива объектов.
В классе нужен геттер: пытаемся получить Edit[x] => передаем в класс cxTextEdit[x], и метод в классе ищет в массиве cxTextEdit'ов тот, который мы передали, и выводит нам нужный Report.Items[].Edit[];
Так же и сеттер, для установки значения Report.Items[].Edit[] из cxTextEdit.
Что-то вроде реализации паттерна "Посредник"...

На данный момент храню оба объекта в TList
Код:
procedure TLink.AddLink(Obj, Control: TObject);
begin
  FObj.Add(Obj);
  FControl.Add(Control);
end;

//получаю значение Report.items[].edits[] по переданному в функцию контролу (TcxEditText);
function TLink.GetObj(Control: TObject): TObject;
var
  i:Integer;
begin
  result:=nil;
  for i:=0 to FControl.Count-1 do
    if FControl[i]=Control then
      Result:=FObj[i];
end;
Зачем вы отвечаете с цитированием всего предыдущего поста ?
Чтоб "простыня" подлиннее получилась ?
Чтоб ваш "драгоценнейший" пост занимал весь экран ?
Вы не видите кнопку справа от кнопки "Цитата" ?
Или вам почему-то не видно пустое окно редактора под последним сообщением, куда можно просто ввести ответ ?
За оверквотинг у нас штрафуют, имейте это ввиду.
Дабы не нарушать правила раздела, внимательно их почитайте...
После 10 ваших сообщений начнете получать штрафы за нарушение правил...

Последний раз редактировалось mihali4; 07.11.2011 в 13:04.
CrHD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
пару антивирусов? FullVenic Безопасность, Шифрование 8 27.01.2011 02:58
Пару вопросов Syltan Свободное общение 2 19.10.2009 01:45
Delphi Как связать и хранить кучу объектов? Эльфийский Помощь студентам 9 21.08.2009 01:40