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

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

Модераторы
  • Постов

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

  • Посещение

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

    265

Весь контент Равиль Зарипов (ZuBy)

  1. ну самое простое наверное кинуть TLayout на форму и все контролы переместить на него PreloadContent(Layout1);
  2. Ну как-бы все вроде из названия понятно Debug конфиг есть возможность пользоваться дебагером вес приложения больше из-за доп. файлов (deployment) Release конфиг дебагер не работает вес меньше возможность публикации приложении в магазины платформ
  3. С условием, что все ячейки одинаковые будут
  4. Поиск по форуму сэкономил бы много времени как раз то что вы хотите сделать, даже код есть
  5. При первом появлении стили еще не подгружены, их можно прогрузить заранее Возможно это решит проблему
  6. Ну так отключите если не используется и не будет пугать. Из коробки сделано, чтобы новички при создании нового приложения не испытывали сложности. Эти все разрешения используются в демках студии. По очереди или скопом.
  7. TGestureManager кинуть на форму связать контрол и TGestureManager через свойство Touch выбрать LongTap в InteractiveGestures в событии OnGesture контрола написать примерно такое if EventInfo.GestureID = igiLongTap then ShowMessage('Long Tap'); а меню это уже совсем другая тема
  8. эти разрешения поставлены из коробки и их нужно включать по надобности. READ_CALENDAR и WRITE_CALENDAR - для работы с календарём ACCESS_COARSE_LOCATION и ACCESS_FINE_LOCATION - для gps CALL_PHONE - для работы со звонками CAMERA - для фото и видео съемке READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE - для записи и чтения файлов на устройстве и тд.. все чем не пользуетесь, можно и нужно отключать
  9. в раздел интересующий зайти и там сверху справа есть "Подписаться"
  10. обновления xcode не просто так делается, IOS развивается и SDK меняется. а получить SDK можно только установив последний xcode
  11. Rad Studio жестко трактует нам пользоваться последними версиями их продуктов, т.к. с выходом новых версии xcode, ios они делают поддержку для них. и то что работало когда-то, сейчас может не работать. текущая стабильная связка Sierra+XCode 8.0+PAserver 18+Rad Studio Berlin Update 2
  12. Там нужно модуль phys вроде подрубить, где то на форуме было
  13. ModernLV.getVisibleCount
  14. ну и кому хочется сделать Ballon, а не прямоугольник копируем в проект и открываем FMX.Controls.Win.pas Ctrl+F -> constructor TWindowsHint.Create(const AHandle: TWindowHandle); FToolTipHandle := CreateWindowEx(0, TOOLTIPS_CLASS, nil, WS_POPUP or TTS_ALWAYSTIP or TTS_BALLOON, 0, 0, 300, 300, FNativeControlHandle, 0, hInstance, nil); TTS_BALLON - сделает закругленные подсказки со стрелкой сохраняем Готово!
  15. без костылей никак, т.к. этот код не вызывается повторно. почему повторно? потому что форма создается всегда со стилем Sizeble, потом если стиль другой (например None), то вызывается пересоздание окна (не формы!!) где выставляются стили (винапи). и так как форма создана, то повторно событие где вызывается этот код не происходит надеюсь понятно написал)
  16. я тут посидел немного, сделал костыль. особо не заморачивался копируем в проект и открываем FMX.Forms.pas Ctrl+F -> procedure TCommonCustomForm.SetShowHint(const Value: Boolean); procedure TCommonCustomForm.SetShowHint(const Value: Boolean); begin FShowHint := Value; ReleaseLastHinted; // ZuBy *** if (not(csDesigning in ComponentState)) then begin FreeAndNil(FSharedHint); FSharedHint := THint.CreateNewInstance(Handle); end; // *** ZuBy end; сохраняем в событии OnCreate, OnShow пишем ShowHint := true; Готово!
  17. на андроиде не проверял, но должно работать alphaLVS_Berlin.zip
  18. Ссылка: http://blog.rzaripov.kz/2017/01/blog-post.html Автор: Зарипов Равиль @ZuBy Описание: Онлайн-сервисы в помощь разработчику по дизайну
  19. намёк <TSpeedButton>.StaysPressed := false;
  20. вот мой рабочий вариант { ********************************************************** } { } { CodeGear Delphi Runtime Library } { } { Delphi-Objective-C Bridge } { Interfaces for Cocoa framework CoreTelephony } { } { Copyright (c) 2010, Apple Inc. All rights reserved. } { } { Translator: Embarcadero Technologies, Inc. } { Copyright(c) 2016 Embarcadero Technologies, Inc. } { All rights reserved } { } { ********************************************************** } unit iOSapi.CoreTelephony; interface uses Macapi.ObjectiveC, iOSapi.CocoaTypes, iOSapi.Foundation; // ===== External functions ===== const libCoreTelephony = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony'; type {$M+} // ===== Forward declarations ===== CTCarrier = interface; CTTelephonyNetworkInfo = interface; CTCall = interface; CTCallCenter = interface; // ===== Interface declarations ===== CTCarrierClass = interface(NSObjectClass) ['{FA14F6EF-18EF-4AE0-A115-5D5819B05A32}'] end; CTCarrier = interface(NSObject) ['{7FF111BF-7573-4BD2-881F-0B614DD5C01E}'] function allowsVOIP: Boolean; cdecl; function carrierName: NSString; cdecl; function isoCountryCode: NSString; cdecl; function mobileCountryCode: NSString; cdecl; function mobileNetworkCode: NSString; cdecl; end; TCTCarrier = class(TOCGenericImport<CTCarrierClass, CTCarrier>) end; TCellularProviderNotifier = procedure(const Data: CTCarrier) of object; CTTelephonyNetworkInfoClass = interface(NSObjectClass) ['{28EB8488-EE8F-4967-B8A8-6BF96AD4382D}'] end; CTTelephonyNetworkInfo = interface(NSObject) ['{F75CE940-A78E-4C64-812E-0576386B582D}'] function subscriberCellularProvider: CTCarrier; cdecl; procedure setSubscriberCellularProviderDidUpdateNotifier(Handler: TCellularProviderNotifier); cdecl; end; TCTTelephonyNetworkInfo = class(TOCGenericImport<CTTelephonyNetworkInfoClass, CTTelephonyNetworkInfo>) end; CTCallClass = interface(NSObjectClass) ['{1FA8C69C-57FA-4607-ACBA-547C9636312F}'] end; CTCall = interface(NSObject) ['{31625956-A516-437B-A385-7DF292D6FB5A}'] function callID: NSString; cdecl; function callState: NSString; cdecl; end; TCTCall = class(TOCGenericImport<CTCallClass, CTCall>) end; TCallEventHandler = procedure(const Data: CTCall) of object; CTCallCenterClass = interface(NSObjectClass) ['{A28B0E07-ED5A-4C05-82DA-E9FE4073E14D}'] end; CTCallCenter = interface(NSObject) ['{0FDB7AC7-B379-4E20-8D72-F1C11EA32EB6}'] procedure setCallEventHandler(EventHandler: TCallEventHandler); cdecl; function currentCalls: NSSet; cdecl; end; TCTCallCenter = class(TOCGenericImport<CTCallCenterClass, CTCallCenter>) end; // exported string consts function CTCallStateDialing: NSString; function CTCallStateIncoming: NSString; function CTCallStateConnected: NSString; function CTCallStateDisconnected: NSString; implementation {$IF defined(IOS) and defined(CPUARM)} uses Posix.Dlfcn; {$ENDIF IOS} const CoreTelephonyFwk: string = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony'; function CTCallStateDialing: NSString; begin Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateDialing'); end; function CTCallStateIncoming: NSString; begin Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateIncoming'); end; function CTCallStateConnected: NSString; begin Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateConnected'); end; function CTCallStateDisconnected: NSString; begin Result := CocoaNSStringConst(CoreTelephonyFwk, 'CTCallStateDisconnected'); end; {$IF defined(IOS) and defined(CPUARM)} var CoreTelephonyModule: THandle; initialization CoreTelephonyModule := dlopen(MarshaledAString(libCoreTelephony), RTLD_LAZY); finalization dlclose(CoreTelephonyModule); {$ENDIF IOS} end. UPDATE Я еще в SDK прописал Framework CoreTelephony по аналогии с другими фреймворками и обновил кеш SDK
  21. uses FMX.Utils; procedure TForm7.Button1Click(Sender: TObject); var gamecanvas: TBitmap; i, j: integer; bitData: TBitmapData; p: PAlphaColorArray; begin gamecanvas := TBitmap.Create(256, 256); try if gamecanvas.Map(TMapAccess.ReadWrite, bitData) then begin for i := 0 to 255 do begin p := bitData.GetScanline(i); for j := 0 to 255 do p[j] := TAlphaColorF.Create(random(255) / 255, random(255) / 255, random(255) / 255, 1).ToAlphaColor; end; gamecanvas.Unmap(bitData); self.Canvas.BeginScene(); self.Canvas.DrawBitmap(gamecanvas, gamecanvas.BoundsF, RectF(0, 0, 256, 256), 1); self.Canvas.EndScene; end; finally gamecanvas.Free; end; end;
  22. такой возможности пока нет, потому что нативные компоненты всегда располагаются выше стилизованных. ждать нужно будущих версии студии, там будут нативные компоненты под андроид и ZOrder
×
×
  • Создать...