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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      8

    • Постов

      2 124


  2. krapotkin

    krapotkin

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


    • Баллы

      8

    • Постов

      2 185


  3. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      4

    • Постов

      2 517


  4. Kitty

    Kitty

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


    • Баллы

      2

    • Постов

      792


Популярный контент

Показан контент с высокой репутацией 07.10.2016 во всех областях

  1. Brovin Yaroslav

    цвет объекта TMemo

    Либо вложить TMemo в TRectangle Либо использовать выравнивание Content, а не Client
    3 балла
  2. Так, проблему изучил. Решение очень простое. Начиная с iOS10 приложение, если хочет использовать камеру, библиотеку и другие сторонние сервисы, должно добавлять в манифест специальные ключи. Для камеры и библиотеки эти ключи изображены ниже: Добавьте эти ключи и все будет ок. Подробнее про ключи можно прочитать тут: Cocoa Keys
    3 балла
  3. Если честно, IDE в Qt по мне так отстой И система сигналов вместо простых обработчиков, оно может и нужно кому-то, но я за много лет не почуял, что мне не хватает ее... В результате никакого RAD. В коде все обработчики устанавливать. Мне не нравится. Это как в Andoird JAVA but = FindObjectByID(R.button1) ; but.SetText('12341234') вместо привычного but.Text := '1234123';
    3 балла
  4. Ярослав уже писал, что это тайна. Это секретное оружие куется в стране-производителе и что мешает им написать нормальный редактор - вообще неизвестно
    3 балла
  5. Почему в Берлине нет кнопки Apply как это было на прошлых версиях ? вот так
    1 балл
  6. Равиль Зарипов (ZuBy)

    Проблемы с MyDAC

    использовать FIreDAC наверное
    1 балл
  7. была такая проблемка) а откуда SDK-то брали? файл zipalign.exe лежит в SDK\Build-tools\xxx
    1 балл
  8. bigjorj

    Студия не видит zipalign.exe

    C:\Program Files (x86)\Embarcadero\Studio\18.0\PlatformSDKs\android-sdk-windows\build-tools\22.0.1
    1 балл
  9. У меня используется такой код на Паскале (немного отличается от вашего): procedure TFrmMain.CalculateItemHeight(Sender: TObject); var ListItem: TListBoxItem; d: integer; begin if Sender is TListBoxItem then begin ListItem := Sender as TListBoxItem; FTextLayout.BeginUpdate; try // Инициализируем текстовый слой для корректного вычисления // размеров отображаемого текста FTextLayout.Font.Assign(ListItem.Font); FTextLayout.VerticalAlign := ListItem.VertTextAlign; FTextLayout.HorizontalAlign := ListItem.TextAlign; FTextLayout.WordWrap := ListItem.WordWrap; FTextLayout.MaxSize := TPointF.Create(ListItem.Width, TTextLayout.MaxLayoutSize.Y); FTextLayout.RightToLeft := false; FTextLayout.Text := ListItem.Text; finally FTextLayout.EndUpdate; end; d:=Round(FTextLayout.Height); try FTextLayout.Text:='m'; finally FTextLayout.EndUpdate; end; d:=d+Round(FTextLayout.Height); ListItem.Height:=d; end; end; Попробуйте поставить процедуру CalculateItemHeight на OnApplyStyleLookup
    1 балл
  10. Возвращение компонента с кодом и дальнейшее его удаление - решило проблему. Спасибо.
    1 балл
  11. вот так NotificationCenter1.ApplicationIconBadgeNumber := 0;
    1 балл
  12. Если до сих пор ленился разбираться с другими IDE, с чего бы теперь вдруг перестать лениться? Сидим плотно на rad studio и ждем вкусняшки, вроде поддержки линуха. А Си бросать никак нельзя, он велик и от него исходит сияние.
    1 балл
  13. Не думаю, что если нет плюшки, то надо бросать IDE. Во вторых сервис будет, об этом говорили эмбаркадеровцы на веб.бинарах С++.
    1 балл
  14. 1 балл
  15. попробуй через TNotificationCenter1.CancelAll;
    1 балл
  16. тогда уж соскакивать с rad studio на qt, если не хотят С++ поддерживать, там и линукс и андроид и библиотек куча до сих пор builder используется больше из-за старых проектов и наработок
    1 балл
  17. AirDroid - замечательная программка must have
    1 балл
  18. Живут, и нас еще много и DOS мы пережили на очень много лет. Программирование на ассемблере под DOS, это был просто праздник какой-то! Sorry за оффтоп. Защиту проверю. В принципе направление поиска понятно, огромное спасибо, Буду разбираться
    1 балл
  19. Ссылка на скачивание (Только для RAD Studio Berlin): fgx_0.7.1.112.zip Инструкция по установке: "Инструкция по установке набора компонентов FGX" FGX - Donate: QIWI: 4890 4941 7671 0929 Yandex.Money: 4100175510891 Описание Эта версия включает в себя следующий набор компонентов: Дизайнер итемов - дизайнер итемов. TfgToast - класс отображения быстрых сообщений TfgFlipView - слайдер изображений. Поддерживает несколько способов переключения фотографий при помощи эффектов и сдвигов. При первом использовании ОБЯЗАТЕЛЬНО прочитать инструкцию "TfgFlipView - Инструкция загрузки стиля" TfgPositionAnimation - анимация свойств типа TPosition TfgPosition3DAnimation - анимация свойств типа TPosition3D TfgBitmapLinkAnimation - анимация свойств типа TBitmapLink TfgProgressDialog (UPDATED) - Компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения фоновой операции можно оценить. TfgActivityDialog (UPDATED) - компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения операции не возможно адекватно оценить. TfgActionSheet (UPDATED) - Аналог контекстного меню для мобильных платформ. TfgColorsPanel - Палитра цветов с возможностью выбора цвета. TfgGradientEdit - Компонент выбора градиента. TfgLinkedLabel - Метка поддерживающая открытие Web ссылки в браузере по умолчанию. TfgApplicationEvents (UPDATED) - компонент с возможностью легко задать обработчики на основные события приложения: Отслеживание смены состояния приложения, простой, обновление и выполнение действий Actions, Изменение ориентации устройства и тд. TfgVirtualKeyboard - компонент облегчающий работу с виртуальной клавиатурой. Позволяет задать пользовательские кнопки над виртуальной клавиатурой под iOS, а так же отлавливать события по отображению и скрытию клавиатуры. Зарегистрированы все стилевые объекты на вкладке "FGX: Style objects" Список изменений TfgActionSheet: Добавлены и реализованы события TfgActionSheet.OnShow, TfgActionSheet.OnHide, TfgActionSheet.OnItemClick. Добавлены свойство TfgActionSheet.Theme, позволяющее выбрать вариант темы: Auto - выбирает темную или светлую тему автоматически на основании текущего стиля; Light - использует светлую тему; Dark - темную Обновлен пример ActionSheetDemo. TfgApplicationEvents - добавлены новые событии: OnActivityResult (Андроид) - позволяет получить результаты/интенты из других приложений. OnFormBeforeShown - вызывает непосредственно до момент отображения формы OnFormActive - Вызывается, когда форма активируется. OnFormDeactivate - Вызывается, когда форма деактивируется OnFormCreate - Вызывается после создания экземпляра формы OnFormDestroy - Вызывается до разрушения формы OnScaleChanged - Вызывается, когда меняется скейл у формы. Например, при перетаскивании формы с одного экрана с одним скейлом на другой с другим скейлом (Больше актуально для OSX) TfgProgressDialog, TfgActivityDialog: Добавлены свойство Theme, позволяющее выбрать вариант темы: Auto - выбирает темную или светлую тему автоматически на основании текущего стиля; Light - использует светлую тему; Dark - темную. Общие изменения: Ассерты перенесены в скоп TfgAssert.
    1 балл
  20. SerhioUser

    Z-Order для 3D-объектов с ZWrite=false

    Так. Сорцекопание выявило, что за сортировку 3d-объектов отвечает класс TRenderingCompare и код находится в методе TCustomForm3D.RebuildRenderingList. procedure TCustomForm3D.RebuildRenderingList; var I: Integer; CompareFunc: TRenderingCompare; begin if Assigned(Children) and (Children.Count > 0) and (FUpdating = 0) then begin if Not Assigned(FRenderingList) then FRenderingList := TList<TControl3D>.Create; FRenderingList.Clear; for I := 0 to Children.Count - 1 do if (Children[i] is TControl3D) then FRenderingList.Add(Children[I] as TControl3D); CompareFunc := TRenderingCompare.Create; try FRenderingList.Sort(CompareFunc); finally CompareFunc.Free; end; end; end; Никаких условий - просто сортировка без вариантов. А вот код, собственно, проверки для сортировки: function TRenderingCompare.Compare(const Left, Right: TControl3D): Integer; var V1, V2: TPoint3D; begin Result := Integer(Left.GetMaterialForSorting) - Integer(Right.GetMaterialForSorting); if (Result = 0) and Left.ZWrite and Right.ZWrite then begin if (Left.Opacity < 1) and (Right.Opacity >= 1) then Result := 1 else if (Left.Opacity >= 1) and (Right.Opacity < 1) then Result := -1 else if (Left.Context <> nil) and (Right.Context <> nil) then begin V1 := TPoint3D(Left.AbsolutePosition) - TPoint3D(Left.Context.CurrentCameraMatrix.M[3]); V2 := TPoint3D(Right.AbsolutePosition) - TPoint3D(Left.Context.CurrentCameraMatrix.M[3]); Result := Trunc(V2.Length - V1.Length); end; end; end; Как видно если ZWrite = false, 3D-объекты НЕ СОРТИРУЮТСЯ и находятся в порядке создания на форме. Список находится в приватной переменной FRenderingList, к которой мы не можем получить доступ даже сделав наследника от TForm3D. Ладно. FRenderingList заполняется из списка TFmxChildrenList.Children, до которого мы можем достучаться. Но его массив Items[] доступен только на чтение. Посему повлиять на его порядок мы тоже не можем. Пока что единственный выход, который я нашел - подключать к проекту копию исходника "FMX.Forms3D.pas" и корректировать его под свои нужды. (Под Mac OS X такой финт не работает - берется стандартный "FMX.Forms3D.pas") А ведь достаточно было бы сделать RebuildRenderingList виртуальной и хотя-бы в protected секции. Ну а лучше, думаю, было бы кустомизировать TRenderingCompare класс. Может кто знает лучший вариант?
    1 балл
  21. Ответ косвенно был дан в теме Автоматический переход на вторую строку TLabel Поэтому на базе этого ответа его легко модифицировать для этой задачи. Идея простая в момент загрузки стиля и изменения размеров TListBoxItem, вычислять высоту занимаемого текста и на основании этих данных переопределять высоту итема. Практика 1. Для определения размеров текст используем TTextLayout. Лучше создавать объект этого класса один раз. Поскольку в нашем случае он будет использоваться часто. procedure TForm1.FormCreate(Sender: TObject); begin // FTextLyout: TTextLayout - поле формы FTextLyout := TTextLayoutManager.DefaultTextLayout.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(FTextLyout); end; 2. Пишем свой обработчик, который мы будем вызывать по достижению двух событий: Изменение размера TListBoxItem. В этом случае нужно перевычислить высоту итема. При загрузки нового стиля итема, нам нужно заново вычислить высоту итема. Поскольку стиль может содержать новые настройки отображения текста (шрифт, размер и тд.) Я назвал это событие CalculateItemHeght: procedure TForm1.CalculateItemHeight(Sender: TObject); var ListItem: TListBoxItem; begin if Sender is TListBoxItem then begin ListItem := Sender as TListBoxItem; FTextLyout.BeginUpdate; try // Инициализируем текстовый слой для корректного вычисления // размеров отображаемого текста FTextLyout.Text := ListItem.Text; FTextLyout.MaxSize := TPointF.Create(ListItem.Width, 1000); FTextLyout.WordWrap := ListItem.WordWrap; FTextLyout.Font := ListItem.Font; FTextLyout.HorizontalAlign := ListItem.TextAlign; FTextLyout.VerticalAlign := ListItem.VertTextAlign; finally FTextLyout.EndUpdate; end; // Получаем высоту текста при текущих настройках итема ListItem.Height := FTextLyout.Height; end; end; Обратите внимание, что этот код работает для горизонтальной ориентации TListBoxItem и обычного TListBoxItem итема без картинок. Поэтому я для упрощения понимания кода, принимаю за ширину текста ширину самого итема. Но как вы понимаете, текст в итеме имеет еще свои отступы и может располагаться, например, справа от изображения. В этом случае этот в этот код нужно будет добавить определение текущих размеров стилевого объекта текста, отвечающего за вывод текста в TListBoxItem. Но в вашем примере этого не нужно. 3. Вешаем наш обработчик на два события каждого итема TListBoxItem.OnResize и TListBoxItem.OnApplyStyleLookup. Результат
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...