Удаление объектов, отключение горизонтальной прокрутки на TGrid (Delphi XE5 + iPad)

Сейчас я работаю над приложением для iPad, которое использует TGrid с динамически создаваемым контентом.

Но это доставляет мне некоторые проблемы: по какой-то причине я не могу освободить и освободить объекты, добавленные в TGrid (удаление их снова). В Windows FreeAndNil решает эту проблему, но в настоящее время FreeAndNil ничего не делает в Mac Simulator или на устройстве iPad. Единственное решение, которое я мог бы придумать, - установить RowCount на соответствующую сумму, но элементы управления все еще присутствуют, и это перезаписывается.

Также возможно ли как-то отключить горизонтальную прокрутку в TGrid, или мне нужно было бы реализовать собственный элемент управления для этого?

2 ответа

Решение

На мобильных платформах с ARC, Free/FreeAndNil не сразу освобождает объект. См . Методы Free и DisposeOf в разделе ARC.

Вместо этого используйте DisposeOf (), который немедленно вызовет деструктор.

DisposeOf форсирует выполнение кода деструктора в объекте. Новые мобильные компиляторы Delphi представляют новый шаблон dispose, реализованный путем вызова DisposeOf, который выполняет код деструктора, даже если есть переменные с отложенными ссылками на объект. После вызова метода DisposeOf объект переводится в особое состояние, состояние Disposed. Это означает, что деструктор не вызывается снова, если DisposeOf вызывается снова или если счетчик ссылок достигает нуля (момент, когда освобождается память).

Также возможно как-то отключить горизонтальную прокрутку в TGrid...

Конечно, просто измените размер столбцов в соответствии с размером сетки. Или, если вы не можете сделать это, поиграйте со свойством TColumn.Visible. Если сумма witdh видимых столбцов меньше ширины сетки, у вас не будет скроллера. Но без скроллера вы должны иметь дело с ходьбой влево и вправо по сетке.

Пример: сетка с 5 столбцами, видны только первые 2 и кнопки слева и справа. когда нажата правая кнопка, крайний левый видимый столбец 0 становится невидимым, а столбец 2 становится видимым / теперь столбцы 1 и 2 видны /.

Другие вопросы по тегам