krapotkin
Пользователи-
Постов
2 179 -
Зарегистрирован
-
Посещение
-
Победитель дней
209
Весь контент krapotkin
-
у меня наоборот, снялись некоторые баги. часть пришлось рефакторить, но стало лучше
- 31 ответ
-
- StringGrid
- DragDrop
-
(и ещё 1 )
C тегом:
-
открыл, кинул грид. 5 секунд вписал grid1.onDblClick и контрол+клик по нему. они public. еще 5 сек. написал grid1.onDblClick := MyOldDblClick; итого 15 сек на решение проблемы а куда делись исходники? триал?
- 31 ответ
-
- StringGrid
- DragDrop
-
(и ещё 1 )
C тегом:
-
могу порекомендовать только свой способ тотально всё что нужно создавать самому в 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 и т.д.
-
на всех андроид устройствах нет смысла пользоваться прямым указанием папки доступные программе папки перечислены в class TPath из System.IOUtils.pas пример uses System.IOUtils; fname := TPath.combine(TPath.GetDocumentsPath, 'myfile.txt');
-
мы точно в одной и той же теме пишем? изначальный вопрос. "был проект, я его открыл в новой версии IDE. Обработчики не срабатывают" При чем тут предки и т.п.?
- 31 ответ
-
- StringGrid
- DragDrop
-
(и ещё 1 )
C тегом:
-
сделать маркер в виде подписи
-
это и так будет работать, без всяких класс-хаков только зачем?
- 31 ответ
-
- StringGrid
- DragDrop
-
(и ещё 1 )
C тегом:
-
создать в дизайнере, приделать код из старых обработчиков
- 31 ответ
-
- StringGrid
- DragDrop
-
(и ещё 1 )
C тегом:
-
так я же говорю, там в 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;
-
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;
-
запустить отладчик и узнать почему падает. вроде очевидно Segmentation Fault на Android это наш родной Access Violation и чаще всего сам по себе не приходит...
-
способ по ссылке снимает любые ограничения, какую надо, такую и делаешь
-
разочаровался во встроенных объектах, теперь все объекты list item создаю сам. зато полный контроль, что когда создано... сделал себе дополнительные классы TListItemCircle, TListItemRect, TListItemLine и даже TListItemTri - треугольную меточку в угол итема. Вроде закрыл все свои потребности, в том числе в закрашивании итема. Есть проблемка. Чтобы все нормально работало в ListView.OnClickItemEx нужно задавать каждому элементу конкретные размеры. Если элементы пересекаются, клик детектируется на первом по времени создания. Но тогда, если подставлять цветной прямоугольник под весь итем, то все клики упадут на него! Надо думать...
-
если честно, это плохая реализация (( реакция идет после окончания движения для общепринятой схемы нужно обрабатывать MouseDown, MouseMove. если картинок немного, размещаем программно Images на PresentedScrollBox и прокручиваем от души, только Image.HitTest = false
-
Короче, нащупал линию поведения. поместил код в OnUpdatingObjects и поставил AHandled:=True; Срабатывает он теперь не при Items.Add, а при первом обращении к Item.Objects ! Будьте внимательны P.S. ItemAppearance можно ставить любой
-
В Сиеттле было все довольно логично Ставлю режим 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 своими компонентами
-
Что делается теперь при WrapMode=Place? Что за свойства BitmapMargons и MarginWrapMode?
-
только у FMX должна быть совсем другая логика приложения, даже потому что гриды там отвратительные
-
это не отменяет того, что я написал а если сервер недоступен, отключен и т.д.