-
Постов
394 -
Зарегистрирован
-
Посещение
-
Победитель дней
45
Сообщения, опубликованные AngryOwl
-
-
А разве не получается в DesignTime определить - как она должна "стартануть" ?
FormFactor.Orientations = .... и ставьте как надо, а остальное отключите.
А если не срабатывае, или нужно в процессе фиксировать определнную ориентацию, то непосредственно в коде можно типа так:
Application.FormFactor.Orientations := [TFormOrientation.soLandscape];
Это точно работает.
Думаю, что правильно Вас понял.
-
Без WMI никак не получится.
Но в данном случае не совсем понятно - что Вас так смущает?
Вы же конкретизировали свой вопрос - он находится в разделе "Windows"...
А в FMX данной возможности нет, думаю, из-за того, что это все-таки FMX )))
Т.е. - кроссплатформенная библиотека. А с учетом того, что HDD в мобильниках и планшетах (в большинстве) отсутствует, то тем-более было бы не совсем уместно, с точки зрения разработчиков FMX, такие "изюминки" реализовывать.
Так-что таких оберток нет и Вам придется, судя по всему, делать это самому... -
Это не так просто описать "в двух словах". У меня, к сожалению, нет столько времени)
Просто погуглите. В инете весьма много информации об этом. Например "delphi xe disable RTTI".
Думаю, может кто-нибудь из наших гуру Вам подскажет где посмотреть более детально, или ссылки на статьи об этом даст.
P.S. Тот же гугл по "RTTI" выдаст Вам море информации о том, что это такое и "с чем его едят"..
-
Ну под 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, _ваш_файл_);
Может не слишком "красиво", но работать все должно.
-
Уважаемый "d7d1cd"!
Вы пытаетесь "сравнивать сладкое с мягким"...
И на Delphi и на CBuilder в RAD Studio можно создать подобное приложение, которое будет объемом в несколько десятков килобайт...
А оно Вам надо?
И это принципиальный вопрос!
Если вы хотите написать элементарное приложение, в смысле GUI, - пишите все "ручками". И тогда у Вас получится минимальный объем.
Ведь ясно, что в исполняемый файл Delphi или CBuilder, по умолчанию включены библиотеки например RTTI. Именно они весят больше всего. (при желании - Вы их можете отключить! и тогда объем бинарника уменьшится! Но тогда Вам придется отказаться от многих весьма удобных механизмов...)
Если вы создаете приложение с формами, разрабатываемыми в DesignTime, а не "ручками" в RealTime, то и это несет с собой много библиотек.
Меня вот, например, как программиста, более чем устравивает объем получаемых бинарников, компилируемых RAD Studio.
И все дело в том, что чем больше программа по функционалу и содержимому, то тем меньше становится ее объем по отношению к аналогам созданным в других средах и языках. И, наконец, наступает тот момент, когда сравнение по объему полученного "бинарника" идет уже в обратную сторону...
А при современных объемах доступной оперативной памяти, я бы на Вашем месте, переживал не за объем бинарника, а за объем "пожираемой" им памяти.
-
"Проблема" обсуждалась уже на форуме в "Drag and Drop TListBoxItem между двумя TListBox".
Достичь рабочего варианта возможно (на XE6. XE7 - пока разбираемся).
-
Ну со скроллингом много чего "интересного"...
Можно поступить разными способами. Для 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;
Есть, конечно, и другие варианты... Но это то, что первое в голову пришло "на скорую руку"...
-
Допустим первая форма Form1 (и модуль Unit1), а вторая, соответственно, Form2 (и модуль Unit2).
Тогда, если компонент со стилем расположен на первой форме, то в uses (после implementation) второй формы, нужно прописать Unit1.
В этом случае в DisignTime второй формы Вы сможете в свойстве StyleBook увидеть компонент расположенный на первой форме...
Типа так... ))
А можно создать TDataModule, и на него скидывать компоненты, используемые формами приложения. Соответственно в uses у форм приложения пропишите юнит от TDataModule, и "вуа-ля" - аналогично первому варианту, выбирайте свойство.
-
Солидарен!
Тоже интересно! )
-
Andrey Yefimov написал Вам правильное решение.
У любого объекта-анимации есть событие OnFinish.
Вам нажно назначить (либо переопределить) обработчик этого события.
Т.е. решение, примерно, такое:
- нажимая на кнопку, запускаете анимацию (и не нужно ничего больше выполнять, так как нужно дождаться когда анимация закончится)
- когда анимация закончится (возникнет событие OnFinish), выполните необходимые действия (вызовите в обработчике данного события процедуры/функции)
и никаких ModalResult в данном случае не нужно...
P.S. И еще. Если нужно, чтобы при нажатии на кнопку сначала что-то отработало в GUI (какой-то код, например, та же анимация), а лишь потом выполнить что-то далее (в том же обработчике нажатия на кнопку), то Вам требуется синхронизация в основном потоке.
-
Проверить на XE5 уже нет возможности. Но на XE6-XE7 все работает. Однозначно.
-
-
Я просто решил делать интерфейс иначе...
Оно не примениемо к Вашему случаю)
Так-что, к сожалению, не смогу Вам помочь.
Если бы решил - обязательно выложил бы.
-
Так-что кроме наших гуру вряд-ли кто-то подскажет, если не делал подобного.
Точно. Вспомнил - у меня была подобная проблема. Я ее решить не смог тогда и принимал другое решение...
-
Вы не пробовали разместить нативный компонент JView на TLayout, а необходимую Вам панель на другом TLayout, расположенную поверх первой?
P.S. Я может быть слишком условно все написал, но, думаю, Вы должны понять о чем я.
-
Скорее всего для показа/скрытия Statusbar нужно будет написать Java класс а над ним обертку..
Я тоже так считаю... Иначе - ничего не выходит.
Спасибо за участие!
-
Может это, опции проекта>Version Info>Theme оно не?
Нет. Не то к сожалению
-
Если вопрос решен, то, думаю, стоит закрыть его.
Для того чтобы форма могла иметь размеры экрана или больше, при этом не "прилипала" к краям рабочего стола (как срабатывает Windows по умолчанию), нужно:
чтобы форма имела следующие свойства (пишу только измененные по умолчанию):
Border.Styling = False
BorderStyle = Noneв этом случае форма может иметь любые размеры и перемещать Вы ее можете как угодно - она не будет "прилипать".
При том, что это не ограничивает Вас в функциях изменения размеров и перемещения формы (размеры менять TSizeGrip, а перемещать за любой компонент на форме, если у него стоит свойство HitTest = True, а в обработчике компонента OnMouseDown просписано StartWindowDrag;)
Чтобы форма, в случае отсутствия "рамок", адекватно реагировала на "жесты":
- расположите на форме любой "контейнер" (TPanel например),
- задайте ему свойство Align = Contents,
- и установите HitTest = True.
- А все элементы расположите на "контейнере".
-
Ну как простой вариант - посмотрите http://stackoverflow.com/questions/10303256/how-to-take-a-screenshot-with-firemonkey-multi-platforms
Там, конечно, староватое решение (для более ранней версии XE), но в принципе - должно все работать.
Вам только нужно получать не хэндлы рабочего стола, а нужных Вам приложений.
Может кто-то подскажет более правильное решение.
-
Вы должны установить у TLable свойство Align = Center
Если TLable находится на каком-то другом компоненте и должен как-то выравниваться, то поместите на родительский компонент новый TLayout с нужным Вам выравниванием, переместите на него Ваш TLable, установите нужные начальные размеры для TLable, и установите Align = Center.
Только у TLayout свойство ClipChildren должно быть = False (чтобы при масштабировании не обрезалось TLable)
-
Добрый!
Без проблем!
Если форма будет иметь следующие свойства (пишу только измененные по умолчанию):
Border.Styling = False BorderStyle = None
то форма может иметь любые размеры и перемещать Вы ее можете как угодно - она не будет "прилипать".
Жесты обрабатываются нормально, но для этого нужно:
- расположить на форме любой "контейнер" (TPanel например),
- задать ему свойство Align = Contents,
- Установите HitTest = True.
- Все элементы расположите на "контейнере".
В нашем приложении Sphere Live при отключенных рамках (в настройках можно включить/отключить стандартные рамки окна) мы так и делаем.
(кстати в нашем приложении работает именно тот пример, который Вы и описали, в случае полноэкранного)
P.S. Вам ведь не нужны рамки формы? Т.к. Вы хотите размеры формы больше размеров экрана... При том, что это не ограничивает Вас в функциях изменения размеров и перемещения формы (размеры менять TSizeGrip, а перемещать за любой компонент на форме, если у него стоит свойство HitTest = True, а в обработчике OnMouseDown просписано StartWindowDrag;)
-
Ваш вопрос "Когда стоит ожидать?" был чересчур лаконичным. А посему - я Вас не правильно понял.
Так-что извините, что "придрался" к Вашему вопросу (мне стоило повнимательнее прочитать название раздела).
-
-
Вообще бред конечно... Никак не работает. Не убирается Status Bar.
Друзья!
Если кто пробовал, отпишите - получилось у кого-нибудь на Android убрать Status Bar?
Речь идет о XE6.
У меня некачественно отображаются контролы в TLayer3D
в TViewPort3D
Опубликовано
Рискну предположить, что Вам вряд-ли кто-то мог подсказать, если сам с подобным не сталкивался.
Ну вот я сталкивался, но не с таким, а подобным, и не стал ничего писать дабы не вводить в заблуждение...
Однако, после Вашего второго коммента я вспомнил про "системы" и т.п.
"это зависит от системы или от видеокарты?"
От системы! А если точнее - от версии DirectX или GDI+.
И это наблюдается именно в XP. Хотя и там, если я правильно помню, можно поправить положение путем манипуляций с параметрами приложения.
В коде проекта надо типа такого:
но тут многое зависит от того - чего Вы хотите от приложения. Качества? Скорости? Стабильности? Гарантии работы везде?
Тогда комбинируйте. Если в этом есть необходимость...
Но я бы оставил как есть.
P.S. Не хочу никоим образом обидеть "обладателей" XP ), но она уже "пережиток" и отходит... И я бы не стал делать на ней упор. Хотя ее поддержка нужна однозначно!