Перейти к содержанию

Slym

Пользователи
  • Активность

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

  • Посещение

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

    24

Slym стал победителем дня 2 ноября 2020

Slym имел наиболее популярный контент!

Информация о Slym

  • Звание
    Продвинутый пользователь

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Я пробовал полезную нагрузку сунуть в поток а гуй через sync и с ожиданием Event как то так (псевдокод) : TThread.CreateAnonThread( begin Event:=TEvent.Create; try DoStep1; Event.Reset; TThread.Sync( begin ShowMessageAsync('Ахтунг!' begin Event.SetEvent; end) end); Event.WaitFor; DoStep2;.... fin Event.Free; end; end)
  2. Да весь FMX на интерфейсах и QueryInterface... FireDAC так вообще страшный сон все на QueryInterface, на фабриках фабрик. а Модель COM - построена на одном интерфейсе - IDispatch, все!
  3. VCLComObject все таки завязан только названием! Остальное завязано только на QueryInterface, а оно нативно и мультиплатформенно
  4. Пример в атаче, там же патченый FMX.Controls.Presentation VCLComObject.zip
  5. наследовать ради интерфейса? не проще композицией интерфейс внести? property OptionsIntfImpl: IFDStanOptions read FOptionsIntf implements IFDStanOptions; можно было бы без наследования вообще через TComponent.VCLComObject, но какая то редиска в TPresentedControl не спустила QueryInterface до TComponent.QueryInterface но можно пропатчить FMX.Controls.Presentation.pas function TPresentedControl.QueryInterface(const IID: TGUID; out Obj): HRESULT; else Result := inherited; и делать так var Test:ITest; begin if Supports(Label1, ITest, Test) then Test.Test; end; Если надо пример - пиши, скину
  6. https://stackoverflow.com/questions/46457733/how-to-get-notification-authorization-status-in-swift-3 т.е. както так- писал в блокноте procedure TForm1.FormCreate(Sender: TObject); begin TUNUserNotificationCenter.OCClass.currentNotificationCenter.getNotificationSettingsWithCompletionHandler(OnNotificationSettings); end; procedure TForm1.OnNotificationSettings(NotificationSettings: UNNotificationSettings); begin NotificationSettings.authorizationStatus; end;
  7. if not TCLLocationManager.OCClass.locationServicesEnabled then abort; AuthorizationStatus:=TCLLocationManager.OCClass.authorizationStatus; if AuthorizationStatus in [kCLAuthorizationStatusDenied, kCLAuthorizationStatusRestricted] then abort; if AuthorizationStatus in [kCLAuthorizationStatusAuthorizedWhenInUse, kCLAuthorizationStatusAuthorized] then abort; FLocater := TCLLocationManager.Create; try FLocater.retain; FLocater.requestWhenInUseAuthorization; finally FLocater.release; FLocater:=nil; end;
  8. 1. Патчить 2. Не хочется генофонд трогать Можно скопипастить к себе TAVAudioSession и патчить у себя... а потом AudioSession := TAVAudioSession.Wrap(TAVAudioSession.OCClass.sharedInstance); if AudioSession.recordPermission=AVAudioSessionRecordPermissionDenied then AudioSession.requestRecordPermission(TPermissionBlock.Proc); type TPermissionBlock=class public class procedure Proc(Granted: Boolean); end; class procedure TPermissionBlock.Proc(Granted: Boolean); begin if Granted then end;
  9. Slym

    Serial port

    я обычно с гуя:
  10. там еще дефайны стоят #if defined(WINDOWS) && !defined(WINDOWLESS) т.к. нельзя пропускать функции в структуре - надо точно знать с какими дефайнами длл сбилдена. если лень описывать ненужную функцию делай заглушкой SciterGetPPI: pointer; - повторюсь пропускать нельзя
  11. а где тут stdcall? type PSciterAPI = ^ISciterAPI; ISciterAPI = packed record version: UINT; SciterClassName: function(): LPCWSTR;stdcall; SciterVersion: function(major: BOOL): UINT;stdcall; end;
×
×
  • Создать...