kvantum
-
Постов
38 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные kvantum
-
-
Нужно ждать фикс
Ну ... фикс ! Когда он будет ? Нужно ведь сейчас писать... Что если заменить TFrame формой TForm, что думаешь ? Вопрос задан здесь: http://fire-monkey.ru/topic/914-android-tform-ili-tframe/
-
Здравствуйте !
Опираясь на вопрос http://fire-monkey.ru/topic/432-sovety-po-sozdaniiu-mobilnogo-prilozheniia-master-detail/?p=1638 и на осознанную на практике невозможность корректного уничтожения динамически созданного фрейма, вопрос http://fire-monkey.ru/topic/905-android-tframe-oshibka-pri-dinamicheskom-udaleniisozdanii/ хочу спросить, какие преимущества и недостатки в замене фреймов формами, если вместо фрейма динамически создавать форму и затем закрывать ее методом Close, указав в OnClose: Action:=TCloseAction.caFree; Пугает простота данного решения . В ЧЕМ ПОДВОХ ? :-)))
-
Вот, давно уже отрапортовал об этом поведении http://qc.embarcadero.com/wc/qcmain.aspx?d=127108
Embarcadero сообщило о каком-нибудь решении ?
-
-
Спасибо большое !
-
Здравствуйте !
Опираясь на тему "Архитектура приложения под Андроид на основе TFrame" был создан тестовый пример приложения на Андроид, в котором переключаемые фреймы создаются (удаляются) динамически. Суть ошибки: если в Frame1 ввести текст в строку и нажать кнопку перехода к Frame2 (правый верхний угол) - возникает ошибка. При уничтожении текущего фрейма клавиатура скрывается автоматически методом HideKeyboard :
if Assigned(fCurrentFrame) then begin HideKeyboard; fCurrentFrame.DisposeOf; fCurrentFrame:=nil; HideButtonsLayouts; end;
Прошу помочь в исправлении ошибки. Пример и скриншоты во вложении.
-
Спасибо, Ярослав, Вы как всегда на высоте!
Завершающий вопрос : в каком методе уничтожать созданную переменную Bitmap ?
Stream := CreateBlobStream(FieldByName('Data'), bmRead); try Bitmap:=TBitmap.Create; Bitmap.LoadFromStream(Stream); Item.StylesData['userimage.bitmap'] := TValue.From<TBitmap>(Bitmap); // Bitmap.Free; except end; Stream.Free;
-
И ... не работает. FindStyleResource возвращает nil
-
Здравствуйте !
Задача состоит в загрузке в элемент списка картинки из потока и установке значения текстовому свойству
StyleBook имеет вид, представленный на скриншоте.
Присвоение значения свойству userlogin реализуется как :
Item.StylesData['UserLogin.Text']:=FieldByName('Login').AsString;
Как по аналогии загрузить изображение в свойство userimage (по типу Image.Bitmap.LoadFromStream(Stream)) ?
-
Вы у всех выделенных мною контролов (myStyle1, layout1, description, headtext) на картинке установили HitTest = False?
Да именно так ! Полагаю, что раз подсветка элементов списка - свойство, общее для всех элементов списка - может быть есть смысл поработать со стилем всего списка, а не его итемов ?
-
Исправил на HitTest = False, но, к сожалению, фон активного элемента не подсвечивается
-
Здравствуйте !
На http://oilsoft-service.blogspot.ru/2013/11/android-delphi-xe5.html был приведен очень интересный пример создания пользовательского стиля для TListBoxItem. Во вложении содержится продублированный проект.
При запуске проекта под Анроидом цвет фона для выделенного элемента списка не меняется. Прошу помочь разобраться.
Вторая строка на обоих скриншотах выделена.
-
во-первых: отделяйте гуи от кода !
во вторых : раз у вас для каждой платформы обсолютно разная реализация интерфейса - сделайте базовую форму и рисуйте фрейм для каждой платформы в отдельных вьюхах
Спасибо ! Поясните пожалуйста насчет "рисуйте фрейм для каждой платформы в отдельных вьюхах"
-
Тогда теряется возможность использования мульти платформенного интерфейса.
-
Клик по итему
Как уже предыдущие пользователи правильно заметили, нажатие на итем в списке самый интуитивно понятный способ на мобильных платформах. По скольку это полностью совпадает с правилами построения пользовательского интерфейса на мобильных платформах.
- Не надо придумывать свои способы, когда уже есть стандартные. Этим вы только запутаете пользователя, привыкшего к общему принципу работы с любым приложением.
- Если вам такой способ нужен, то лучше перепроектируйте ваш интерфейс, чтобы этого избежать (смотрите пункт 1.)
Открытие нового вида
На счет этого, если вы делаете приложение под андроид, то я бы не рекомендовал для этих целей использовать TTabControl. По одной самой главной причине:
Потребление дополнительных ресурсов. Заставляет форму создавать все контролы на всех вкладках, даже на тех, что не видны.
Легко представить типичную ситуацию, когда ваше приложение довольно большое и содержит большое число форм ввода и редактирования данных. Теперь представьте, что все эти контролы создаются при запуске приложения и живут все время существования приложения. Это совсем не маленькие размеры памяти, особенно на Андроиде.
Ресурсы мобильной платформа не равны ресурсам настольных платформ. И если на настольной системе вы можете особо не заморачиваться о размере потребляемой памяти, так как ее много. То на мобильнике это может привести к нехватке памяти и как следствие разрушение вашего приложения.
Главная идея - это иметь в каждый момент времени только то, что нужно. Поэтому я бы лучше рассматривал либо создание отдельной формы, либо создание в рантайме специального слоя (вида), которые будет загружен по верх всего, а потом будет разрушен после окончания выполнения редактирования.
Так же советую использовать фреймы для таких функционально законченных блоков (редакторы сущности):
- Позволяет быстро и удобно создавать в нужное время на мобильной платформе требуемый вид. Забирая от системы ресурсы только в тот момент, когда они действительно необходимы.
- Повторное использование в других местах приложения.
Здравствуйте !
Идея использования фреймов в мобильных приложениях конечно интересная. Но как быть для случая multi - device designer интерфейса, который реализован в XE7 ? Создавать отдельный фрейм для каждой платформы ? Но в этом случае будет затруднена синхронизация связей (кода) между элементами таких платфорно-ориентированных фреймов.
Как быть ?
-
Здравствуйте !
Возникла необходимость в осуществлении отладки андроид-приложений на смартфоне.
Для отладки приложений на планшете Lenovo IdeaPad были реализованы рекомендации , приведенные по ссылке http://stackoverflow.com/questions/17931897/how-do-i-connect-a-lenovo-ideapad-s6000-to-windows-7-64-bit.
К сожалению, повторение описанных действий для смартфона Fly Evo Tech 4 не привело к ожидаемому результату
Драйверы для данного смартфона в Win7 x64 Prof установлены нормально, в диспетчере устройств неопознанных устройств нет.
На обоих устройствах активирован режим разработчика, включена отладка по USB
Прошу помочь в реализации отладки андроид-приложений на смартфоне
Скриншоты и android_winusb во вложении
-
Читал. Но там для C. Где найти обертку для Delphi ?
-
Здравствуйте !
В SQLite не работает lower() для не-ASCII символов. Например, Lower('Строка') вернет значение "Строка", а не "строка". Вычитал, что надо ставить SQLite IСU extention, но не понятно, как его ставить для Windows и Android для дальнейшего использования в FireMonkey.
Прошу помочь.
-
Здравствуйте!
Необходимо реализовать сортировку пользовательских итемов TListBox в зависимости от значений их свойств.
Во вложении тестовый пример сортировки по Item.Tag = Random(1000).
Пользовательская функция сортировки:
function TForm1.SortFunc(Item1, Item2: TFmxObject): Integer; begin if (Item1 as TListBoxItem).Tag > (Item2 as TListBoxItem).Tag then Result:=1; if (Item1 as TListBoxItem).Tag < (Item2 as TListBoxItem).Tag then Result:=-1; if (Item1 as TListBoxItem).Tag = (Item2 as TListBoxItem).Tag then Result:=0; end;
Вызов сортировки:
procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.BeginUpdate; ListBox1.Sort(SortFunc); ListBox1.EndUpdate; end;
К сожалению, сортировка не работает - порядок следования итемов в списке не меняется.
Прошу помочь !
-
А как программно из кода во время выполнения программы ?
-
Здравствуйте !
Используется БД MySQL и компоненты FireDAC. В базе данных есть таблица с блоб-полями (изображения большого объёма). Заметил, что при удалении записей данной таблицы размер файла БД не уменьшается, что нерационально.
Как организовать изменение объема файла БД при удалении записей из ее таблиц ?
-
Спасибо большое !!!
-
Здравствуйте !
Во вложении - тестовое приложение, иллюстрирующее суть проблемы.
Есть пользовательский элемент списка
TCustomListBoxItem = class(TListBoxItem)
, содержащий:
- Изображение,
- Наименование даты
- Текстовое описание непостоянной длинны.
В зависимости от длинны описания меняется высота TCustomListBoxItem.
Метод TCustomListBoxItem.SyncChildSizes вычисляет высоту элемента списка в зависимости от содержимого и вызывается из обработчиков TCustomListBoxItem.OnResize и TCustomListBoxItem.OnApplyStyleLookup.
Форма приложения содержит две вкладки, вторая из которых содержит сам список и две кнопки для его пополнения и очистки. Первая вкладка содержит только две кнопки, наследующие обработчики кнопок второй вкладки.
Суть проблемы
- Если нажать кнопку "Добавить" на первой вкладке и активировать список на второй вкладке - его элементы (TCustomListBoxItem) будут "навалены" один на другой.
- Если нажать кнопку "Добавить" на второй вкладке, которая содержит сам список - элементы в нем отображаются корректно.
Скриншоты во вложении.
Прошу помочь разобраться.
-
Спасибо большое !
[FireDAC] [SQLite] Какие настройки необходимо произвести с компонентами FireDAC для корректной записи/отображения иероглифов?
в FireDAC
Опубликовано
Здравcтвуйте !
После записи в таблицу иероглифов, например "日本人", в ней отображаются вопросы "???".
Какие настройки необходимо произвести с компонентами FireDAC для корректной записи/отображения иероглифов?
Пример: Ieroglifs.zip