Лидеры
Популярный контент
Показан контент с высокой репутацией 26.03.2017 во всех областях
-
Порядок запуска TBitmapListAnimation
ENERGY и 2 других отреагировал Равиль Зарипов (ZuBy) за вопрос
картинка из примера Загружаем её в BitmapListAnimation настройка BitmapListAnimation ну и не забываем BitmapListAnimation1.Enabled := true;3 балла -
Ну так сделайте что написано. Укажите Bundle ID в Version Info, ту строку что просит указать среда.2 балла
-
Подписка на получение сообщений в конструкторах компонентов
Brovin Yaroslav отреагировал Viktor Chekrygin за вопрос
Ну я в общем-то так и предполагал, что это для ARC для мобильных платформ сделано. В вашей статье информация по этой теме собрана воедино. Как раз этого лично мне не хватало. Спасибо огромное.1 балл -
Порядок запуска TBitmapListAnimation
Равиль Зарипов (ZuBy) отреагировал chaplin.u@gmail.com за вопрос
наши картинки отличались только одним - PropertyName. У меня программа сама поставила AnimationBitmap и я ей поверил. А зря т.к. после замены на Bitmap зайчик побежал. Спасибо !1 балл -
Горизонтальный TListView с картинками
ENERGY отреагировал Равиль Зарипов (ZuBy) за вопрос
если убрать этот стиль, то можно всю настройку делать цветом (как показано в демке) там же и задавать цвет для разделителей1 балл -
Горизонтальный TListView с картинками
Равиль Зарипов (ZuBy) отреагировал ENERGY за вопрос
Большое спасибо за помощь, добрый человек! Еще добавлю, чтобы сменить фон Item'a (например на прозрачный) или добавить какие то рюшечки (например полоски между пунктами), на вышеуказанном примере: нужно зайти в стили, и редактировать imagesui.png файл который находится внутри контейнера listviewstyle_panel (не снаружи, т.к. там есть точно такой же). Т.е. жмем на imagesui.png > MultiresBitmap > выбираем нужный, и слева в инспекторе объектов жмем свойство Bitmap с помощью которого этот файл можно сохранить,(а потом и загрузить) на диск.1 балл -
Часть формы обрезается на Bluestaks 2
Равиль Зарипов (ZuBy) отреагировал Brovin Yaroslav за вопрос
Вы не смогли найти в вопросе слова: "Затем запустил на Lenovo и результат получился не такой красивый. Как видим, верх формы почему-то "уехал" за статус-бар, а ее свойство Top равно 0"? Там же ниже есть подбробный ответ. Нужно прочитать.1 балл -
Горизонтальный TListView с картинками
ENERGY отреагировал Равиль Зарипов (ZuBy) за вопрос
1) Динамическая подгрузка описана тут http://blog.rzaripov.kz/2016/12/3-modernlistview.html 2) так критические баги не фиксят, куда им до рюшечек 3) вроде поправил в последней версии (на гите)1 балл -
Сделал решение для описанного выше варианта. Добавил его на Stackoverflow unit Misc.Android; interface uses SysUtils, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNIBridge, Androidapi.JNI.Provider; type TGallery = class public class function GetLastImageID: integer; class function GetNextImageIDFromID(aFromID: integer; out aImagePath: string): integer; class function DeleteImageByID(aID: integer): boolean; end; implementation const _ID = '_id'; // TJBaseColumns.JavaClass._ID // uri in Androidapi.JNI.Provider { TGallery } {If you're using action TakePhotoFromCameraAction remember to set NeedSaveToAlbum to true. It does not work, because of Android problems, but it can work in future.} class function TGallery.GetLastImageID: integer; var vContent: JContentResolver; vValues: TJavaObjectArray<JString>; vOrderBy: JString; vCursor: JCursor; begin Result := -1; vContent := TAndroidHelper.Activity.getContentResolver; vValues := TJavaObjectArray<JString>.Create(1); vValues[0] := TJBaseColumns.JavaClass._ID; vOrderBy := StringToJString(_ID + ' DESC'); vCursor := vContent.query(TJImages_Media.JavaClass.EXTERNAL_CONTENT_URI, vValues, nil, nil, vOrderBy); try if vCursor.moveToFirst then Result := vCursor.getInt( vCursor.getColumnIndex(TJBaseColumns.JavaClass._ID) ); finally vCursor.close; end end; // Result is next Image ID and its aImagePath - is path to jpg image class function TGallery.GetNextImageIDFromID(aFromID: integer; out aImagePath: string): integer; var vContent: JContentResolver; vValues: TJavaObjectArray<JString>; vFilter: JString; vOrderBy: JString; vArgs : TJavaObjectArray<JString>; vCursor: JCursor; begin Result := -1; aImagePath := ''; vContent := TAndroidHelper.Activity.getContentResolver; vValues := TJavaObjectArray<JString>.Create(2); vValues[0] := TJMediaStore_MediaColumns.JavaClass.DATA; vValues[1] := TJBaseColumns.JavaClass._ID; // vValues[1] := TJMediaStore_MediaColumns.JavaClass.SIZE; // vValues[1] := TJImages_ImageColumns.JavaClass.DATE_TAKEN; vOrderBy := StringToJString(_ID + ' DESC'); vFilter := StringToJString(_ID + '>?'); vArgs := TJavaObjectArray<JString>.Create(1); vArgs[0] := StringToJString(aFromID.ToString); vCursor := vContent.query(TJImages_Media.JavaClass.EXTERNAL_CONTENT_URI, vValues, vFilter, vArgs, vOrderBy); try if (vCursor.getCount > 0) and vCursor.moveToFirst then begin Result := vCursor.getInt( vCursor.getColumnIndex(TJBaseColumns.JavaClass._ID) ); // vCursor.getLong(imageCursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN)); //vSize := wCursor.getLong(wCursor.getColumnIndex(TJMediaStore_MediaColumns.JavaClass.SIZE)); aImagePath := JStringToString(vCursor.getString( vCursor.getColumnIndex(TJMediaStore_MediaColumns.JavaClass.DATA) )); end; finally vCursor.close; end; end; class function TGallery.DeleteImageByID(aID: integer): boolean; var vContent: JContentResolver; begin vContent := TAndroidHelper.Activity.getContentResolver; Result := vContent.delete(TJImages_Media.JavaClass.EXTERNAL_CONTENT_URI, StringToJString(_ID + '=' + aID.ToString), nil) = 1; end; end.1 балл
-
TImageViewer как изменять размер картинки с Zoom Gesture
Евгений Корепов отреагировал sinuke за вопрос
вот тут я делал демку по видео (источник там есть) https://github.com/sinuke/Image-Zoom-Demo1 балл -
@tromani Я имел ввиду без устройства iPhone - можно на симуляторе iOS. Но лучше где то взять реальный телефон или iPad. Конечно нужен MacOS (OSX). Вся инфраструктура iOS программирования зависима от OSX и делается только через макос, независимо от языка. Вы его можете поставить на VMWare (нужно его еще пропатчить, для macOS) - готовый образ vmware можно скачать на рутрекере. Там и все инструкции. Но для его запуска вам нужен Intel процессор, хотя там есть варианты и с AMD, но с ним больше проблем на маке. Потом можно подключить реальный iPhone и он определиться в виртуалке.1 балл
-
1). Если в design-time: Задайте для ImageViewer: Align - None, Anchors - [akTop,akRight] и разместите ImageViewer на нужном месте (с необходимыми отступами). 2). Если не ошибаюсь, то нет свойства позволяющего сделать объект постоянно поверх все компонентов, поэтому рекомендую при добавлении компонентов перекрывающих ImageViewer делать ImageViewer.BringToFront; 3). Пропорционально относительно чего? Если пропорционально размера формы, то самостоятельно пересчитывайте размер ImageViewer в TForm.OnResize 4). Если речь идет о TPanel, то это стилевой объект и его цвет меняется через стиль. Более простой вариант - в качестве "панелек" использовать "не стилевой" TRecangle. Цвет TRectanle можете задать и в design-time и runtime (Rectangle1.Fill.Color := TAlphaColorRec.White) И кстати, почему ImageViewer? Может TImage будет достаточно?1 балл
-
{$IFDEF ANDROID} procedure KeepScreenOn(aEnable: boolean); var vFlags: integer; begin vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON; if aEnable then begin CallInUIThread ( // uses FMX.Helpers.Android procedure begin TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags); end ); end else CallInUIThread ( procedure begin TAndroidHelper.Activity.getWindow.clearFlags (vFlags); end ); end; {$ENDIF} Это для Berlin и ниже. При использовании Tokyo - вызов CallInUIThread не нужен, можно вызывать напрямую, т.к. теперь главный Delphi поток это Java UIThread. iOS uses iOSapi.UIKit; {$R *.fmx} procedure TForm6.Button1Click(Sender: TObject); var UIApp : UIApplication; begin UIApp := TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication); UIApp.setIdleTimerDisabled(True); end;1 балл
-
Запретить отключение экрана приложения в Андроид: в файл проекта (Project - View Source) добавить строки: // в uses {$IFDEF ANDROID} Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNI.GraphicsContentViewText, {$ENDIF} {$R *.res} // и далее - перед Application.Initialize begin {$IFDEF ANDROID} TAndroidHelper.Activity.getWindow.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON); {$ENDIF} Application.Initialize; ...1 балл
-
Перехват СМС сообщения от определенного адресата
krapotkin отреагировал Равиль Зарипов (ZuBy) за вопрос
так сделано в одной из моих программ, автоматическое считывание кода подтверждения оплаты, подредактируй только его и не забудь про разрешения1 балл