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

TRect ambiguity Чем победить ? РЕШЕНО!!!


Ghk

Вопрос

Создаем форму, кидаем на нее TChart.
Далее вешаем  пустой обработчик //  OnVirtualKeyboardShown
И все -  под андроид не компилится  - пишет TRect Ambiguity.
Засада В Bilder XE8

Глюк ловится даже в пустом проекте.

В ошибке пишет Типа TRect  определен в дух местах,

Первое место SystemTypes.h  System::Types::TRect -  там структура.
второе место FMXTee.Canvas.hpp  FmxTeee::Canvas::TRect - там  написано typedef System::Types::TRectF TRect;

Прототип обработчика

typedef void __fastcall (__closure *TVirtualKeyboardEvent)(System::TObject* Sender, bool KeyboardVisible, const System::Types::TRect &Bounds);


Понятно что TRect по разному определен в модулях и эт типа два разных типа.
Но какого черта оно компилится под винду, что делать и какого черта ему нада чтоб оно скомпилилось под андроид ?

Весь день интерент рою не мог найти. на одном форуме было упоминание , но человек не помнит что делать.
 

Изменено пользователем Ghk
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

В Delphi это решается явным полным указанием типа, вот так:

myRect: System.Types.TRect

И uses модулей нужно поставить в правильном порядке, чтобы конфликтов было как можно меньше (ну и полное явное указание типа тогда использовать того, чего меньше :)  )

Изменено пользователем kami
Ссылка на комментарий
  • 0

В билдере порядком инклюдов( аналог uses в дельфях) нифига не решается. В _published явное указание типа не работает- ошибки выдает.

Зато пока задал вопрос - догадался как написать костыль :)

в public класса формы  пишем  определение  самопальной функции-обработчика   с полным указанием типов , как в  прототипе
void __fastcall VKbShown(TObject *Sender, bool KeyboardVisible,  const System::Types::TRect &Bounds); Имя можно от балды - в данном случае
VKbShown.
Далее в основном файле формы   в этой функции пишем чего нада делать при появлении вирутальной клавиатуры

void __fastcall TSomeForm::VKbShown(TObject *Sender, bool KeyboardVisible, const System::Types::TRect &Bounds)
{ //
 ShowMessage("Опаньки! Клавушка появилась !"');
};

ну и чтобы все это свистело и пердело как нада при появлении клавы
 В событии OnCreate   нашей формы навешиваем  эту функцию на обработчик
TSomeForm->OnVirtualKeyboardShown=TSomeForm->VKbShown;
 

Теперь все прекрасно работает и компилится  под андроидом:)

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


 

Изменено пользователем Ghk
Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...