dervish00
Пользователи-
Постов
21 -
Зарегистрирован
-
Посещение
Посетители профиля
Блок последних пользователей отключён и не показывается другим пользователям.
Достижения dervish00
-
если не нужна публикация в Google Play, то на скорую руку решение есть. Ставим в свойствах проекта галочку на пермишене "MANAGE_EXTERNAL_STORAGE" и потом, после установки приложения на устройстве, ручками даём приложению разрешение "Разрешить управление всеми файлами". У меня после этого всё заработало.
-
dervish00 подписался на Не вижу SQLite-файлы
-
Та же самая проблема. Приложение создает файл sql (копия БД) в папке, которую можно выбрать. Потом прекрасно его видит и может восстановить базу из него. Но если закинуть точно такой же файлик с другого девайса - не видит. И если удалить приложение, а потом заново установить - не видит ни свои, ни чужие файлы. Ищу инфу. Если найду выход - поделюсь. Ну, соответственно, попрошу вас, если найдете - поделиться.
-
увы, нет такого метода у TListViewItem
-
В соседней теме обозначил вопрос про высоту Item-ов. Попробую задать вопрос более расширенно. На выезжающем TMultiView хочу сделать менюшку с помощью ListView, причем какое-то количество верхних Item-ов хочу отделить от остальных (небольшое количество - чаще один, но иногда несколько, причем сколько это "несколько" неизвестно - сколько пользователь добавит). Пробовал для целей отделения использовать Item с Purpose установленным в TListItemPurpose.Header, как советовали на этом форуме, - не получается, пространство отделяется, но сепараторов нет, некрасиво. Решил сделать тремя TLayout - верхний для верхней части меню, средний для разделения и нижний для остальной части меню. Вся проблема оказалась в том, что я не могу подсчитать сумму высот отдельных Item для верхнего ListView, чтобы затем задать высоту Layout, в который вписан как клиент данный ListView. В тот момент, когда динамически создаю Item высота его равна 0, а в обработчиках OnUpdateObjects и OnUpdatingObject обрабатывается один конкретный AItem. Вопрос - в каком месте подсчитывать?
-
Ну все не так просто - OnUpdatINGObjects возникает при прорисовке конкретного Item. Мне же нужно посчитать сумму их высот. Да и вообще - я, честно говоря, думал, что данным событием нужно пользоваться если тип ItemAppearance будет Custom или DynamicAppearance, у меня же в примере вполне себе классический тип - ListItemRightDetail, не нужно ничего добавлять - ни рисунков, никакого сложного форматирования, просто Item и Detail
-
Подниму тему. Вот совершенно элементарный код: procedure TForm1.Button2Click(Sender: TObject); var Item : TListViewItem; i, CountStringsInHeader : Integer; hHeader : single; begin CountStringsInHeader := 5; if CountStringsInHeader > 0 then begin hHeader := 0; ListView3.BeginUpdate; try if ListView3.Items.Count <> 0 then begin ListView3.ScrollViewPos := 0; while ListView3.Items.Count > 0 do ListView3.Items.Delete(0); end; for I := 0 to CountStringsInHeader-1 do begin Item := ListView3.Items.Add; Item.Text := i.ToString; Item.Detail := 'Detail: '+i.ToString; hHeader := hHeader + Item.Height; end; finally ListView3.EndUpdate; layListHeader.Height := hHeader + laySeparator.Height; layListHeader.Visible := True; end; end; ListView2.BeginUpdate; try if ListView2.Items.Count <> 0 then begin ListView2.ScrollViewPos := 0; while ListView2.Items.Count > 0 do ListView2.Items.Delete(0); end; for I := CountStringsInHeader to 4 do begin Item := ListView2.Items.Add; Item.Text := i.ToString; Item.Detail := 'Detail: '+i.ToString; end; finally ListView2.EndUpdate; end; end; Почему в строке hHeader := hHeader + Item.Height; Item.Height всегда равно 0? Техт маленький, мне не нужно расширять item, просто точно вычислить высоту Layout в который вписан ListView.
-
dervish00 отреагировал на ответ на вопрос: Возможно ли сделать такой интерфейс с ЛистВью?
-
Если выбрать айтем с номером больше 53, а потом раскрыть список, то самым нижним видимым будет 53, если покрутить полосу прокрутки, то видно, что выделенным является правильный айтем, но он не видим при раскрытии списка. Уж и не знаю, как еще объяснить...
-
Есть форма с ComboBox. Список заполняю динамически и ставлю ItemIndex равным какому-либо элементу. При нажатии на стрелочку для раскрытия списка до какого-то значения ItemIndex в этом списке подсвечивается правильный Item, а после какого-то этот правильный Item спрятан внизу, т.е. до него список не скроллируется. Думал, что это из-за динамики, сделал такой же комбо, только заполненный в дизайнтайм - поведение абсолютно такое же. Что делаю не так? Простенький проект-пример в прицепе. testcombobox.zip Все это в винде. Delphi Berlin.
-
Как видно из кода - мне нужно одновременно две панельки запускать (одна прячется, другая появляется). А AnimateFLoatWait пока не закончит работу - не даст запуститься второй анимашке. На самом деле все решил - оказался такой страшный мой косяк, что аж стыдно... У меня в коде, как вы понимаете, чуть сложнее - имена панелек берутся из смерженной до этого строки с разделителями. Так я парсил эту строку под имена отдельные как раньше это делал под виндой (у меня куча процедурок и функций своих осталось со времен, когда активно кодил), а здесь не учел, что под андроидом строки с нуля начинаются, а не с 1-ки. Поправил - вроде все отрабатывает как положено и даже через FindComponent, т.е. не надо городить костылик с отбором панельки по имени... Всем спасибо за участие и прошу прощения за свой косяк.
-
По-моему, кое-что нарыл. Сейчас буду разбираться
-
krapotkin у TAnimator.AnimateFloat нет события OnFinish, а мне в конце надо сделать у панельки Visible := False
-
Не работает. Даже безо всяких UpperCase - просто напрямую (что передал, с тем и сравниваю) не работает. Думается мне, что дело тут несколько глубже и связано с передачей параметров. Пока знаний по андроиду не хватает, пытаюсь найти инфу в сети... Просто хотелось сделать универсальный инструмент для смены панелек (их будет 6-8 штук) с плавной анимацией. Можно, конечно и в лоб описать все переходы, но как-то некрасиво.
-
function Form1.GetPanel(paName: string):Tpanel; begin Result := NIL; if AnsiUpperCase(paName) = 'PANEL1' then Result := Panel1; if AnsiUpperCase(paName) = 'PANEL2' then Result := Panel2; end; procedure Form1.Button1Click(Sender: TObject); var FirstFMXObjName, SecondFMSObjName : string; pa : TPanel; begin FirstFMXObjName := 'panel1'; SecondFMSObjName := 'panel2'; // pa := GetPanel(FirstFMXObjName); pa := Panel1; //раскомментировав пред. строку и закомментировав эту - не работает if NOT Assigned(pa) then Exit; FloatAnimationHideFromRight2Left.Parent := pa; FloatAnimationHideFromRight2Left.Enabled := True; FloatAnimationHideFromRight2Left.PropertyName := 'Position.X'; FloatAnimationHideFromRight2Left.StartFromCurrent := False; FloatAnimationHideFromRight2Left.StartValue := 0.0; FloatAnimationHideFromRight2Left.StopValue := -pa.Width; // pa := GetPanel(SecondFMSObjName); pa := Panel2; //раскомментировав пред. строку и закомментировав эту - не работает if NOT Assigned(pa) then Exit; FloatAnimationShowFromRight2Left.Parent := pa; FloatAnimationShowFromRight2Left.Enabled := True; pa.Position.X := pa.Width; pa.Visible := True; FloatAnimationShowFromRight2Left.PropertyName := 'Position.X'; FloatAnimationShowFromRight2Left.StartFromCurrent := False; FloatAnimationShowFromRight2Left.StartValue := pa.Width; FloatAnimationShowFromRight2Left.StopValue := 0.0; FloatAnimationHideFromRight2Left.Start; FloatAnimationShowFromRight2Left.Start; end; вот такой код. Под Windows и Android работает без проблем. Но если раскомментировать/закомментировать строки, которые подписаны в коде, то под Windows работает, а под Android - нет. А хотелось бы чтобы именно так работало (для универсальности). Пытался сделать через FindComponent и также под Windows все работало, а под Android выдавало Access Violation. Есть ли у гуру мысли, что происходит?
-
dervish00 отреагировал на ответ на вопрос: Обновление файла БД без перезапуска приложения
-
dervish00 отреагировал на сообщение в теме: Custom Font
-
Устанавливаю в TEdit.Text строковое значение, прочитанное из БД. Ставлю на этот TEdit фокус (TEdit.SetFocus). Показываю форму с этим TEdit. Естественно, вся строка подсвечена. Тапаю кратко в конце строки, чтобы снять выделение и пытаюсь добавить к введенной строке несколько символов. Начинает заменяться ВЕСЬ текст. Думал у меня косяк - открыл пример MobileControl, благо там TEdit-ов пруд пруди. Оказалось, что у всех такое поведение. Можно как-то это изменить?
-
dervish00 отреагировал на ответ на вопрос: [TLabel]OnClick в Android
-
При нажатии на TSpeedButton, TButton итп появляется кружок вокруг места нажатия, а при нажатии на TLabel (c HitTest=true) - нет. Можно ли как-то его добавить, чтобы создавалось впечатление, что нажата кнопка? Мне нужно, чтобы вертикально шли три кнопки (Tspeedbutton) - Сохранить, Не сохранять, Отмена, которые прижаты к правому краю формы. Текст хотелось бы выровнять по правому краю кнопок, но такого свойства не нашел. Пришлось заменить TSpeedButton на TLabel, а у них нет пресловутого "кружка". "Некрасивенько..." (С)