Удаление объектов, отключение горизонтальной прокрутки на 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 видны /.