Была подобная тема
5 лет назад, а вопросы все те же.
Не пойму, что можно сделать с шириной колонки в созданном FormTableControl.
Проблема 1: в зависимости от выбора пользователя, к примеру, вторая колонка FormTableControl будет показывать или StringEdit или IntEdit, у которых должна быть разная ширина (StringEdit: 100, IntEdit: 50). Однако, ширина колонки, судя по всему, определяется раз и навсегда при первоначальной инициализации FormTableControl.
Проиллюстрирую на примере стандартной формы
tutorial_Form_Table.
На элементе EditLine установите свойство Width = 100 и перекройте метод modified:
X++:
public boolean modified()
{
boolean ret = super();
Table.update();
return ret;
}
На элементе IntEdit установите свойство Width = 50.
Наконец, измените метод Table.editControl таким образом:
X++:
FormControl editControl(int column, int row)
{
if ((column == 2) || (column == 4))
{
if (Table.cell(1,1).data() == 'AAA')
return editline;
else
return intEdit;
}
else
{
return editline;
}
}
После этого при открытии формы колонки №2 и 4 (IntEdit) будут в два раза уже колонок №1, 3 и 5 (StringEdit).
Введем
AAA в самое первое поле (в верхнем левом углу).
Дизайн обновится (колонки №2 и 4 будут показывать StringEdit), но ширина колонок при этом осталась 50, а не стала 100.
Для меня это большая проблема, так как я пытаюсь использовать FormTableControl на форме, где и количество колонок и их тип может динамически меняться, так что невозможность управлять шириной колонки, разумеется, портит всю картину.
Проблема 2 сопутствующая - почему невозможно изменять ширину колонки с помощью мыши таким же образом, как в FormGridControl? Есть возможность обойти это ограничение?
Подозреваю, что решение проблемы 2 автоматически решит проблему 1.