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

RoschinSpb

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

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

  • Посещение

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

    10

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

  1. Я думаю самый оптимальный вариант это просто использовать событие OnDrawColumnBackground при этом надо включить AlternatingRowBackground в Options. И не забудьте задать стиль кисти Canvas.Fill.Kind := TBrushKind.Solid;
  2. Ну давайте вна чердаке, как обычно...
  3. Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
  4. Следует также не забыть установить стиль заливки TBrushKind.Solid Возможно стоит воспользоваться событием OnDrawColumnBackground при этом Options должно включать AlternatingRowBackground. Подозреваю, что в данном случае — не :o)
  5. RoschinSpb

    MDI интерфейс

    Если Вы говорите об аналоге fsMDIChild то ни как. Такой вид форм это чисто виндовая особенность. Используйте TTabControl и TFrame, или просто обычные формы.
  6. Нету в канве ни чего по умолчанию. Что было в предыдущем рисовании то и осталось. Т.е. в общем случае значение Kind считаем неопределенным, хотя часто бывает что Kind=Solid поэтому на него обычно забивают, но это неправильно. Вариант LBM := TBitmap(Value.AsObject); Canvas.DrawBitmap(LBM,RectF(0,0,LBM.Width,LBM.Height),Bounds,1); у вас не работает?
  7. Вы меняли значение BlobType как я предложил в предыдущем сообщении? У меня работает /// Эта часть не работает! /// if (Value.IsEmpty=false) and (Value.IsObject=true) then begin // LB:=TBlobField(Value.AsObject); // ужос!!! // LB.SaveToStream(LStr); // LBM:=FMX.Graphics.TBitmap.CreateFromStream(LStr); // try // Canvas.DrawBitmap(LBM,RectF(0,0,LBM.Width,LBM.Height),Bounds,1); // finally // LBM.Free; // end; LBM := TBitmap(Value.AsObject); Canvas.DrawBitmap(LBM,RectF(0,0,LBM.Width,LBM.Height),Bounds,1); end; /// /// /// И вообще без обработчика события тоже всё рисуется. Это некоторое расстояние называется разделительная линия.
  8. Как я понимаю, BlobType должно быть ftGraphic Live Binding это не мой конек.
  9. 1. У колонки можно менять свойство Padding. 2. Grid теперь может быть и стилевым и нативным. В нативном этого события быть не может. Чтобы работать со стилями см. стилевое представление грида TStyledGrid в модуле FMX.Grid.Style.pas. 3. По моему мнению проколом было наличие этих свойств в публичной секции. Grid это составной компонент, он неким образом самостоятельно реагирует на события мыши, если Вы будете делать что-то своё, то ваши действия могут войти в противоречие со стандартным поведением этого компонента и непредсказуемым последствиям. Поскольку грид переписан чуть менее чем полностью я посчитал, что это хороший повод убрать потенциальную уязвимость, здесь указаны все упраздненные события. В этом обсуждении я пытался объяснить что можно сделать. 4. По этому поводу трудно что-то сказать навскидку, пишите в QC, не забудьте приложить простой воспроизводимый пример. 5. Да, дело в совместимости. Фон может содержать картинку, поэтому по умолчанию все ячейки прозрачные. Но, если добавить AlternatingRowBackground в Options, то событие будет вызываться. Также оно вызывается при появлении редактора. Вообще сильно рекомендую посмотреть демку GridDemo, там можно в run-time менять настройки и смотреть в логе все приходящие события. Еще здесь я что-то писал.
  10. В Berlin'e — да, надо руками добавить модуль FMX.Grid.iOS в проект и хотя бы в один раздел uses, ну и не забыть ControlType грида установить в Platform. В следующей версии наверно тоже будет автоматически добавляться, а здесь к моменту выхода еще не допилили иосную реализацию и не включили её в пакет FMX поэтому такой вот не совсем стандартный подход. В Update1 там много что было исправлено, так что можно смело пользоваться.
  11. вот как-то так получается, что бóльшей части пользователей FM требуется именно поддержка платформ, потому, что если не требуется, то более разумно использовать vcl+100500 других библиотек. Все-таки специально заточенные под конкретную платформу библиотеки всегда будут проще и лучше, как кофемолка всегда (при прочих равных условиях) будет проще и лучше молоть кофе чем кухонный комбайн. Но это лирика... Здесь идея состоит в том, что надо разделить платформонезависимую и платформозависимую части. По этому все наследники TColumn и TCustomGrid ни чего не знают о TDefaultEditor, TStyledGrid... и наоборот. В этом случае можно реализовать свой редактор для TStyledGrid и при этом не убить TiOSGrid. TColumn таким образом потерял всю функциональность связанную с отображением чего-либо, это мог бы быть вообще не TControl, а, например, TCollectioltem, но оставлен как есть для совместимости. Если очень хотите опубликовать TDefaultEditor и пр. напишите в QC. Хотя мне кажется там реализация слишком тривиальна, чтобы что-то еще наследовать. Есть три (два с половиной) необязательных интерфейса ICellControl, IDrawableCell, IDrawableCellEx, которые можно реализовать, по образу и подобию. В FMX.Grid.iOS все редакторы опубликованы, но там реализация совсем другая.
  12. Да, функциональность ICellControl просто неподъёмная GetColumn SetColumn
  13. Потому, что кроме TStyledGrid есть еще TiOSGrid, а в перспективе по одному на каждую платформу. И на каждой платформе своя нативная реализация ячеек и редакторов ячеек для каждого типа TColumn. На мобильных дэвайсах реализация вообще радикально другая, контролы не рисуются на канве, а используются системные объекты это приводит к некоторым ограничениям, но зато даёт ощутимый выигрыш по скорости отрисовки. Так что увы прикрутить по быстрому свой редактор не получится.
  14. В R101, grid должна сдвигаться по умолчанию сама.
  15. >> видеть координатки не выходя из окна >> смущает наличие еще пары чисел Width / Height Т.е. я правильно понимаю? В первом предложении предлагается продублировать 4 числа, во втором смущает наличие двух чисел? А наличие 4 чисел в редакторе объекта, который их не использует, не будет смущать? Боюсь ни чем не смогу помочь. Пользуйтесь Paint.
  16. Нет, там перестают работать все навороты редактора (кодкомплит, переходы по клику, хэльпинсайд)
  17. Нет это получается в юните есть код под одну платформу, а во всех остальных платформах он с точки зрения компилятора пустой.
  18. Обидеть художника каждый может. Не каждый может убежать. При двойном клике на картинке в Selected Image появляется обычный редактор MultiresBitmap, немодальный. Вы можете перемещать прямоугольник и видеть как меняются его координаты, и размеры в масштабе 1. Можно загружать и несколько общих картинок, главное, чтобы все лежало на своих местах с учетом масштабов. Также Вы можете менять координаты и размеры и видеть как перемещается выделенный прямоугольник. Если навести мышь на картинку, то появляются две кнопочки, с помощью которых можно перемещать прямоугольник пошагово (на значение ширины и высоты). Любые изменения сразу же отображаются во всех окошках. Вроде и статьи написаны, и видео выложено, если ни чего не помогает, можно воспользоваться более удобными профессиональными редакторами (напр. Photoshop) и подготовить изображение, где все картинки уложены в свои клеточки. Тогда при добавлении этого изображения оно будет автоматически нарезано на одинаковые прямоугольники.
  19. Можно кактотак обернуть весь код в IFDEF. Тогда можно компилировать под любой платформой. Но в процессе написания и отладки рекомендую все-таки закомментировать диррективы условной компиляции, а в окончательном варианте раскомментировать. unit UnitWindows; //{$IFDEF MSWINDOWS} interface ... implementation ... initialization ... finalization ... //{$ELSEIF} //implementation //{$ENDIF} end.
  20. Я имею ввиду, что бы было два SelectCell подряд как в вашем примере. У меня Nexus 7. Ладно, в общем принял к сведению.
  21. А вот есть такая конторка, Microsoft называется, так она целый Excel для мобильников сделала В целом конечно надо с особой осторожностью подходить к использованию таблиц в мобильных устройствах да и вообще учитывать некоторые особенности при разработке интерфейса, но это уже вопросы второго порядка. В идеале к которому мы стремимся: то, что работает на дэсктопе должно работать и на телефоне без переделок. OnDblClick в public как был так и остался. В следующей версии в Published должны появиться TCellClick = procedure(const Column: TColumn; const Row: Integer) of object; property OnCellClick; property OnCellDblClick; Будут срабатывать в таком порядке OnSelectCell([StringGrid1] 4; 8) OnSelChanged([StringGrid1] 4; 8) OnCellClick([StringGrid1] Progress; Row: 8) OnCellDblClick([StringGrid1] Progress; Row: 8) но это секрет и оффтоп в данной теме.
  22. По существу вопроса. Обратите внимание SelectCell срабатывает при возможной смене ячейки т.е. не всегда. Раньше, я смотрю, событие срабатывало при попытке выделить "дизабленную" ячейку, и фактически ни чего не происходило, но событие срабатывало. Если между нажатием и отпусканием вы перемещаете палец, то это интерпретируется как попытка перетащить содержимое. Т.е. касания должны быть как бы более акцентированные что ли, чтобы сменить выбранную ячейку. Вообще говоря не стоит строить свой алгоритм на предположении что Tap и SelectCell жестко связаны. Переход к другой ячейки может осуществляться многими способами, стрелками, кнопками навигации, по по нажатию на клавишу ввода и т.п. Tap не срабатывает при использовании мыши. Воспроизвести двойное срабатывание SelectCell мне не удалось. И всегда Tap срабатывает до SelectCell. Какое у вас устройство? Я попробую по-тестировать на нем, если Vitaldj разрешит
×
×
  • Создать...