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

Hevard

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

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

  • Посещение

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

    7

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

  1. В 10.09.2020 в 03:49, brunnengi сказал:

    Доброго дня! И что с этим делать? А то пол ветки про магический фикс и никакой конкретики, акромя ссылки на закрытый ресурс...

  2. Читаю, диву даюсь!

    Что мешало сразу сделать корректным расчёт высоты. Хитрости, уловки, танцы с бубном... 

    Я использовал :

    function TMainForm.DoMeasureText(Canvas: TCanvas; AText: string; Width: single): single;
    var
      R: TRectF;
    begin
      R := RectF(0, 0, Width-9, 10000); // Width-54 = font.size x 3
      Canvas.MeasureText(R, AText, True, [], TTextAlign.Leading, TTextAlign.Leading);
      Result := R.Bottom;
    end;

    Но так и не понял всей премудрости. При шрифте 18, в одну строчку , на один RadioButton она выдаёт 43, 23 , а на какой-то 46,47. Где-то считает одну строчку за две.

  3. 14 часов назад, krapotkin сказал:

    3) "Гибридный": всегда использовать RB по порядку. В первом - первый вопрос, во втором второй и т.д. Лишние снизу - прятать

    Так вроде в таком порядке они и используются. RB1 - 2 поле БД (1й ответ), в RB2 - 3 поле БД (2й ответ)  и т.д. Они заполняются корректно в соответствии, а шатаются по Скроллу, как пьяные матросы.

    И порядок вроде бы логичный: они же все объявлены как Visible = True. Есть поле 2 - нарисовали, есть поле 3 - нарисовали ... есть поле 7 - нарисовали. 

    Я понимаю, если, к примеру нет поля 4, то 3-го Button-a нет и на его место встаёт 4-й Button. 

  4. Доброго дня!

    Не пойму, в чём накосячил, ибо Делфил лет 15-20 назад, а тут добрался до FMX...

    В приложении на Скролле лежат 8 РадиоКнопок с Align = Top; Visible = False; 

    Код заполнения линейно, из БД. Если поле БД не пустое - видим, если пустое - не видим.

    При работе приложения, они располагаются "по своему усмотрению".

     

    Без имени1.png

    Без имени2.png

    Без имени3.png

  5. 1 час назад, krapotkin сказал:

    я еще при исходной задаче хотел задать вопрос, а что вы собираетесь делать, когда это перестанет влезать на экран?? но не задал. решил, что всему свое время))

    Доброго дня!

    Если честно, я сразу предполагал скроллинг, ибо на PC задачу реализовал ещё в конце прошлого года. Пока на больничном, решил реализовать её для мобильной платформы, благо логика вся отлажена. Естественно, не сталкиваясь ранее с FMX, не ожидал столько нерешённых проблем непосредственно с компонентами. Читая ветки, вижу, что множество вопросов возникали лет 5 назад, а воз, как говорится и ныне там. И многое актуально для дня сегодняшнего.  

  6. В 17.04.2018 в 08:30, krapotkin сказал:

    у каждого компонента есть BoundsRect. Нужно просто сравнить, не попадает ли XY в этот rect .

    Согласитесь, что это не корректное решение? У меня на ScrollBox некуда пальцем ткнуть, что бы не задеть BoundRect. И при скроллинге, естественно отжимается RadioButton ( а их 4 в примере). Т.е. вопрос остаётся открытым и по сей день?

    Кстати, поймал себя на мысли, что лет 5 назад такая проблема была в браузерах. При пролистывании "срабатывали" ссылки на страницы. Сейчас подобного не встречаю. Так каким методом решить эту проблему?

    Screenshot_20210317-035451.jpg

  7. В общем, сам спросил - сам ответил. 
    Нашёл некий пример, проверил - работает.

    Delphi
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
      
     var
      r: TRectF;
      s: string; 
     begin
         RadioButton1.Canvas.Font.Size := RadioButton1.TextSettings.Font.Size;
         r := RectF(0, 0, RadioButton1.Size.Width-24, 10000); // не понял, что за 10000, но ни на что не повлияло
         s := FDQuery1.FieldByName('ANS1').AsString; // строчная переменная, в моём случае - текст из БД 
         RadioButton1.Canvas.MeasureText(r, s, True, [], TTextAlign.Leading, TTextAlign.Leading);
         RadioButton1.Size.Height := r.Bottom;
         RadioButton1.Text := s;
    end

    Возможно, кому-то должно пригодиться.

  8. Доброго дня!

    Для вывода вариантов ответов на вопрос, в 6 шт. RadioBatton выводятся ответы из БД.

    Длина компонент фиксированная, а вот что делать с высотой? Ответы могут быть как в одно-два слова, так и в 7-10 предложений. Намёков хоть на какой-то AutoSize не нашёл.

    В итоге, текст центруется обрезаясь сверху и снизу. ? 

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