На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania 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:
        Делаем класс-адаптер, который работает одновременно со всеми необходимыми типами указателей.
        Используем массив адаптеров.
        И это всё.
        Сообщение отредактировано: ЫукпШ -
        Подпись была выключена в связи с наложенным заземлением.
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script Execution time: 0,0604 ]   [ 15 queries used ]   [ Generated: 20.07.19, 15:58 GMT ]