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

Лидеры

  1. Евгений Корепов

    Евгений Корепов

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


    • Баллы

      3

    • Постов

      738


  2. kami

    kami

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


    • Баллы

      2

    • Постов

      643


  3. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      1

    • Постов

      2 517


  4. RoschinSpb

    RoschinSpb

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


    • Баллы

      1

    • Постов

      187


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

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

  1. Друзья, столкнулся с проблемой, описанной в посте Хочу предложить свое решение (может кому пригодится). Чтобы центр масштабирования был именно в центре объекта (в моем случае это TImage), необходимо после масштабирования установить свойство Align = TAlignLayout.Center, причем до этого нужно установить его в TAlignLayout.None ! Примерно вот так: Image1.Scale.X:= 1.3; Image1.Scale.Y:= 1.3; Image1.Align:= TAlignLayout.None; Image1.Align:= TAlignLayout.Center; В этом случае будет эффект увеличения объекта из центра. Если убрать строчку "Image1.Align:= TAlignLayout.None;" - увеличение будет из левого верхнего угла. На мой взгляд некорректное поведение платформы. Возможно в будущих релизах это поправят. Embarcadero® Delphi 10.1 Berlin Update 2 Version 24.0.25048.9432
    1 балл
  2. читаем внимательно, kinvey тут не используется http://blog.rzaripov.kz/2017/02/firebase-android-ios.html http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html
    1 балл
  3. RoschinSpb

    Удалить картинку из TimageList

    Ломать не строить, здесь нет ни каких сложностей. TImageList содержит две коллекции Source и Destination. Удаляете из них Item`ы как из обычных коллекций TCollection с помощью методов Delete и Clear. В Source находятся сами изображения, в Destination ссылки на Source. Если удалите только из Source, то в нумерация изображений не поменяется и останутся пустые элементы, хотя расход памяти уменьшится. Если удалите только из Destination, то нумерация картинок съедет, и расход памяти почти не изменится. Каждый элемент Destination может содержать несколько ссылок на Source это коллекция Layers, из которой точно также можно удалять элементы.
    1 балл
  4. у людей при смерти это называется конвульсии. тут примерно то же. просто ждите. токио или умрет, или все-таки сделают фикс-апдейт
    1 балл
  5. kami

    два select'а в одной процедуре

    Да. И иногда очень удобно. Сразу получаешь полный набор консистентных данных (главных и зависимых), выполнив всего один запрос к базе.
    1 балл
  6. kami

    два select'а в одной процедуре

    ADO? Работаем с первым. Потом: myADOStoredProc.Recordset := myADOStoredProc.NextRecordset(i); // здесь i - фейковая Integer переменная, она не понадобится далее И продолжаем работать с первым, но теперь там уже сидит второй Возможно, прокатит и такой финт ушами: myADOStoredProc.open; tmpQuery.Recordset:=myADOStoredProc.NextRecordset(i); // и пробуем использовать StoredProc как первый набор данных, а tmpQuery - как второй. Но не факт, что такое получится, // возможно - для правильного подтягивания рекордсета в сторонний квери потребуется сперва открыть его фейковым запросом, например /// `Select 1`
    1 балл
  7. Создал запрос https://quality.embarcadero.com/browse/RSP-17813 , проголосуйте кому не лень. Спасибо.
    1 балл
  8. Вы про global.pas? Если про него, то как то так : unit global; interface uses System.Classes, {IdHTTP,}System.Net.HTTPClient, SysUtils, FMX.Notification; /// <summary> /// Процедура регистрации устройства. /// </summary> /// <param name="DeviceID"> /// ID регистрируемого устройства /// </param> /// <param name="DeviceToken"> /// Токен регистрируемого устройства /// </param> procedure RegisterDevice(DeviceID : string; DeviceToken : string); /// <summary> /// Процедура отправки Push сообщения на сервер. /// </summary> /// <param name="MessageText"> /// Текст отправляемого сообщения /// </param> procedure SendPush(MessageText : string); /// <summary> /// Процедура вывода сообщения из приложения. /// </summary> /// <param name="MessageText"> /// Текст выводимого сообщения /// </param> /// <param name="BadgeNumber"> /// Число выводимое на иконку приложения /// </param> procedure ShowNotification(MessageText : string; BadgeNumber : integer); const // Доменное имя сайта DOMAIN: string = 'http://example.ru/'; implementation procedure RegisterDevice(DeviceID : string; DeviceToken : string); var // Подключение для передачи данных httpconnect : THTTPClient; AQuery : String; begin try // Создаём подключение httpconnect := THTTPClient.Create; // Указываем данные для отправки AQuery:='?action=register-device&did=' + DeviceID + '&token=' + DeviceToken; {$ifdef ANDROID} AQuery:=AQuery + '&platform=android'; {$else} AQuery:=AQuery + '&platform=ios'; {$endif} // Отправляем запрос httpconnect.Get(DOMAIN + 'push.php' + AQuery); finally // Отключаемся и освобождаем память httpconnect.free end; end; procedure SendPush(MessageText : string); var // Подключение для передачи данных httpconnect : THTTPClient; AQuery : String; begin try // Создаём подключение httpconnect := THTTPClient.Create; // Указываем данные для отправки AQuery:='?action=send-push&text=' + MessageText; // Отправляем запрос httpconnect.Get(DOMAIN + 'push.php' + AQuery); finally // Отключаемся и освобождаем память httpconnect.Free; end; end; procedure ShowNotification(MessageText : string; BadgeNumber : integer); var NotificationC: TNotificationCenter; Notification: TNotification; begin // Создаём центр уведомлений и уведомление для отправки NotificationC := TNotificationCenter.Create(nil); Notification := NotificationC.CreateNotification; try // Если центр уведомлений поддерживается системой if NotificationC.Supported then begin // Устанавливаем текст сообщения Notification.AlertBody := MessageText; // Включаем звук при выводе сообщение Notification.EnableSound := true; // Устанавливаем цифру на иконке приложения Notification.Number := BadgeNumber; NotificationC.ApplicationIconBadgeNumber := BadgeNumber; // Выводим сообщение из приложения NotificationC.PresentNotification(Notification); end; finally // Очищаем переменные Notification.DisposeOf; NotificationC.Free; NotificationC.DisposeOf; end; end; end.
    1 балл
  9. Блин! У меня нет слов! Проблема решилась многочасовым гугленьем. Самое смешное - решение нашел на этом форуме в сообщении http://fire-monkey.ru/topic/3014-ne-otobrazhaetsya-tlistitemimage/?do=findComment&comment=18113 , спасибо огромное @DimArt за решение! Вся проблема была в недокументированном свойстве OwnsBitmap, достаточно после загрузки изображения в ListItemImage.Bitmap добавить строчку ListItemImage.OwnsBitmap:=True; И все начинает отлично работать под Android. Документация ембаркадеро говорит нам о этом свойстве следущее "Embarcadero Technologies does not currently have any additional information." (http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.ListView.Types.TListItemImage.OwnsBitmap). Б*%дь, ну как так то? У меня одни маты, два дня просраны вхолостую... Итоговый, работоспособный код функции SetupImageObject ниже function SetupImageObject(const AName : String; AWidth, AHeight, X , Y : Single; AAlign, AVertAlign: TListItemAlign) : TListItemImage; Var AImageURL : String; begin Result:=TListItemImage(AItem.View.FindDrawable(AName)); if Result=Nil then begin Result:=TListItemImage.Create(AItem); AImageURL:=AItem.Data['ImageURL'].AsString; Result.Bitmap:=LoadImageFromURL(AImageURL); Result.OwnsBitmap:=True; end; Result.Name:=AName; Result.Width:=AWidth; Result.Height:=AHeight; Result.PlaceOffset.X:=X; Result.PlaceOffset.Y:=Y; Result.Align:=AAlign; Result.VertAlign:=AVertAlign; Result.ScalingMode:=TImageScalingMode.StretchWithAspect; end;
    1 балл
  10. zairkz

    TMultiView и TListBox

    Если вам подойдет можете на MultiView1 ->OnHidden прописать ListBox1.ItemIndex:=-1;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...