-
Постов
394 -
Зарегистрирован
-
Посещение
-
Победитель дней
45
Активность репутации
-
AngryOwl получил реакцию от eser в Как программно добавить анимацию к TListBoxItem
TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); и только после этого удаляйте.
Но здесь может возникнуть ряд проблем.
Во-первых - оптимально делать синхронизацию. Во-вторых - ввиду "ряда особенностей" FMX все может работать на Windows 8, но не будет работать (или будет, но с ошибками) на Windows 7. А на Windows XP вообще может себя повести в "3-ем варианте"... ) Более стабильно будет работать на Маке и на Android ))) Вот такие чудеса могут быть.
Чтобы всего этого избежать, Вам нужно точно определить ту последовательность, которую Вы хотите воспроизвести и сделать синхронизацию.
Например, как писал выше:
TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); // тогда Animate для 'Opacity' и 'Height' выполнится параллельно // а вот следующая процедура выполнится только после окончания AnimateWait 'Height' TThread.Synchronize(TThread.CurrentThread, тут_ваша_процера_удаления_item); Думаю, что корректно описал - как. Но было бы более точно и правильно, если бы на ваш вопрос ответил непосредственно Ярослав Бровин. Он все-таки более компетентен.
-
AngryOwl отреагировална Brovin Yaroslav в [TTabControl] Красивое 3D переключение вкладок в TabControl
Можно сделать так:
Делаем поворот TTabControl на от 0 до 90 градусов, чтобы он повернулся к пользователю ребром. По окончании первой анимации меняем активную вкладку в TTabControl. Делаем поворот TTabControl еще на 90 градусов от 270 до 360. В итоге TTabControl поворачивается к нам уже новой вкладкой. Видео эффекта в действии:
Проект: TTabControl_3DRotationDemo.zip
-
AngryOwl получил реакцию от Antonyan в Анимация масштабирования
Попробуйте покрутить свойство Anchors (все в False, либо наоборот все в True)
Думаю дело в этом
-
AngryOwl получил реакцию от Brovin Yaroslav в [Windows] Можно ли получить Handle компонента в FMX?
Никак. В FMX не может быть как такового Handle у TPanel.
Если Вам очень нужно, то, думаю, можно как-то очень исхитриться и сделать типа так:
- создать в RealTime панель (TPanel) подключив VCL (uses Vcl.Controls, Vcl.ExtCtrls и ряд других...)
- получить хэндл окна и поместить панель на это окно
- ну и дальше работать с ней как с панелью из VCL.
Но не уверен, что все получится... И не уверен, что если получится, то результат Вас устроит.
Я так понимаю - Вы пытаетесь вывести видео в "окно панели" передав хэндл панели для вывода видео фильтру из DirectX или VFW, как это делалось под VCL.
В данном случае - у Вас ничего не получится таким образом. А если получится, то будет все очень "криво". Поверьте)
Вам нужно использовать либо свой механизм вывода, либо использовать тот же Mitov VideoLab или подобные библиотеки.
-
AngryOwl получил реакцию от Вячеслав в [Windows] Можно ли получить Handle компонента в FMX?
WindowHandleToPlatform(Self.Handle) - получите хэндл текущего окна приложения
-
AngryOwl получил реакцию от Brovin Yaroslav в [Windows] Можно ли получить Handle компонента в FMX?
WindowHandleToPlatform(Self.Handle) - получите хэндл текущего окна приложения
-
AngryOwl получил реакцию от Kitty в Извлечение имени каталога из любого места указанного пути
Ваш основной вопрос, как мне кажется, немного неуместен по отношению к FMX )
А на счет "получить позицию каретки" - у TEdit есть свойство CaretPosition, которое и возвращает требуемое Вам значение.
-
AngryOwl получил реакцию от Brovin Yaroslav в Как заставить написанное мной приложение не отключать подсветку, пока оно работает?
Если речь идет об Android, то смотрим здесь. (Android.JNI.PowerManager функции AcquireWakeLock и ReleaseWakeLock соответственно)
-
AngryOwl отреагировална estra в Update for XE7
http://altd.embarcadero.com/download/radstudio/xe7/delphicbuilder_xe7_upd1_win.iso
ftp://ftpd.embarcadero.com/download/radstudio/xe7/delphicbuilder_xe7_upd1_win.iso
-
AngryOwl получил реакцию от antarey в Как заставить обычную форму отображаться как Popup?
Сдается мне что все очень просто... По крайней мере я данным решением пользовался не раз и оно прекрасно работает. А именно:
- во-первых - есть уже на форуме подобное обсуждение, и если мне не изменяет память, то было и еще!
- во-вторых: (если очень грубо....)
........... var p : TPointF; function GetMousePos: TPointF; var Platform: IInterface; begin Result.Create(0, 0); Platform := TPlatformServices.Current.GetPlatformService(IFMXMouseService); if Platform <> nil then Result := (Platform as IFMXMouseService).GetMousePos; end; begin p := GetMousePos; ваша_форма.Left := round(p.X); // тут уж вы сами решайте - как вам ее "сдвинуть" ваша_форма.Top := round(p.Y) + ваша_форма.Height; // ну аналогично сдвинуть по вертикали..... ваша_форма.Show; end; только это все грубо. сами решайте что и куда сдвигать и что еще учитывать.
Т.е. надо обрабатывать событие OnClick вашей кнопочки, а внутри обработчика то что написано выше.
Типа как-то так для вашего случая)
-
AngryOwl получил реакцию от Kitty в Сохранение значений
Ну без записи в файл/БД сложно себе представить - куда можно сохранить значение, кроме как следующие варианты:
если речь идет о Windows - сохраняйте в реестр. если речь о Android - SharedPreferences. -
AngryOwl получил реакцию от Kitty в Как заставить обычную форму отображаться как Popup?
Сдается мне что все очень просто... По крайней мере я данным решением пользовался не раз и оно прекрасно работает. А именно:
- во-первых - есть уже на форуме подобное обсуждение, и если мне не изменяет память, то было и еще!
- во-вторых: (если очень грубо....)
........... var p : TPointF; function GetMousePos: TPointF; var Platform: IInterface; begin Result.Create(0, 0); Platform := TPlatformServices.Current.GetPlatformService(IFMXMouseService); if Platform <> nil then Result := (Platform as IFMXMouseService).GetMousePos; end; begin p := GetMousePos; ваша_форма.Left := round(p.X); // тут уж вы сами решайте - как вам ее "сдвинуть" ваша_форма.Top := round(p.Y) + ваша_форма.Height; // ну аналогично сдвинуть по вертикали..... ваша_форма.Show; end; только это все грубо. сами решайте что и куда сдвигать и что еще учитывать.
Т.е. надо обрабатывать событие OnClick вашей кнопочки, а внутри обработчика то что написано выше.
Типа как-то так для вашего случая)
-
AngryOwl получил реакцию от Kitty в Как заставить написанное мной приложение не отключать подсветку, пока оно работает?
Если речь идет об Android, то смотрим здесь. (Android.JNI.PowerManager функции AcquireWakeLock и ReleaseWakeLock соответственно)
-
AngryOwl отреагировална Kitty в [XE7] [Отклонение] Не удается запустить приложение на Android 5.0
Тут человека писал похожее и у него вроде все решилось: http://www.sql.ru/forum/1127246/obnovil-svoy-nexus-do-andriod-5-i-prilozheniya-na-delphi-perestali-rabotat
-
AngryOwl получил реакцию от Kitty в Как задать форме размер больше размера экрана?
Добрый!
Без проблем!
Если форма будет иметь следующие свойства (пишу только измененные по умолчанию):
Border.Styling = False BorderStyle = None то форма может иметь любые размеры и перемещать Вы ее можете как угодно - она не будет "прилипать".
Жесты обрабатываются нормально, но для этого нужно:
расположить на форме любой "контейнер" (TPanel например), задать ему свойство Align = Contents, Установите HitTest = True. Все элементы расположите на "контейнере". В нашем приложении Sphere Live при отключенных рамках (в настройках можно включить/отключить стандартные рамки окна) мы так и делаем.
(кстати в нашем приложении работает именно тот пример, который Вы и описали, в случае полноэкранного)
P.S. Вам ведь не нужны рамки формы? Т.к. Вы хотите размеры формы больше размеров экрана... При том, что это не ограничивает Вас в функциях изменения размеров и перемещения формы (размеры менять TSizeGrip, а перемещать за любой компонент на форме, если у него стоит свойство HitTest = True, а в обработчике OnMouseDown просписано StartWindowDrag;)
-
AngryOwl отреагировална Kitty в Update 1 Fix List
Update 1 Fix List for RAD Studio XE7, Delphi XE7, and C++ Builder XE7
http://edn.embarcadero.com/article/44156
-
AngryOwl отреагировална brunnengi в [Android] Возможно ли наложить маску на видео?
Сразу извиняюсь сам не тестил, но может просто положить сверху TLayout, в него TText или TLabel.
Будет слой поверх видео, а в нем уже текст с ценой.
-
AngryOwl отреагировална Andrey Efimov в [Android] [XE7] Создание Папки
Файлы/папки созданные в каталоге "/data/data/приложение/***" не будут видны с компьютера, т.к. это защищённый каталог.
Создавать в run-time можно (уверен почти на 100%) только файлы, со всеми ограничениями для этого каталога.
Если необходимо создать файл/папку доступные извне, то создайте их тут:
Внутренняя память: /sdcard/Android/data/приложение/*** Внешняя память: /внешняя карта/Android/data/приложение/***
Создавать точно можно так:
Папка: TDirectory.CreateDirectory(Полный путь до новой папки); Файл: TFile.Create(Полный путь до нового файла);
Иногда, после создания файла/папки, если в этот момент устройство было подключено к ББ, необходимо переподключать устройство, т.к. некоторые девайсы при подключении к ББ блокируют работу с памятью.
Полезное: Storage Options
-
AngryOwl отреагировална Andrey Efimov в Как узнать, что экран устройства повернулся?
Первое, что пришло в голову:
Когда происходит смена ориентации, срабатывает событие OnResize, вот в нём и сравнивать ширину и высоту формы.
Upd.
Глянул пример, вот этот "C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\Mobile Samples\User Interface\Forms". Там сделано так же.
-
AngryOwl получил реакцию от Andrey Efimov в Как работать с Bluetooth?
Первое что попалось "под руку" при поиске:
http://community.embarcadero.com/index.php/blogs/entry/bluetooth-le-support-in-rad-studio-xe7
http://www.youtube.com/watch?v=LcACJNNCkFo
http://www.youtube.com/watch?v=oeyGzuC_QqU
А вообще - гугл в помощь ("delphi xe7 Bluetooth")
-
AngryOwl отреагировална Alex Bozhko в TNotificationCenter. Можно ли изменить иконку?
Собствено, сабж. Можно ли изменить пиктограмму для нотификатора вообще и в Андроид в частности? По умолчанию, показывается иконка приложения, а мне надо показывать несколько разных иконок.
Спасибо.
-
AngryOwl отреагировална ruslan в [Юмор] Очень серьезно
Как Вы думаете, к чему приведет выполнение следующего кода ?
StartTime:= Now; while ( not Embarcadero.EOF ) or ( Embarcadero.Bugs.Count > 0 ) do begin Trolling; if MonthBetween(Now, StartTime) > 12 then Embarcadero.Destroy; end; if ( Embarcadero.Bugs.Count > 0 ) then begin while Embarcadero.Members.Count > 0 do Embarcadero.Members[0].Destroy; Mozg.Delete( Mozg.IndexOf('Delphi') ); end else exit;
-
AngryOwl отреагировална Brovin Yaroslav в Как открыть PDF в стандартном приложении просмотра PDF файлов?
Открытие любого файла в подходящем приложении в операционной системе Андроид выполняются одинаковым способом.
Путем посылки намерения (Интент) с указанием файла и типа данных. Далее система ищет по указанному типу файла, какие приложения зарегистрированы на обработку файлов этого типа, Если приложение, которое может обработать этот файл, одно, то запускает активити приложения и передает туда ваш файл/данные. Если приложений несколько - запускает диалоговое окно выбора приложения, которое будет выполнять обработку вашего файла. Резюмируя это, смотрим на код:
uses System.IOUtils, FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText; procedure TForm7.btnOpenPDFClick(Sender: TObject); const SAMPLE_PDF_FILENAME = 'example.pdf'; var Uri: Jnet_Uri; OpenLinkIntent: JIntent; PDFFileName: string; begin PDFFileName := TPath.Combine(TPath.GetDocumentsPath, SAMPLE_PDF_FILENAME); { Внутренний доступ} Uri := StrToJURI(PDFFileName); // Формируем намерение об открытии файла в стандартном приложении OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri); // Устанавливаем тип данных OpenLinkIntent.setType(StringToJString('application/pdf')); OpenLinkIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP); // Запускаем приложение и передаем ему наше намерение try SharedActivity.startActivity(OpenLinkIntent); except on E: Exception do ShowMessage('Не удалось открыть PDF. В системе нет доступных приложения для просмотра pdf'); end; end; В этом код pdf файл берется из самого пакета приложения (я включил pdf файл в пакет приложения).
Если вам нужно вытащить файл в любом другом месте, просто укажите в PDFFileName полный путь к файлу в файловой системе вашего устройства.
Проект доступен тут: OpenPDF.zip
-
AngryOwl получил реакцию от Brovin Yaroslav в Развернуть TListBoxItem на всю форму
Доброй ночи!
Я не стал динамически создавать элементы "меню". Просто накидал их на форму.
Можно сильно "помудрить", чтобы привести все возможные варианты к единому коду, но что-то мне влом было писать (смотрите заремленный кусочек). А для примера использовал свойство HelpContext...
Вообщем все в приложении. Думаю, там все достаточно просто и понятно. Все раскрывается так, как Вы описали, с анимацией.
MenuEx.zip
-
AngryOwl отреагировална ruslan в Push в Android
День добрый. Прошу совета.
Необходимо реализовать получение push-сообщений на андроиде.
Присутствует следующее:
- проект в Google Console. Имеются project id и project number;
- клиентское приложение на FM
- работающий ruby-скрипт,который можно привязать к любому AppID, способный отправлять пуши через GCM(Google Cloud Messanging) на конкретный device_token и доказавший свою корректную работу.
Про стандартные BAaS, вроде Kinvey и Parse, кот. раздают СВОИ token'ы слышал -> смотрел -> делал -> не понравилось.
Мне не нужен чужой промежуточный не дешевый AppServer только для отправки push-уведомлений.
И так, каким образом я могу реализовать регистрацию устройства напрямую в GCM, получить оттуда DeviceToken, и подписаться на push'и.
P.S. Дай бог здоровья человеку, который знает решение данного вопроса и готов им поделится !