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

AngryOwl

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

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

  • Посещение

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

    45

Весь контент AngryOwl

  1. Рискну предположить, что Вам вряд-ли кто-то мог подсказать, если сам с подобным не сталкивался. Ну вот я сталкивался, но не с таким, а подобным, и не стал ничего писать дабы не вводить в заблуждение... Однако, после Вашего второго коммента я вспомнил про "системы" и т.п. "это зависит от системы или от видеокарты?" От системы! А если точнее - от версии DirectX или GDI+. И это наблюдается именно в XP. Хотя и там, если я правильно помню, можно поправить положение путем манипуляций с параметрами приложения. В коде проекта надо типа такого: begin GlobalUseDX10 := False; GlobalUseDX10Software := True; Application.Initialize; Application.CreateForm(TfmMain, fmMain); Application.Run; end. но тут многое зависит от того - чего Вы хотите от приложения. Качества? Скорости? Стабильности? Гарантии работы везде? Тогда комбинируйте. Если в этом есть необходимость... Но я бы оставил как есть. P.S. Не хочу никоим образом обидеть "обладателей" XP ), но она уже "пережиток" и отходит... И я бы не стал делать на ней упор. Хотя ее поддержка нужна однозначно!
  2. А разве не получается в DesignTime определить - как она должна "стартануть" ? FormFactor.Orientations = .... и ставьте как надо, а остальное отключите. А если не срабатывае, или нужно в процессе фиксировать определнную ориентацию, то непосредственно в коде можно типа так: Application.FormFactor.Orientations := [TFormOrientation.soLandscape]; Это точно работает. Думаю, что правильно Вас понял.
  3. Без WMI никак не получится. Но в данном случае не совсем понятно - что Вас так смущает? Вы же конкретизировали свой вопрос - он находится в разделе "Windows"... А в FMX данной возможности нет, думаю, из-за того, что это все-таки FMX ))) Т.е. - кроссплатформенная библиотека. А с учетом того, что HDD в мобильниках и планшетах (в большинстве) отсутствует, то тем-более было бы не совсем уместно, с точки зрения разработчиков FMX, такие "изюминки" реализовывать. Так-что таких оберток нет и Вам придется, судя по всему, делать это самому...
  4. Это не так просто описать "в двух словах". У меня, к сожалению, нет столько времени) Просто погуглите. В инете весьма много информации об этом. Например "delphi xe disable RTTI". Думаю, может кто-нибудь из наших гуру Вам подскажет где посмотреть более детально, или ссылки на статьи об этом даст. P.S. Тот же гугл по "RTTI" выдаст Вам море информации о том, что это такое и "с чем его едят"..
  5. Ну под Windows и MacOS можно типа так: function GetMyINIPath(const ASubdir: string = ''): string; begin try if ASubdir = '' then Result := IncludeTrailingPathDelimiter({$IFDEF MACOS}'/Users/Shared/'{$ELSE}GetHomePath{$ENDIF}) + ChangeFileExt(ExtractFileName(ParamStr(0)), '') else Result := IncludeTrailingPathDelimiter({$IFDEF MACOS}'/Users/Shared/'{$ELSE}GetHomePath{$ENDIF}) + ChangeFileExt(ExtractFileName(ParamStr(0)), '') + PathDelim + ASubdir; if not DirectoryExists(Result) then ForceDirectories(Result); except Result := ''; end; end; А использовать, соответственно, так: TPath.Combine(GetMyINIPath, _ваш_файл_); А под Android, например, еще проще можно: TPath.Combine(TPath.GetDocumentsPath, _ваш_файл_); Может не слишком "красиво", но работать все должно.
  6. Уважаемый "d7d1cd"! Вы пытаетесь "сравнивать сладкое с мягким"... И на Delphi и на CBuilder в RAD Studio можно создать подобное приложение, которое будет объемом в несколько десятков килобайт... А оно Вам надо? И это принципиальный вопрос! Если вы хотите написать элементарное приложение, в смысле GUI, - пишите все "ручками". И тогда у Вас получится минимальный объем. Ведь ясно, что в исполняемый файл Delphi или CBuilder, по умолчанию включены библиотеки например RTTI. Именно они весят больше всего. (при желании - Вы их можете отключить! и тогда объем бинарника уменьшится! Но тогда Вам придется отказаться от многих весьма удобных механизмов...) Если вы создаете приложение с формами, разрабатываемыми в DesignTime, а не "ручками" в RealTime, то и это несет с собой много библиотек. Меня вот, например, как программиста, более чем устравивает объем получаемых бинарников, компилируемых RAD Studio. И все дело в том, что чем больше программа по функционалу и содержимому, то тем меньше становится ее объем по отношению к аналогам созданным в других средах и языках. И, наконец, наступает тот момент, когда сравнение по объему полученного "бинарника" идет уже в обратную сторону... А при современных объемах доступной оперативной памяти, я бы на Вашем месте, переживал не за объем бинарника, а за объем "пожираемой" им памяти.
  7. "Проблема" обсуждалась уже на форуме в "Drag and Drop TListBoxItem между двумя TListBox". Достичь рабочего варианта возможно (на XE6. XE7 - пока разбираемся).
  8. Ну со скроллингом много чего "интересного"... Можно поступить разными способами. Для TListBox можно иное решение... Не знаю пока - как в XE7 с этим, а в Вашем случае: Первый вариант: ScrollBox1.ScrollBy(0, -MaxY); Здесь в качестве MaxY можно просто тупо "влупить" некое большое число (типа 10000).... Второй вариант: var MaxY : Single; I: Integer; begin MaxY := 0; with ScrollBox1 do for I := 0 to ControlsCount - 1 do if Controls[i] is TFmxObject then if Controls[i].Position.Y + Controls[i].Height > MaxY then MaxY := Controls[i].Position.Y + Controls[i].Height; ScrollBox1.ScrollBy(0, -MaxY); end; Есть, конечно, и другие варианты... Но это то, что первое в голову пришло "на скорую руку"...
  9. Допустим первая форма Form1 (и модуль Unit1), а вторая, соответственно, Form2 (и модуль Unit2). Тогда, если компонент со стилем расположен на первой форме, то в uses (после implementation) второй формы, нужно прописать Unit1. В этом случае в DisignTime второй формы Вы сможете в свойстве StyleBook увидеть компонент расположенный на первой форме... Типа так... )) А можно создать TDataModule, и на него скидывать компоненты, используемые формами приложения. Соответственно в uses у форм приложения пропишите юнит от TDataModule, и "вуа-ля" - аналогично первому варианту, выбирайте свойство.
  10. Andrey Yefimov написал Вам правильное решение. У любого объекта-анимации есть событие OnFinish. Вам нажно назначить (либо переопределить) обработчик этого события. Т.е. решение, примерно, такое: нажимая на кнопку, запускаете анимацию (и не нужно ничего больше выполнять, так как нужно дождаться когда анимация закончится) когда анимация закончится (возникнет событие OnFinish), выполните необходимые действия (вызовите в обработчике данного события процедуры/функции) и никаких ModalResult в данном случае не нужно... P.S. И еще. Если нужно, чтобы при нажатии на кнопку сначала что-то отработало в GUI (какой-то код, например, та же анимация), а лишь потом выполнить что-то далее (в том же обработчике нажатия на кнопку), то Вам требуется синхронизация в основном потоке.
  11. Проверить на XE5 уже нет возможности. Но на XE6-XE7 все работает. Однозначно.
  12. Попробуйте покрутить свойство Anchors (все в False, либо наоборот все в True) Думаю дело в этом
  13. Я просто решил делать интерфейс иначе... Оно не примениемо к Вашему случаю) Так-что, к сожалению, не смогу Вам помочь. Если бы решил - обязательно выложил бы.
  14. Так-что кроме наших гуру вряд-ли кто-то подскажет, если не делал подобного. Точно. Вспомнил - у меня была подобная проблема. Я ее решить не смог тогда и принимал другое решение...
  15. Вы не пробовали разместить нативный компонент JView на TLayout, а необходимую Вам панель на другом TLayout, расположенную поверх первой? P.S. Я может быть слишком условно все написал, но, думаю, Вы должны понять о чем я.
  16. Я тоже так считаю... Иначе - ничего не выходит. Спасибо за участие!
  17. Если вопрос решен, то, думаю, стоит закрыть его. Для того чтобы форма могла иметь размеры экрана или больше, при этом не "прилипала" к краям рабочего стола (как срабатывает Windows по умолчанию), нужно: чтобы форма имела следующие свойства (пишу только измененные по умолчанию): Border.Styling = False BorderStyle = None в этом случае форма может иметь любые размеры и перемещать Вы ее можете как угодно - она не будет "прилипать". При том, что это не ограничивает Вас в функциях изменения размеров и перемещения формы (размеры менять TSizeGrip, а перемещать за любой компонент на форме, если у него стоит свойство HitTest = True, а в обработчике компонента OnMouseDown просписано StartWindowDrag;) Чтобы форма, в случае отсутствия "рамок", адекватно реагировала на "жесты": - расположите на форме любой "контейнер" (TPanel например), - задайте ему свойство Align = Contents, - и установите HitTest = True. - А все элементы расположите на "контейнере".
  18. Ну как простой вариант - посмотрите http://stackoverflow.com/questions/10303256/how-to-take-a-screenshot-with-firemonkey-multi-platforms Там, конечно, староватое решение (для более ранней версии XE), но в принципе - должно все работать. Вам только нужно получать не хэндлы рабочего стола, а нужных Вам приложений. Может кто-то подскажет более правильное решение.
  19. Вы должны установить у TLable свойство Align = Center Если TLable находится на каком-то другом компоненте и должен как-то выравниваться, то поместите на родительский компонент новый TLayout с нужным Вам выравниванием, переместите на него Ваш TLable, установите нужные начальные размеры для TLable, и установите Align = Center. Только у TLayout свойство ClipChildren должно быть = False (чтобы при масштабировании не обрезалось TLable)
  20. Добрый! Без проблем! Если форма будет иметь следующие свойства (пишу только измененные по умолчанию): Border.Styling = False BorderStyle = None то форма может иметь любые размеры и перемещать Вы ее можете как угодно - она не будет "прилипать". Жесты обрабатываются нормально, но для этого нужно: расположить на форме любой "контейнер" (TPanel например), задать ему свойство Align = Contents, Установите HitTest = True. Все элементы расположите на "контейнере". В нашем приложении Sphere Live при отключенных рамках (в настройках можно включить/отключить стандартные рамки окна) мы так и делаем. (кстати в нашем приложении работает именно тот пример, который Вы и описали, в случае полноэкранного) P.S. Вам ведь не нужны рамки формы? Т.к. Вы хотите размеры формы больше размеров экрана... При том, что это не ограничивает Вас в функциях изменения размеров и перемещения формы (размеры менять TSizeGrip, а перемещать за любой компонент на форме, если у него стоит свойство HitTest = True, а в обработчике OnMouseDown просписано StartWindowDrag;)
  21. Ваш вопрос "Когда стоит ожидать?" был чересчур лаконичным. А посему - я Вас не правильно понял. Так-что извините, что "придрался" к Вашему вопросу (мне стоило повнимательнее прочитать название раздела).
  22. Что значит "когда" ? Вообще-то текущая версия (собственно как и предыдущие) поддерживает и Windows и MacOS. Поэтому Ваш вопрос либо не понятен, либо неуместен вовсе.
  23. Вообще бред конечно... Никак не работает. Не убирается Status Bar. Друзья! Если кто пробовал, отпишите - получилось у кого-нибудь на Android убрать Status Bar? Речь идет о XE6.
×
×
  • Создать...