Марк
-
Постов
10 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Марк
-
-
Еще раз спасибо за помощь! Я воспользовался Вашим советом и создал массив( у меня несколько панелей с картинками) с элементами TBitmap(FImageStore :array of TObjectList<TBitmap>;)
Затем для каждой панели я создаю объект TObjectList<TBitmap>.Create;
А каждую исходную картинку я гружу так
n:=FImageStore[PageZal.PageIndex].Add(TBitmap.Create);
try
FImageStore[PageZal.PageIndex].Items[n].Assign(Bitmap);
finally
ImgList.TagObject:=FImageStore[PageZal.PageIndex].Items[n];
end;И когда нужно восстановить первоначальный вид то назначаю по клику на картинку через
Pic:=(Sender as TImage);
Pic.Bitmap.Assign(Pic.TagObect as TBitmap);
И все вроде работает.
Есть только еще один вопрос. При закрытии программы нужно ли освобождать этот массив объектов или нужно Освобождать Pic.TagObect ?
-
Спасибо за оперативный ответ! Только не понятно зачем TagObject у глобального компонента сделан "слабой ссылкой", т.е. фактически локальной переменной. А вот под виндой все сделано правильно. Вот Вам и многоплатформенность. Я конечно и сделал глобальную переменную(массив) где храню исходные картинки по индексам соответствующим индексам картинок.
Просто намного удобнее было использовать параметр конкретного компонента, тогда не надо делать индексный массив, а обращавшийся напрямую к параметру объекта. А стрим я храню вместо Bimap , т.к. при перегрузке картинки при использовании Assign, не перегружается картинка, если не очистить ее предварительно. Места как я понимаю занимают они одинаково.
-
Версия XE 10.1 Berlin
При переводе своего приложения работающего под ОС Windows на Андроид столкнулся со следующей проблемой.
Я вывожу динамически ряд картинок на панель используя компонент TImage. Затем эти картинки могут быть отредактированы.
Для восстановления первоначальной картинки использовал свойство объекта TagObject, куда загружал TMemoryStream, в который сохранял первоначальный объект TBitmap.
Когда необходимо восстановить картинку, то из ее TagObject грузил в Image.Bitmap.
Под ОС Windows все работало отлично. Но вот когда попітался то же сделать для Android ничего не вышло.
Оказалось что попытка создать объект путем стандартной операции Image2.TagObject:=TMemoryStream.Create; ни к чему не приводит. Т.е. почему то TagObject остается равным NIL. TagObject можно присвоить только переменную потока после ее создания. Но не скопировать ее значение в TagObject. Т.е. хранить не получается.
Не могли бы подсказать в чем дело. Прилагаю тестовый исходник. В нем есть 2 картинки и 2 кнопки. По первой кнопке сохраняем 1 картинку в TagObject второй. По второй кнопке загружаем из TagObject в Bitmap первую картинку.
При компиляции под виндой все ОК, под андроидом - ошибка.
-
Будем считать вопрос закрыт. Но ответа как задать параметр выводить и дату и время в Пикере я так и не получил.
-
Но в винде такого нет. А как же кросс-платформенность и один и тот же код для винды и андроида?
-
Да. Так подходит. А родной компонент так не может?
Т.е. как я понимаю,надо докупить библиотеку от TMS или писать свой пикер
-
1. Действительно при задании такого формата показывает и время и дату.
2. Но вот в чем проблема- Вопрос стоял как вывести "Picker" в котором можно выбрать и дату и время. А при использовании компонента TTimeEdit "Picker" не выводится, а есть возможность только увеличить или уменьшить выделенное значение.
3. Таким образом вопрос остается открытым.
-
Используем для редактирования даты и времени компонент TDateEdit. При нажатии на правую галочку выводится календарь, но в нем можно выбрать только дату.
Насколько я понял из хелпа используется стандартный "Picker". Там же написано, что он может работать как в режиме отображения только даты, так и в режиме даты и времени.
Каким образом можно задать этот режим. Или надо писать свой компонент, с выводом даты и времени?
-
При настройке компонента MultiVie параметр SplitViewOptions может принимать значения Left/Right
При этом панель будет в режиме Drawer выезжать слева или справа. Что нужно предпринять чтобы эта панель выезжала снизу или сверху.
Или этот компонент этого не может и надо писать свой на базе TCustomMultiView. Тогда подскажите как это сделать.
ошибка при компиляции под Андроид [DCC Error] E2597
в Отладка
Опубликовано
Не понятная ошибка при компиляции проекта, в режиме дебагера под андроид -[DCC Error] E2597 D:\Developments\ForAndroidTab\Sourse/Configurator.pas:322: error: undefined reference to 'Applmain::MainForm'
Ошибка начала появляться вдруг после очередной коррекции программы. До этого такого не было и все компилировалось сразу без перестройки проекта.
По названию уже понятно что MainForm это главная форма из которой вызываются все остальные модули. В модуле Configurator естественно есть указание на эту форму в uses.
Если сделать Build, то после этого все компилируется отлично и программа запускается на андроид планшете.
Но достаточно изменить хотя бы один символ в любом модуле проекта ошибка повторяется и необходимо опять запускать Build.
Может кто -то знает как с этим бороться, не переставляя всю среду. То что нашел по такой ошибке это совет проверить что стоит конфигурация Андроид в опциях библиотек. Проверил - стоит.
Пользуюсь версией Berlin 10.1. SDK 25.2.5