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

Виктор

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

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

  • Посещение

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

    2

Весь контент Виктор

  1. Комрад, в nextSettings отключи trimming и WordWrap. Скорей всего поможет. И имей ввиду что тоже текст в win7, win xp, win server может иметь фактически разную длину)
  2. Виктор

    drag and drop

    Доброго дня, комрады. Как в listview сделать перетаскивание конкретного item, а в частности его изображения? Создали item-ы, загрузили изображения. Bitmap:=TBitmap.Create(120,120); Bitmap.LoadThumbnailFromFile(Memo1.Lines[Count-1],120,120); ListItem:=listview1.Items.AddItem; ListItem.Bitmap.Assign(Bitmap); Отключили в listview все кнопки и надписи. Остались только изображения и скрол. А автоматическом режиме, не получается выделить item, и переносит сразу весь listview
  3. Допустим есть несколько копий приложения запущенных с разных компьютеров не в локальной сети. Расскажите как лучше всего организовать обмен информацией между ними? Какими компонентами лучше воспользоваться, как все построить? Предположим есть два варианта, у нас есть отдельно стоящий компьютер выполняющий роль сервера, и вариант когда такого компьютера нет. Для справки допустим что мы создаем самый простой аркадный Примитивный космический симулятор, для некой ролевой игры.
  4. Для этого надо найти ближайшего родителя у элемента класса, нужного класса (прошу прощения за тавтологию). С помощью вот такой вот универсальной функции. Item := TListBoxItem(FindItemParent(Sender as TFmxObject,TListBoxItem)); function FindItemParent(Obj: TFmxObject; ParentClass: TClass): TFmxObject; begin Result := nil; if Assigned(Obj.Parent) then if Obj.Parent.ClassType = ParentClass then Result := Obj.Parent else Result := FindItemParent(Obj.Parent, ParentClass); end;
  5. Доброго дня. Что бы получить дочерний item зная его индекс надо воспользоваться функцией ItemByIndex самого ListBox-а: var Item: TListBoxItem; Index: Integer; begin Item := ListBox1.ItemByIndex(Index); end;
  6. Если у вас на клики по элементам ListView не будет больше никаких действий, то правильней будет если пользователь будет иметь возможность кликнуть в любую часть строки (для этого обработку клика надо делать всей строки, а элементам отключать HitTest). Галочек как и полос прокрутки на мобильных девайсах стоит по возможности избегать, по ним неудобно попадать. В качестве места для расположения редактора времени я бы предложил невидимую до нажатия панельку, это ускорит работу ибо не потребуются ресурсы на создания окна. Уточню, что я не в курсе как там дела именно на android-е, и можно ли там отрисовать панельку поверх других элементов формы. Но если можно это на мой взгляд лучший вариант. А область за панелькой просто затемнить в момент её появления, что бы сконцентрировать внимание пользователя на ней.
  7. Доброго дня. Суть вопроса в следующем. Мне надо создать директорию, в название которой надо положить путь к другой директории. Разумеется надо обойти проблему недопустимых символов / и : . И длину. В win путь не может превышать 255 символов. Таким образом мне надо еще и ужать путь хотя бы до максимум 100 символов. Не подскажите как средствами языка реализовать подобное?
  8. А для win можете подсказать? Как не пытаюсь что-то не получается
  9. Реализовать данные события можно через стили. Находишь в стиле элемент клик на который должен вызывать раскрытие или закрытие дочернего элемента (плюсик, стрелочка и т.д.). Как правило это элемент класса TButton или TButtonStyleObject, что бы мог изменять состояние при нажатии автоматически. Создаешь процедуру которая будет присваивать элементу стиля обработчик нажатия. procedure TFForder.TreeView2ApplyStyleLookup(Sender: TObject); var Item: TTreeViewItem; begin Item := TTreeViewItem(Sender); Item.StylesData['button'] := TValue.From<TNotifyEvent>(Click); end; При создании дочернего элемента TTreeView: It.OnApplyStyleLookup := Treeview2.OnApplyStyleLookup; И пишешь саму процедуру при нажатии на элемент стиля где выясняешь надо свернуть или развернуть элемент: function FindItemParent(Obj: TFmxObject; ParentClass: TClass): TFmxObject; begin Result := nil; if Assigned(Obj.Parent) then if Obj.Parent.ClassType = ParentClass then Result := Obj.Parent else Result := FindItemParent(Obj.Parent, ParentClass); end; procedure TFForder.Click(Sender: TObject); var Item: TTreeViewItem; begin TreeView2.BeginUpdate; Item := TTreeViewItem(FindItemParent(Sender as TFmxObject,TTreeViewItem)); if Item <> nil then if Item.IsExpanded = False then begin //здесь пишешь то что надо сделать при разворачивании элемента Item.Expand; end else begin //здесь пишешь что надо сделать при сворачивании элемента Item.Collapse; end; TreeView2.EndUpdate; end;
  10. А можно в принципе по подробней как это реализовать. Я думаю с этой проблемкой столкнуться многие в том числе и новички
  11. Добрый день. Берем XE6. Берем дефолтный дизайнер, дефолтный стиль. Генерим тест Faremonkey style. Пытаемся максимизировать окно кнопкой на заголовке формы. Кнопка меняет свой стиль, а вот окно не максимизируется. Тоже самое происходит и если в stylebook положить стиль для формы. Новые бордюры и кнопки отрисовываются, а вот оно перестает максимизироваться. Однако если запустить тот же дефолтный стиль под тестом VCL, то окно спокойно увеличивается. Как побороть сей казус?
  12. Resize дает плохой результат. При уменьшении размеров форма в начале уменьшается, а потом увеличивается, в результате мерцание. Раньше вроде было событие onCanResize которое срабатывало перед изменениями размеров, но счас такого не нашел.
  13. Вопрос конечно не шибко умный, что то в пятницу вечером не могу сообразить. Как выставить минимальные размеры формы? Что бы меньше было нельзя никак уменьшить
  14. Не, не, Optimus работает только с win 7 и выше. Я говорю про стандартные общие настройки. Регулировка настроек приложения с просмотром. Там есть галочка "согласно настройкам приложения" когда её отключаешь и выкручиваешь качество на максимум вроде сглаживание появляется. Отсюда делаем вывод, что приложение просто не сообщает что его надо сглаживать.
  15. Во слышу, объективную речь. Тут дело вот в чем, в настройках NVIDIA зачастую стоит "как указанно в приложении" по крайней мере там где я тестировал, так вот приложение не сообщает что его надо сглаживать. А вот если выставить настройки видеокарты в максимум, то кое какое сглаживание начинает появляться. На рабочем компе у вас просто наверно на макс. выставлено. В инете говорят, что сглаживание на ХР то появлялось то исчезало от ХЕ2 до ХЕ6, от обновления к обновлению и все не могли нормально сделать. Ме поверю, что нельзя подкрутить что бы сглаживание заработало.
  16. Да и кто-то же пишет софт и под банкоматы, им без сглаживания писать, или Faremonkey не для них?
  17. Оу... у меня то давно "более современная ось", а вот у пользователей программ, а они не сотрудники предприятия, а рядовые граждане доля XP существенна. Однако судя по комменатриям в инете в XE6 на ХР сглаживание работает....
  18. ЧуднО не поддерживать винду доля которой 30%( И ладно бы сама студия не запускалась бы на XP это понятно, но программы скомпилированные в ней должны же работать на 30% машин как надо(( Ладно, политику Embarcadero можно обсуждать долго и бесполезно. Хотя бы подскажите как можно нашаманить, что бы было сглаживание в программах под ХР?
  19. Как сделать что бы в win xp сглаживание на краям округлых элементов работало? ccHighQuality, не помогает. На семерке сглаживание наботает. EX5
  20. Сомневаюсь что у вас будет время и желания копать тысячи строк рабочего проекта. Для демонстрации создал новый проект и прикрепил. И так что мы имеем по кнопке создается новая форма, если убрать строку: Form5:=Button1.Parent as TForm5; Из модуля второй формы то вылетит с ошибкой. Почему так? Кроме этого если у второй формы убрать системные иконки, то задать ей размеры при создании не получится, она будет создана с размерами заданными в дизайнере, и не центруется по центру объекта родителя. Если задать parent в ручную при создании, то форма отцентруется, но опять же заданные в oncreate размеры не применяться. Как это побороть? Projects.zip
  21. Речь в данном случаи идет о стиле для combobox. Он состоит из общего ButtonStyleObject на котором расположены шрифт, контент и прочие, так же не нам расположен и еще один ButtonStyleObject на который повешена текстура стрелочки вниз. Везде Hittest:=False. Соотвественно контрол обрабатывает клик по всему элементу что полностью устраивает, однако во втором ButtonStyleObject при нажатии не меняется текстура с Normal на pressed, а надо что бы менялась. Я конечно сделал как предложено в дефолтном варианте с текстурами загруженными в основной контейнер ButtonStyleObject, но хотелось бы знать на будущие как можно реализовать нажатие на внутренний элемент стиля при условии что Hittest:=False. Предложенный вариант не сработал: [dcc32 Error] FotoOrder.pas(452): E2010 Incompatible types: 'IControl' and 'TFmxObject' В строке: StyleObjectControl := IControl(StyleObject); StyleObjectControl := IControl(StyleObject as IControl); При этом код заработал, но эффекта не произвел.
  22. Ну что вам посоветовать. Правильно сказал товарищ выше, 100% нет. Да, есть над чем поработать и Embarcadero и программистам поизвращаться. Но честно говоря firemonkye стала для меня приятным сюрпризом, и как это принято говорить произвела wow-эффект. Так что если есть желание развиваться вместе с современными технологиями, то конечно же стоит работать в firemonkey. Хотя Embarcadero уверяет что они не забросят VCL, но совершенно очевидно что темпы развития замедляться, именно faremonkye будет обеспечивать продвижение продукта на рынке. Ну а для глюков и трудностей есть этот форум. За что отдельно спасибо Ярославу Бровину.
  23. Допусти есть некий стиль элемента, в этом стиле есть ButtonStyleObject HitTest у которого False. Как вызвать событие клика по этому элементу? В данном случаи интересует смена Bitmapa на PressetLink
  24. Хочу спросить вот что: Может взгляд совсем замылился, но создаю форму (в автосоздании убрано все кроме главной и data модуля), после создания пытаюсь обратиться к созданной форме из её же unit-а, и вылетает с ошибкой. Переменная пуста. FFOrder:=TFFOrder.Create(Form1); FFOrder.Parent:=Form1; FFOrder.Name:='FFOrder'; FFOrder.ShowModal; FFOrder.Free; // в модуле Order обращаемся в форме и ошибка FForder.Width:=DataM.Formwidth; Костыль от этого я придумал, но совсем уж какой-то костыльный (FForder:=Panel1.Parent as TFForder ) Далее. Пытаюсь выставить размеры созданной формы в oncreate. Если в настройках формы отключить borderIcons то в модуле FMX.forms мы попадем в процедуру Recreate которая перерисует форму и выставит начальные размеры указанные в дизайнере. Как этого избежать? Projects.zip
  25. Смотря что считать большим коммерческим проектом. Я работаю достаточно плотно с fireMonkey
×
×
  • Создать...