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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      4

    • Постов

      2 124


  2. Nix0N

    Nix0N

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


    • Баллы

      1

    • Постов

      92


  3. DirtyBorov

    DirtyBorov

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


    • Баллы

      1

    • Постов

      71


  4. mrseagull

    mrseagull

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


    • Баллы

      1

    • Постов

      137


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

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

  1. Ссылка: http://yaroslavbrovin.ru/new-approach-of-development-of-firemonkey-control-control-model-presentation-part-2-tedit-with-autocomplete-ru/ Автор: Ярослав Бровин 2 часть статьи о новом подходе разработки визуальных компонентов в FireMonkey. Содерит практическую часть по созданию своего представления. В качестве примера, добавляется функция автозавершения ввода для стандатного компонента TEdit.
    1 балл
  2. Все заработало! Простите за преждевременную панику.
    1 балл
  3. Я добавил новый раздел: Fire Monkey от А до Я → Дополнительные ресурсы по FireMonkey → Статьи и заметки Здесь каждый автор статьи или читатель могут поделиться своими находками с другими пользователями.
    1 балл
  4. Чтобы всегда работать со строками, как с 0-основными на всех платформах, достаточно использовать TStringHelper. Для этого нужно: Подключить юнит: System.SysUtils. Использовать хелпер: Chars function TForm1.HexToStr2(const Source: string): string; var i, idx: Cardinal; StrAsBytes: TBytes; begin SetLength(StrAsBytes, Length(source) div 2); i := 0; idx := 0; while i <= length(source) - 1 do begin StrAsBytes[idx] := StrToInt('$' + Source.Chars[i] + Source.Chars[i + 1]); i := i + 2; idx := idx + 1; end; result := TEncoding.ANSI.GetString(StrAsBytes); end;
    1 балл
  5. DirtyBorov

    Наследник от TListItemSimpleControl

    Пробовал кто то наследоваться от TListItemSimpleControl? Печаль-беда Меня собственно не устроил TListItemTextButton. Захотел я сделать свою кнопочку. Для этого создал свой unit и наследовался от TListItemSimpleControl. Но тут меня ждал большой сюрприз. Дело в том что многие поля и даже методы оказались не доступны! Беглое изучение кода в файле FMX.ListView.Types показали что "не боги горшки обжигают". Досадных ошибок в нем хватает. Когда разработчики писали этот модуль, у них все было хорошо, потому что как известно в пределах видимости unit можно в одном классе иметь доступ к полям private другого класса. Это известная "болезнь". В чем собственно проблемы? Сначала не нашлось некоторые константы и поля классов. Эти поля активно используются в наследниках, хотя объявлены они так: TListItemSimpleControl = class(TListItemObject) private const DisabledOpacity = 0.6; private FEnabled: Boolean; FPressed: Boolean; FMouseOver: Boolean; FOnClick: TNotifyEvent; FTouchExpand: Single; ... Дальше оказалось еще интересней. Есть такой метод: procedure SetData(const AValue: TValue); override; Как видим, метод перекрытый. Это значит что он где то в родительском классе объявлен как virtual, однако компилятор бодро сообщил что такой метод не найден в базовом классе. Внезапно! Смотрим базовые классы и что же мы видим: TListItemObject = class(TInterfacedPersistent) private ..... procedure SetData(const Value: TValue); virtual; Браво! Аплодирую стоя! Дальше копать я не стал. Уже и так стало ясно что затея с наследованием обречена на провал. Единственное пожалуй решение из данной ситуации это скопировать модуль FMX.ListView.Types в папку с проектом, добавить его в проект и внести нужные изменения. Ну или дописать в этом модуле свои классы. Написал я это с горяча. Достали нелепые ошибки. Может кому то пригодится мои исследования и сэкономят немного времени.
    1 балл
  6. Рад что Вы разобрались =) P.S. если Вы модифицировали исходник, то можете добавить процедуры для Show и Hide: ShowWindow(ApplicationHWND, SW_HIDE); // cкрыть из таскбар ShowWindow(ApplicationHWND, SW_SHOW); // показать в таскбар
    1 балл
  7. Как сказал, Андрей, вы все правильно поняли. Я дополню ответ. Все известные пути можно получить через System.IOUtils.TPath. Подробно о путях описано тут: Standard RTL Path Functions across the Supported Target Platforms Не во все места на устройстве разрешается осуществлять запись. Это нужно иметь в виду, если файл не сможет сохраниться из-за недостатка прав на запись.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...