Перейти к содержанию
Fire Monkey от А до Я

krapotkin

Пользователи
  • Постов

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

  • Посещение

  • Победитель дней

    209

Весь контент krapotkin

  1. у меня наоборот, снялись некоторые баги. часть пришлось рефакторить, но стало лучше
  2. открыл, кинул грид. 5 секунд вписал grid1.onDblClick и контрол+клик по нему. они public. еще 5 сек. написал grid1.onDblClick := MyOldDblClick; итого 15 сек на решение проблемы а куда делись исходники? триал?
  3. krapotkin

    listView

    могу порекомендовать только свой способ тотально всё что нужно создавать самому в OnUpdatingObjects procedure XXX.CreateItem(); begin fUpdating:=true; item := ListView.items.Add(); item.Data['key1']:=value1; item.Data['key2']:=value2; fUpdating:=false; item.Adapter.ResetView(item); // вот тут вызовется OnUpdatingObjects! end; procedure XXX.UpdatingObjects(); begin if FUpdating then exit; h:=5; // НАЗВАНИЕ aText:=SetupTextObject(sText, AItem.Data['key1'].AsString, freeWidth , -1, 10, h, TListItemAlign.Leading, TListItemAlign.Leading, TTextAlign.Leading, TTextAlign.Leading); aText.Font.Style := [TFontStyle.fsBold]; aText.Font.Size := 18; atext.Height := CalculateHeight(atext, lvWallets); h:=h+atext.Height; ... // линия посредине line := aitem.Objects.FindObjectT<TListItemLine>('key2'); if line=nil then line := TListItemLine.Create(AItem); line.name := sLine; line.width := lvWallets.width - lvWallets.itemspaces.left - lvWallets.itemspaces.right -10 -10; line.height := 1; line.color := Emerald; line.placeOffset.x := 10; line.placeOffset.y := h; line.lineWidth:=1; h:=h+5; .... AHandled:=true; end; код неточный, только для иллюстрации идеи в этом случае лучше всего режим Dynamic. Там не создаются лишние "предустановленные" элементы Text Detail и т.д.
  4. на всех андроид устройствах нет смысла пользоваться прямым указанием папки доступные программе папки перечислены в class TPath из System.IOUtils.pas пример uses System.IOUtils; fname := TPath.combine(TPath.GetDocumentsPath, 'myfile.txt');
  5. мы точно в одной и той же теме пишем? изначальный вопрос. "был проект, я его открыл в новой версии IDE. Обработчики не срабатывают" При чем тут предки и т.п.?
  6. сделать маркер в виде подписи
  7. это и так будет работать, без всяких класс-хаков только зачем?
  8. создать в дизайнере, приделать код из старых обработчиков
  9. ошибка возникла, когда вы в новом режиме поставили туда этот компонент, а потом в мастере удалили...
  10. так я же говорю, там в Custom режиме просто создаются ListItemText c именем T,D,B и т.д. в Dynamic смотрите на названия элементов, вы их сами создаете и они видны в окне Structure тем не менее, для Header и Footer создается элемент с именем Text и все работает так же как и раньше procedure TForm1.b1Click(Sender: TObject); begin lv1.Items[trunc(SpinBox1.Value)].Text := lv1.Items[trunc(SpinBox1.Value)].Text + '1'; end;
  11. procedure TForm1.b1Click(Sender: TObject); begin lbl1.Text:=lv1.Items[trunc(SpinBox1.Value)].Text; end; function TForm1.CreateItem(purpose: TListItemPurpose; const s:string): TListViewItem; begin Result := lv1.Items.Add; result.Purpose := purpose; result.text := s; end; procedure TForm1.FormCreate(Sender: TObject); begin CreateItem(TListItemPurpose.Header, 'Header 1'); CreateItem(TListItemPurpose.None, 'Item 1'); CreateItem(TListItemPurpose.None, 'Item 2'); CreateItem(TListItemPurpose.None, 'Item 3'); CreateItem(TListItemPurpose.Footer, 'Footer 1'); CreateItem(TListItemPurpose.Header, 'Header 2'); CreateItem(TListItemPurpose.None, 'Item 4'); CreateItem(TListItemPurpose.None, 'Item 5'); CreateItem(TListItemPurpose.Footer, 'Footer 3'); SpinBox1.Max := lv1.ItemCount-1; end;
  12. ей лучше знать, раз в файле формы есть TTMSFMXHTMLText, среда пытается его прочитать, а его и нет... она же не придумает такое сложное слово просто текстовым поиском по всему каталогу искать, найти, вычеркнуть
  13. запустить отладчик и узнать почему падает. вроде очевидно Segmentation Fault на Android это наш родной Access Violation и чаще всего сам по себе не приходит...
  14. футер и хедер это обычные итемы. на них лежат ListItemText, у тех есть Text можно посмотреть код FindDrawable и найти способ как получить ссылку на них но думаю, это обычный Item.TextObject
  15. способ по ссылке снимает любые ограничения, какую надо, такую и делаешь
  16. разочаровался во встроенных объектах, теперь все объекты list item создаю сам. зато полный контроль, что когда создано... сделал себе дополнительные классы TListItemCircle, TListItemRect, TListItemLine и даже TListItemTri - треугольную меточку в угол итема. Вроде закрыл все свои потребности, в том числе в закрашивании итема. Есть проблемка. Чтобы все нормально работало в ListView.OnClickItemEx нужно задавать каждому элементу конкретные размеры. Если элементы пересекаются, клик детектируется на первом по времени создания. Но тогда, если подставлять цветной прямоугольник под весь итем, то все клики упадут на него! Надо думать...
  17. если честно, это плохая реализация (( реакция идет после окончания движения для общепринятой схемы нужно обрабатывать MouseDown, MouseMove. если картинок немного, размещаем программно Images на PresentedScrollBox и прокручиваем от души, только Image.HitTest = false
  18. Короче, нащупал линию поведения. поместил код в OnUpdatingObjects и поставил AHandled:=True; Срабатывает он теперь не при Items.Add, а при первом обращении к Item.Objects ! Будьте внимательны P.S. ItemAppearance можно ставить любой
  19. там вижу только хак, позволяющий получить доступ к private переменной т.е. то, что она инициализируется не тем, что написано в style.frame, это просто баг ??
  20. В Сиеттле было все довольно логично Ставлю режим ItemAppearance=Custom, ставлю все родные компоненты Visible=False и в OnUpdateObjects создаю все что мне нужно. Алгоритм был такой: NewItem := listView.items.Add(); // тут срабатывает OnUpdateItems и создается MyListItemControl c:=NewItem.Objects.FindDrawable('MyControl') as TMyControl; if c<>NIL then c.Text := 'Item '+IntToStr(i); в Берлине OnUpdateItems срабатывает совсем потом. И в режиме Dynamic и в Custom в результате с=NIL; O_O и сейчас я не понимаю, как теперь я должен заполнять Items своими компонентами
  21. что-то не нашел я в стиле нужных строк сделал listviewstyle.frame.color = white - никакой реакции сделал в ListView.OnApplyStyle obj:=FindStyleResource('frame') obj.color := White; - та же картина
  22. krapotkin

    Новые свойства TImage в Berlin

    Что делается теперь при WrapMode=Place? Что за свойства BitmapMargons и MarginWrapMode?
  23. только у FMX должна быть совсем другая логика приложения, даже потому что гриды там отвратительные
  24. нет, gdbserver это то, что обеспечивает отладку запущенного на мобиле приложения
  25. это не отменяет того, что я написал а если сервер недоступен, отключен и т.д.
×
×
  • Создать...