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

BlackLotos

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

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

  • Посещение

Сообщения, опубликованные BlackLotos

  1. Использую XE7, наткнулся на неприятную проблему с т9. 
    Печатаем строку, нажимаем "Enter" и каретка вначале перепрыгивает на новую строку, а потом возвращается обратно. При этом если начать печатать, то печать начнется на новой строке. Баг проявляется не всегда. Обязательное условие - текст должен быть подчеркнут (готов к замене т9).

    Чтоб лучше понять выкладываю видео (51 секунда):
    http://file.sampo.ru/rgt744/

    пояснение к видео:
    При третьем нажатии "Enter" баг воспроизвелся. Так же баг воспроизвелся на 45 секунди видео (создалась новая строка, и сразу исчезла, при этом дальнейшая печать началась на новой строке , хоть каретка находилась на другой)

    При отключении т9 - баг не воспроизводится.
    Собственно есть ли способ справится с этим багом без отключения Т9? И если нет, то как отключить Т9 программно? 

     

  2. Ну если одна строка кода - это нагромождение, то ищи какие-нибудь стандартные методы (или жди когда это кто-нибудь сделает за тебя).

    Тут напрашивается один из трех выводов:

    1. Либо Вы весьма невнимательны и пропустили предложение про "protected" и создание отдельного класса просто для того, чтоб перенести фокус ввода. И тот факт, что для переноса каретки приходится делать отдельный класс - действительно является нагромождением. (кстати, в пользу невнимательности говорит и тот факт, что Вы начали писать просто про фокус, несмотря на то, что изначально речь шла о фокусе ввода)

    2. Либо Вы не понимаете, что поля и методы, находящиеся под директивой "protected", не доступны пользователям класса. И не понимаете- почему нужно делать новый класс.

    3. Либо (самое ужасное) создание нового класса с методом, позволяющим переносить фокус ввода в заданную ячейку, Вы делаете в одну строку кода :) . 

  3.  

     Данные методы не передают фокус ввода в заданную ячейку.

     

    Данные методы передают фокус.

    Если надо активировать ввод (редактор ячейки), то можно воспользоваться для этого методом TColumn.ShowEditor.

     

    1. Я изначально спрашивал про ФОКУС ВВОДА. По этому не ясно к чему ты написал те методы.

    2. "ShowEditor" является protected и для доступа к нему придется делать новый класс на основе "TColumn" (в моем случае TStringColumn). Нужели нет каких то стандартных методов без лишнего нагромождения? 

  4. Плыть в направлении использования TTextLayout. При отключении Direct2D канвы, включается по дефолту GDI+, в которой нету поддержки атрибутов. О чем указано в официальной документации.

     

    Однако, вы можете применять TTextLaoyut не в целом ко всему текстом с атрибутами, а к частям, имеющим одинаковый цвет и стиль. То есть получаете размеры каждой части в заданных настройках текста, а затем по очереди выводи эти части.

    Мне кажется есть другой вариант. Delphi ведь написан в Delphi. И собственно редактор кода умеет выводить текст разного цвета и стиля написания. Если я правильно понял - это "TEditControl". Почему нельзя вынести данный контрол на всеобщее использование?

  5. Здравствуйте. Собственно тема говорит сама за себя. Имеется объект класса "TStringGrid". Колонки и строки создаются динамически. Необходимо переместить фокус ввода в заданную ячейку. Не могу сообразить как это сделать. 
     

×
×
  • Создать...