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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 22:11   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Забрать текст из опредеённого Edit Tab (TabControl)

Есть динамический массив и TabControl. Пытаюсь реализовать работу с вкладками как в QIP. Возникла проблема с взятием текста из Edit определённой вкладки, зато со вставкой проблем нет.
Код:
procedure TFormPrivate.TabControl1Change(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Length(TD) - 1 do
  begin
    if TabControl1.TabIndex = TD[i].TabIndex then
    begin
      LName.Caption := TD[i].Name;
      LIP.Caption := TD[i].IP;
      TabControl1.TabIndex := i; // Перейдём на вкладку

      Edit1.Clear;
      Edit1.Text := TD[i].TempMessage; // Вставим текст
      Break;
    end;
  end;
end;
Делать привязку по индеку вкладки бесполезно, так как при удалении любой вкладки произойдёт сдвиг. Делать привязку к Caption тоже бесполезно, так как могут быть повторы. Если бы в TabControl1Change были параметры предыдущая вкладка и следующая вкладка, то было бы проще, но увы такого нет. Идеи кончились, а реализовать надо. Прошу помощи.
Shouldercannon вне форума Ответить с цитированием
Старый 14.12.2012, 22:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если динамический массив как тень вкладок, то удаляя вкладку с индексом n, удалить и соответствующий элемент массива. А уж в элементе массива, будь то record или класс держать соответствующий уникальный признак нет проблем. По этому признаку и определять индекс вкладки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2012, 22:59   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

С удалением нет проблем. Удаляется вкладка, а за ней и элемент массива. Но вся беда в том, что я при переключении между вкладками не могу забрать текст из Edit из текущей перед переходом на новую вкладку.
Shouldercannon вне форума Ответить с цитированием
Старый 14.12.2012, 23:02   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
но увы такого нет. Идеи кончились, а реализовать надо.
Наследуйте TTabControl и делайте свои навесы.

Когда мне нужна уникальность там где много однотипных объектов, я генерирую им всем уникальные id, и делаю отдельные методы чтобы выбирать объект по его uid.
Человек_Борща вне форума Ответить с цитированием
Старый 14.12.2012, 23:05   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

OnChanging срабатывает до перехода на новую вкладку. В нем текст можно забрать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.12.2012, 15:57   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
OnChanging срабатывает до перехода на новую вкладку. В нем текст можно забрать
То, что надо. Подскажите, как вызвать OnChanging, если OnChange вызываю так
Код:
TabControl1.OnChange(Self);
Так понимаю, что нужно как-то передать параметр AllowChange.
Shouldercannon вне форума Ответить с цитированием
Старый 15.12.2012, 16:35   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А зачем эти обработчики вызывать? Они работают при клике на табах. При программном изменении TabIndex они на автомате не работают, но вся информация и так известна. Что мешает? Перед изменением запомнил в массив что надо, после изменения выдернул из массива. Если уж вызывать, то OnChanging до изменения индекса, OnChange - после изменения с предусмотренными параметрами. Только не пойму нафига
var: MyBoolean: Boolean;
TabControl1.OnChanging(TabControl1, MyBoolean);
TabControl1.OnChange(TabControl1);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.12.2012 в 16:38.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить в текстовый файл текст из Memo и текст из нескольких Edit misher Общие вопросы Delphi 5 02.01.2011 15:37
Не работает Tab в дочерних диалогах Tab controla ajborman Win Api 1 25.11.2010 16:55
Проверить текст в Edit Nikone Общие вопросы Delphi 5 15.12.2009 18:46
Текст в Edit Simon..14 Общие вопросы C/C++ 7 18.01.2009 17:28
Edit и текст M@rsel Компоненты Delphi 2 23.03.2007 09:33