Перейти к содержанию
  • Регистрация

gonzales

Пользователи
  • Публикаций

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

  • Посещение

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

    6

gonzales стал победителем дня 14 октября

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

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

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

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

1 658 просмотров профиля
  1. Для этого достаточно TGridLayout, мне то как раз нужно использовать сортировку "в процессе"))
  2. Вот моя переписка. Прислали вот такое письмо с вопросами Hello Alexey, Thanks for contacting Google Play Developer Support. Apologies for the delayed response. I understand you would like an extension to become 64-bit compliant. In order to submit your request, can you please provide the following: Reason for not being able to be compliant in time (if there’s a dependency on third party tools, please specify it) Reason for your request and your plan for migration Specific plan on how you will become compliant, with an estimation date for building 64-bit support that you can commit (For example: The app will be compliant 2 weeks after Embarcadero is compliant.) I look forward to your reply and assisting you further. Regards, Liz Google Play Developer Support я ответил так Hello Liz! Thank you for your letter. In answer to your questions, i provide that as soon as Embarcadero will make a 64x-compiler for Android, i will use it and make a compatible application. I hope, that it won't take long, i dont use any third party tools, only Embarcadero RAD Studio. I'm disappointed, that Embarcadero do not release a new version in time, like they still don't announce it. Also to this I want to ask, if i need to update my application in Google Play Market, i need to reques this extension every time, or only onсe? My application is made for users of our smart home system, and I'm very worried, that our new customers can't download it from Play Market, so I hope for a positive decision of my request!
  3. Очень интересует данная тема, конкретно нужно раскодировать h264 поток с ip-камер, разумеется для мобильных платформ (Android iOS). По взаимодействию с камерами по RTSP все написано и уже готово, готов RTP-клиент получающий на вход поток от камеры. Задача этот поток визуализировать. Как я понял, оптимальным было бы использование бибилиотек FFMPEG, в интернете есть уже скомпилированные .so библиотеки. http://megadarja.blogspot.com/2010/09/ffmpeg-android.html https://habr.com/ru/post/254737/ http://writingminds.github.io/ffmpeg-android-java/ Если я правильно понимаю, то подключение библиотек динамически не вызывает затруднений DocDir := IncludeTrailingPathDelimiter(System.IOUtils.TPath.GetLibraryPath); //* BASS BASSLibraryHandle := LoadLibrary(PChar(DocDir + 'libbass.so')); if BASSLibraryHandle = 0 then begin ShowMessage( 'libbass.so load FAIL'); end; if BASSLibraryHandle <> 0 then begin @BASS_Init := GetProcAddress(BASSLibraryHandle, ('BASS_Init')); @BASS_StreamCreateFile := GetProcAddress(BASSLibraryHandle, ('BASS_StreamCreateFile')); @BASS_ChannelPlay := GetProcAddress(BASSLibraryHandle, ('BASS_ChannelPlay')); @BASS_FXGetParameters := GetProcAddress(BASSLibraryHandle, ('BASS_FXGetParameters')); Result := True; end; а вот, что делать дальше, пока не понятно. Нужны описания библиотек с функциями и хоть какие-то наработки, как это добро использовать. Если есть кто-то, кому эта тема тоже была бы интересна, готов поработать совместно!!! Или может кто-то уже имел дело с FFMPEG, пните в нужную сторону, где чего почитать. Всем заранее спасибо
  4. Доброго времени всем! Не могу понять, как динамически создать компоненты в этой панели. Задача следующая, создать сетку (несколько колонок и рядов) и в эту сетку уложить компоненты соблюдая индекс сортировки. Разумеется, если компонентов много, должен работать скролл. Я делаю так, положил GridPanelLayout на VertScrollBox. Перед созданием сетки очищаю RowCollection RoomsScrollBox.RowCollection.Clear; Добавляю новый ряд with form1.RoomsScrollBox.RowCollection.Add do begin SizeStyle:= TGridPanelLayout.TSizeStyle.Absolute; Value:=form1.SkinSettings.Height + 10; end; А вот дальше затык, как положить компонент в рантайме в определенную ячейку? inherited Create(form1.RoomsScrollBox); Parent := form1.RoomsScrollBox; Такой вариант не подходит, так как нужно использовать сортировку. У GridPanelLayout есть свойство ControlCollection, у которого есть координаты на сетке, Column, Row и ссылка а объект Control, только я не пойму, как их использовать. Буду рад любой помощи!
  5. И вот настало долгожданное попозже))). Сорри, как-то проглядел вопрос. Я думал, что поменяв в рантайме сами элементы стиля мне не придется возиться с каждым объектом, который создается в рантайме. По сути хотел реализовать что-то типа смены цветовой схемы, например перед созданием объектов прохожу по используемым элементам стиля и меняю везде цвет на определенный. Далее создаю объекты, применяю к ним стиль и вуаля - цвет везде изменен на новый.
  6. Апну тему))) Возникла все-таки необходимость менять цвета объектов в рантайме. Конкретно уперся в TSwitch (переключатель). Проблема в том, что элементы его стиля содержатся в объекте TSwitchObject. Но если сделать так ReleSwitch.StyleLookup := 'switchstyledark'; StyleObject:=ReleSwitch.FindStyleResource('switchstyledark'); if (StyleObject is TSwitchObject) then TSwitchObject(StyleObject).FillOn.Color := TAlphaColorRec.Yellow; то среда ругается, что не знает, что такое TSwitchObject. Попытка загуглить, где содержится TSwitchObject результатов не дала. Вопрос собственно простой, как поменять свойство FillOn у объекта TSwitchObject?
  7. Одобрили приложение до 1-го августа 2020г. Надеюсь к тому времени и компилятор допилят)))
  8. Пока вот такой ответ Hello Alexey, Thanks for your reply. I’ve documented your request and escalated it to our review team. Our team is working to respond to your request as soon as possible. Please note that I can't guarantee your 64-bit extension request will be accepted, and you only need to request this extension once. I appreciate your patience and I’ll let you know the moment I have an update. If you have any other questions in the meantime, please let me know.
  9. Подал заявку, прошло 3 дня, никакого ответа. У кого-нибудь положительно решилась ситуация?
  10. Отвечу сам себе. Проблема решена. Всего два дня поисков и вот он, случай - краеугольный камень поиска ошибок! Меня аж забомбило, когда я это откопал. Оказалось, что мой грид лежит на лайоуте, у которого hittest = false. Так вот до тех пор, пока я не перевел его в true грид отказывался принимать ondragover. Но как только layout.hittest:=true все заработало. Дальше дело техники.
  11. Чтобы не плодить темы спрошу в этой. Столкнулся с такой же задачей, не пойму как решить. Есть два грида, нужно перетаскивать ячейки из одного в другой. Более менее разобрался с гридом, из которого тяну ячейки procedure TForm2.GridMouseDown(Sender: TObject; button: TMouseButton; Shift: TShiftState; X, Y: single); var Svc: IFMXDragDropService; DragData: TDragObject; DragImage: TBitmap; rect:trectf; begin TPlatformServices.Current.SupportsPlatformService(IFMXDragDropService, Svc); with Sender as TStringGrid do begin Grid.CellByPoint(X, Y, SourceCol, SourceRow); DragImage:=TBitmap.Create; DragImage.Width:=round(Grid.Width); DragImage.Height:=round(grid.Height); rect:=rectf(0,(SourceRow+1)*grid.RowHeight,grid.Width,(SourceRow+2)*grid.RowHeight); DragImage.Canvas.BeginScene(); DragImage.Canvas.Fill.Color:=4280444565; //DragImage.Canvas.FillRect(rect,0,0,[],1); DragImage.Canvas.FillText(rect,grid.Cells[SourceCol,SourceRow],false,1.0,[],TTextalign.Leading); DragImage.Canvas.EndScene; form1.currentItem := form1.items.ChildNodes.Nodes[SourceRow]; DragData.Source := Sender; try DragData.Data := SourceRow; Svc.BeginDragDrop(self, DragData, DragImage); finally DragImage.Free; end; end; end; Вижу, что код отрабатывает, появляется изображение с текстом ячейки, которую перетаскиваю. Но вот заставить принять ее второй грид не могу. Более того, даже в droptarget ничего не попадает. Не пойму как гриду сказать, что он может принимать что-то по drag&drop В VCL это было так procedure TForm2.RoomGridDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := (Source = Grid); end; А как это сделать в FireMonkey? procedure TForm2.RoomGridDragOver(Sender: TObject; const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); begin Operation := TDragOperation.Copy; end; это не помогает... вообще не вызывается dragover...
  12. оо, спасибо. вот ее как раз и нет и в основной программе))) конечно, в основной программе именно так. но через синхронизацию в form1 все равно ходить надо)) а вот это не понял???
  13. Так понятно, что можно сделать. Но это лишь пример оторванный от реальности. Хочется понять, почему класс типа TThreat не работает в своем потоке.
  14. ох))) тяжело это))) У меня есть смутные сомнения, что придуманная мною конструкция работает в главном потоке. Вот накидал пример, но он фризит приложение(( Если не трудно, посмотрите пожалуйста unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation; type TClient = class(TThread) public procedure Logic; constructor Create; Overload; destructor Destroy; Overload; end; var Client: TClient; type TForm1 = class(TForm) Button1: TButton; ProgressBar1: TProgressBar; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} constructor TClient.Create; begin inherited Create; end; destructor TClient.Destroy; begin inherited; end; procedure TClient.Logic; var i:integer; a:real; begin for i := 0 to 100000000 do begin a:=i/3; if i mod 1000000 = 0 then begin TThread.Synchronize(nil, procedure begin form1.ProgressBar1.Value:=form1.ProgressBar1.Value+1; end); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin form1.ProgressBar1.Value := 0; Client.Logic; end; end.
×
×
  • Создать...