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

POV

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

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

  • Посещение

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

    5

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

  1. Решил глянуть как процесс идёт, чего добавляют. И опять билдер по остаточному принципу?

    В windows.h пытаются подцепить winapifamily.h которого нет.

     

    ПыСы - нашёл эти файлы, скопирил куда надо. В общем решаемо.

  2. Но линия идет "по прямой"? Так размести арку или круг с  диаметром на на долю пикселя больше диаметра сферы. Центр как у сферы.

     

    P.S. Оказывается арки нет. Только окружность и путь можно нарисовать. С путем не всё ясно, разбираться по докам надо.

     

    sphere2.png

  3. Токио... прожка ранее писалась на Сиэттле и всё было пучком. На Берлине позжее её попробовал "завести" - карты себя неадекватно повели.

    Вот больше года потребности не было в картах, а щас вот запустил проект на Токио и такой облом.

     

    Вот что по на эту тему писали когда-то ребята из ТМС

    http://tmssoftware.com/site/forum/forum_posts.asp?TID=8491&title=tmsfmxwebgmaps-error-with-modal-form

    но ведь в тоже самое время у меня всё работало!

     

    Я вчера до 4х утра переделывал все окошки, их кнопки и т.п. - взлетело. Однако выпадающие комбобоксы, оказалось, к такому же сбою приводят!

    Игра с реинициализацией, видимостью и прочим лишь позволяет карте прорисоваться. Однако "унутренности" компонента оказываются убиты. Ни маркеры, ни полигоны не рисуются и ничего другого. Выдается ошибка 80020101  - типа как не дозагружено до конца, однако событие LoadedFinish не случается после сбоя уже никогда .

     

    bad.png

    ok.png

  4. Если совсем не хочется писать компонент, но и не требуются триггеры для эффекта, то TRectangle используй. Его заливка битмамом может масштабироваться во весь контрол и при этом в хорошем качестве. 

     

    А вообще бери за основу компонент TButton (TSpeedButton), делай ему свойство содержащее картинку - и перерисовывай в OnPaint на канву контрола. Тут тебе и триггеры сохранятся, и прозрачность картинки можешь использовать (в DrawBitmap) и всё такое.

     

     

  5. Так вот.. окошки могут быть не обязательно динамически создаваемыми. Проблема та же самая - момент Show или ModalShow убивается что-то внутри карт.

    Метод тыка помог понять, что если у окошка BorderStyle = None или BorderIcons не равен умолчальному (3 кнопки включены), то вот тогда-то карта и портится.

     

    P.S. Хых, если календарь открывается (TdateEdit), то тоже карты портятся.

    P.S.S. Простой комобокс если выпадает, то карта тоже уходит в аут.

     

  6. У меня есть формы создаваемые динамически. В момент 

    with TMyForm.Create(Application) do

    компонент (карты от TMS) ставится просто белым прямоугольником. 

     

    Ранее (под сиэттлом) такого не наблюдалось. Как же ж компонент пострадал от появления где-то там формы?
     

     

  7. Можно костыль - кучу формочек над главной формой - у которых включено Transparent.

    Но к чему извращения? Тыкай мышой в карту и определяй цвет под ней. 

     

     

    P.S. Но вообще есть,к примеру, компонент TPie - у него регион соответствует контуру. Так что и сделать свой компонент произвольной формы можно. Вот так он рисуется

    procedure TPie.Paint;
    var
      LShapePath: TPathData;
      LShapeRect: TRectF;
      MidPoint: TPointF;
      StrokeThicknessRestoreValue: Single;
      FillShape, DrawShape: Boolean;
    begin
      StrokeThicknessRestoreValue := FStroke.Thickness;
      LShapePath := TPathData.Create;
      try
        LShapeRect := GetDrawingShapeRectAndSetThickness(Self, False, FillShape, DrawShape, StrokeThicknessRestoreValue);
        MidPoint := LShapeRect.CenterPoint;
    
        LShapePath.MoveTo(MidPoint);
        LShapePath.AddArc(MidPoint, TPointF.Create(LShapeRect.Width * 0.5, LShapeRect.Height * 0.5), FStartAngle, FEndAngle - FStartAngle);
        LShapePath.LineTo(MidPoint);
        LShapePath.ClosePath;
        if FillShape then
          Canvas.FillPath(LShapePath, AbsoluteOpacity, FFill);
        if DrawShape then
          Canvas.DrawPath(LShapePath, AbsoluteOpacity, FStroke);
      finally
        if LShapePath <> nil then
          LShapePath.Free;
        if StrokeThicknessRestoreValue <> FStroke.Thickness then
          FStroke.Thickness := StrokeThicknessRestoreValue;
      end;
    
    end;

     

  8. Ну вот прям точно не сказу, а проверять поленюсь. Но сделать регион точно можно по контуру картинки (еще с самых ранних делфей есть рекомендации по прозрачности сплашей). И вот почти уверен FMX эту задачу автоматизировать может.

  9. 22 часа назад, krapotkin сказал:

    Ну вообще для меня вот неочевидно, что размер невидимого компонента должен быть определен.

    если у меня три панели и две из них невидимы, то это сильно влияет на размеры и положение третьей

    Неочевидного хватает. Радует, что пока так или иначе это побеждается. VCL со своей вылизанностью и близко не подпускает FMX )) .. хотя ряд вещей "искоропки" радует

  10. 3 часа назад, Вадим Смоленский сказал:

    а этап выравнивания это когда?

    У меня так: есть некий фрейм, до поры невидимый. По определенному событию (щелчок по кнопке) все TLabel на фрейме заполняются текстом и свойство Visible фрейма переводится в True. В Tokyo получается так, что пока фрейм невидим, размеры TLabel не меняются, невзирая на AutoSize.

    Какой здесь может быть другой момент для расчетов?

    С таким сталкивался. Но в более сложных вариациях.. там даже свойство (объект внутри компонента) может быть не создан до первой отрисовки. Приходилось комбинации всяких мероприятий (в том числе Application.ProcessMessage) делать без обращением к компонентам.

  11. канва - бегин сцен

    канва - накидываю примитивы

    канва - енд сцен

     

    А зачем оно рисует за пределами контрола чья канва? Как победить?

    Ну вот же ж кружок рядом с границей рисую, а он берёт и вылазит за пределы, портит всё прочее. При Сталине такого не было!

  12. У меня такие же вопросы возникли и чего-то оно не пашет.

    BitmapSurface создаю указывая пикселформат RGB, т.е. 3 байта.

    Однако

        bitmap->Assign(BitmapSurface );
    
        bitmap->BytesPerPixel;

    показывает число 4.. ну и на имадж ерунда выводится.
    Собственно, от пикселформат нет никакой зависимости, разве что совсем не тот формат (в смысле бит на пиксель).

    Насчет 4 байт - ну тут ясно, что округление до 8/16/32/64.. это английским по белому пишется. И что, никаких возможностей 24 бита считать?

     

    Я на делфи переношу проект из-под VS - там они прям 24 бита поднимают.

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