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

Лидеры

  1. Евгений Корепов

    Евгений Корепов

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


    • Баллы

      2

    • Постов

      738


  2. Andrey Efimov

    Andrey Efimov

    Модераторы


    • Баллы

      1

    • Постов

      842


  3. konung

    konung

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


    • Баллы

      1

    • Постов

      36


  4. FeLDMARShaL

    FeLDMARShaL

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


    • Баллы

      1

    • Постов

      144


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

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

  1. FeLDMARShaL

    Font.Size и высота в TEdit

    Очень серьезный баг который раньше обходил всякими разными способами, но сейчас уже не получается. Воспроизводится стабильно. 1) Delphi XE8.1 2) Создаем новый проект для различных устройств 3) Кладем на форму TEdit 4) Делаем выравнивание по верху (просто так, чтобы не подгадывать с размерами, и чтобы после компиляции на устройство он не пропал) 5) Из StyleSettings убираем галочку напротив Size (чтобы можно было изменять размер шрифта в рантайме) 6) Ложим на форму TButton 7) Делаем выравнивание по верху (тоже просто так чтобы не потерялся контрол) 8) Создаем событие клика у этой кнопки, в котором уменьшаем на единицу размер шрифта у TEdit: Edit1.TextSetting.Font.Size := Edit1.TextSetting.Font.Size - 1; Компилируем на андроид устройство (любое, ошибка везде наблюдается) После успешного запуска приложения вводим в TEdit какую нибудь фразу из нескольких слов. И если тыкать по полю, то видим как каретка всегда ставится в от место которое тыкнули, т.е. у нас есть возможность тыкнуть на 2 букву и исправить ее. После чего начинаем уменьшать размер шрифта тыка по кнопке. И в один прекрасные момент у нас каретка жестко становится в самом начале и мы не можем изменить ее положение
    1 балл
  2. Попробовал ваш код. Не помогло. Буфер не очищается. PS. Brovin Yaroslav, кстати TEdit.CheckSpelling = False тоже не убирает подчеркивание. PPS. Delphi RX, Android 4.2.2 Быть такого не может. Отладкой проверяли? Может у вас срабатывает на if Assigned(FClipboardSvc) then и ничего не выполняется. В главной форме не забудьте FClipboardSvc: IFMXClipboardService; и потом: procedure TFormMain.FormCreate(Sender: TObject); begin if not TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, IInterface(FClipboardSvc)) then FClipboardSvc := nil; ...
    1 балл
  3. Собственно - сабж. Не знаю как корректно это называют. В нативных контролах это выглядит так: При редактировании даже не большого текста этой штуки крайне не хватает. И в TEdit и в прочих контролах ввода. В т.ч. - нет возможности "протянуть" курсор, если введено текста больше чем возможно отобразить. Возможно ль его как-то включить? Или, быть может, есть иной способ отображения этого дела? Как осуществлять "протяжку" текста?
    1 балл
  4. Избежать появления кнопки Вставить можно очисткой буфера обмена. Например так: procedure TFormMain.Edit1CanFocus(Sender: TObject; var ACanFocus: Boolean); begin if Assigned(FClipboardSvc) then FClipboardSvc.SetClipboard(''); ACanFocus:=True; end; Обратите внимание что именно пустая строка очищает буфер, попытка сделать FClipboardSvc.SetClipboard(Nil); поместит в буфер строку 'empty'.
    1 балл
  5. Копался, копался так ничего и не получилось, в итоге сделал как предложил ruslan (пост 4) но со своими доработками, если кому интересно на создание объекта и на событие OnUpdatingObjects (на TListView) сделал aItem.Height := Round(CalculateTextHeight(aItem.Text, aItem.Objects.TextObject.Width, 36, 130, aItem.Objects.TextObject.Font))+4; aItem - TListViewItem - элемент списка из TListView сама функция вот function CalculateTextHeight(aText: String; aWidth: Single; aMinHeight: Single = 0; aMaxHeight: Integer = 0; aFont: TFont) : Single; begin FTextLayout.BeginUpdate; try FTextLayout.Text := aText; FTextLayout.MaxSize := TPointF.Create(aWidth, 1000); FTextLayout.WordWrap := True; FTextLayout.Font.Assign(aFont); FTextLayout.HorizontalAlign := FMX.Types.TTextAlign.Leading; FTextLayout.VerticalAlign := FMX.Types.TTextAlign.Leading; finally FTextLayout.EndUpdate; end; Result := FTextLayout.Height; if aMinHeight>0 then if Result < aMinHeight then Result := aMinHeight; if aMaxHeight>0 then if Result > aMaxHeight then Result := aMaxHeight; end; Параметры aText - текст, который там отображен, aWidth - ширина текстового объекта, aMinHeight - минимально возможная высота (0 - если не нужно ограничение) aMaxHeight - максимально возможная высота (0- если не нужно ограничение) aFont - шрифт, используемый объектом Сразу скажу, чтоб не говорили, что плагиатор, да основная часть и идея функции взята с этого форума. P.S.Прибавил 4 пикселя, для того, чтобы рамка поместилась
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...