dervish00

Пользователи
  • Публикаций

    19
  • Зарегистрирован

  • Посещение

Информация о dervish00

  • Звание
    Пользователь

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. dervish00

    Подсчет высоты ListView

    увы, нет такого метода у TListViewItem
  2. dervish00

    Подсчет высоты ListView

    В соседней теме обозначил вопрос про высоту Item-ов. Попробую задать вопрос более расширенно. На выезжающем TMultiView хочу сделать менюшку с помощью ListView, причем какое-то количество верхних Item-ов хочу отделить от остальных (небольшое количество - чаще один, но иногда несколько, причем сколько это "несколько" неизвестно - сколько пользователь добавит). Пробовал для целей отделения использовать Item с Purpose установленным в TListItemPurpose.Header, как советовали на этом форуме, - не получается, пространство отделяется, но сепараторов нет, некрасиво. Решил сделать тремя TLayout - верхний для верхней части меню, средний для разделения и нижний для остальной части меню. Вся проблема оказалась в том, что я не могу подсчитать сумму высот отдельных Item для верхнего ListView, чтобы затем задать высоту Layout, в который вписан как клиент данный ListView. В тот момент, когда динамически создаю Item высота его равна 0, а в обработчиках OnUpdateObjects и OnUpdatingObject обрабатывается один конкретный AItem. Вопрос - в каком месте подсчитывать?
  3. Ну все не так просто - OnUpdatINGObjects возникает при прорисовке конкретного Item. Мне же нужно посчитать сумму их высот. Да и вообще - я, честно говоря, думал, что данным событием нужно пользоваться если тип ItemAppearance будет Custom или DynamicAppearance, у меня же в примере вполне себе классический тип - ListItemRightDetail, не нужно ничего добавлять - ни рисунков, никакого сложного форматирования, просто Item и Detail
  4. Подниму тему. Вот совершенно элементарный код: 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.
  5. dervish00

    Не показывается в списке нужный Item

    Если выбрать айтем с номером больше 53, а потом раскрыть список, то самым нижним видимым будет 53, если покрутить полосу прокрутки, то видно, что выделенным является правильный айтем, но он не видим при раскрытии списка. Уж и не знаю, как еще объяснить...
  6. dervish00

    Не показывается в списке нужный Item

    Есть форма с ComboBox. Список заполняю динамически и ставлю ItemIndex равным какому-либо элементу. При нажатии на стрелочку для раскрытия списка до какого-то значения ItemIndex в этом списке подсвечивается правильный Item, а после какого-то этот правильный Item спрятан внизу, т.е. до него список не скроллируется. Думал, что это из-за динамики, сделал такой же комбо, только заполненный в дизайнтайм - поведение абсолютно такое же. Что делаю не так? Простенький проект-пример в прицепе. testcombobox.zip Все это в винде. Delphi Berlin.
  7. dervish00

    Странное поведение TFloatAnimation на Android

    Как видно из кода - мне нужно одновременно две панельки запускать (одна прячется, другая появляется). А AnimateFLoatWait пока не закончит работу - не даст запуститься второй анимашке. На самом деле все решил - оказался такой страшный мой косяк, что аж стыдно... У меня в коде, как вы понимаете, чуть сложнее - имена панелек берутся из смерженной до этого строки с разделителями. Так я парсил эту строку под имена отдельные как раньше это делал под виндой (у меня куча процедурок и функций своих осталось со времен, когда активно кодил), а здесь не учел, что под андроидом строки с нуля начинаются, а не с 1-ки. Поправил - вроде все отрабатывает как положено и даже через FindComponent, т.е. не надо городить костылик с отбором панельки по имени... Всем спасибо за участие и прошу прощения за свой косяк.
  8. dervish00

    Странное поведение TFloatAnimation на Android

    По-моему, кое-что нарыл. Сейчас буду разбираться
  9. dervish00

    Странное поведение TFloatAnimation на Android

    krapotkin у TAnimator.AnimateFloat нет события OnFinish, а мне в конце надо сделать у панельки Visible := False
  10. dervish00

    Странное поведение TFloatAnimation на Android

    Не работает. Даже безо всяких UpperCase - просто напрямую (что передал, с тем и сравниваю) не работает. Думается мне, что дело тут несколько глубже и связано с передачей параметров. Пока знаний по андроиду не хватает, пытаюсь найти инфу в сети... Просто хотелось сделать универсальный инструмент для смены панелек (их будет 6-8 штук) с плавной анимацией. Можно, конечно и в лоб описать все переходы, но как-то некрасиво.
  11. dervish00

    Странное поведение TFloatAnimation на Android

    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. Есть ли у гуру мысли, что происходит?
  12. Устанавливаю в TEdit.Text строковое значение, прочитанное из БД. Ставлю на этот TEdit фокус (TEdit.SetFocus). Показываю форму с этим TEdit. Естественно, вся строка подсвечена. Тапаю кратко в конце строки, чтобы снять выделение и пытаюсь добавить к введенной строке несколько символов. Начинает заменяться ВЕСЬ текст. Думал у меня косяк - открыл пример MobileControl, благо там TEdit-ов пруд пруди. Оказалось, что у всех такое поведение. Можно как-то это изменить?
  13. dervish00

    [TLabel]OnClick в Android

    При нажатии на TSpeedButton, TButton итп появляется кружок вокруг места нажатия, а при нажатии на TLabel (c HitTest=true) - нет. Можно ли как-то его добавить, чтобы создавалось впечатление, что нажата кнопка? Мне нужно, чтобы вертикально шли три кнопки (Tspeedbutton) - Сохранить, Не сохранять, Отмена, которые прижаты к правому краю формы. Текст хотелось бы выровнять по правому краю кнопок, но такого свойства не нашел. Пришлось заменить TSpeedButton на TLabel, а у них нет пресловутого "кружка". "Некрасивенько..." (С)
  14. дааа, что-то я погорячился... все гораздо проще. но, вопрос в любом случае не снимается - SQLite -> XML, например для бакапа. правда, это другая тема...
  15. Подниму темку. Все описанное выше хорошо для БД, в которые пользователь ничего не сохраняет, а как сделать то же (апгрейдить БД) в которую пользователь уже чего-то занес. Просится решение, что-то вроде выгрузки из текущей базы, например, в xml, удаление текущей, создание новой и загрузки в новую данных из xml. Отсюда вопрос: есть ли какие-либо готовые решения выгрузки SQLite БД в XML?