На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Указатели на свойство объектов в массив.
    Имеется н-ное количество разношерстных vcl компонентов в которых нужно менять текстовое поле. Можно ли создать указатели на поля в массив, что бы потом менять эти значения через массив.
    Пример до:
    Label1->Caption= "aaa";
    Edit1->Text= "bbb";
    Пример после занесения указателей в массив:
    PText[0] ="aaa";
    PText[1] ="bbb";
    Соответсвенно в элементах поменялся текст.
      Нельзя. Все текстовые поля - область владения компонента, поэтому когда вы меняете строку, то меняется и сам класс TWideChar или вроде того. А, задавая изменение через внешнее PText=..., вы, тем самым, желаете извне распоряжаться классом строки, что неправильно с т.з. компонента.
      Можно, конечно, засунуть в каждую строку длиннющую последовательность, а потом заполучить .c_str() - указатель на wchar_t, и затем в нём шалить аки вздумается, но ход сей весьма кривоват... :yes-sad:
        Цитата mishapk @
        Имеется н-ное количество разношерстных vcl компонентов в которых нужно менять текстовое поле. Можно ли создать указатели на поля в массив, что бы потом менять эти значения

        Наверное, надо попробовать сделать классы-адаптеры для объектов типа "Label1" и "Edit1";
        Определить интерфейс типа "присвоить строку" и указать для него метод "operator=".

        У адаптеров-наследников интерфейса "присвоить строку" реализовать операцию "operator=",
        которая и будет для каждого указанного типа объекта делать необходимое:
        Label1->Caption= "aaa";
        или
        Edit1->Text= "bbb";

        После чего, определить массив указателей на интерфейсы "присвоить строку",
        занести туда указатели на адаптеры, которые будут преобразованы к типу интерфейса "присвоить строку".
        Как-то так.
        -----
        Вариант 2:
        Делаем класс-адаптер, который работает одновременно со всеми необходимыми типами указателей.
        Используем массив адаптеров.
        И это всё.
        Сообщение отредактировано: ЫукпШ -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0209 ]   [ 16 queries used ]   [ Generated: 28.03.24, 21:07 GMT ]