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

Sergey S

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

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

  • Посещение

Весь контент Sergey S

  1. gonzales, спасибо за ответ. Обязательно почитаю!
  2. Собственно суть задачи: есть набор кадров с камеры. Из этого набора кадров необходимо создать видеоролик. Напрямую с камеры писать никак не получится (там свой собственный протокол, кадры приходят по GIGE из внутренней памяти камеры в виде набора данных). Как из этого потока данных собрать кадр и вывести его на форму - вопрос решен. А вот как из этого видеофайл сделать, я не представляю (да плюс еще Win+Linux). Вроде как-то можно через ffmpeg, но тоже ничего пока не нашел. Может кто решал подобную задачу, поделитесь информацией. Буду очень признателен. Спасибо.
  3. Понятно. Спасибо Вам за ответ. Значит, придется в сторону Qt смотреть и решать эту задачу там.
  4. Sergey S

    Работа с web камерой

    Добрый день. Пытаюсь организовать взаимодействие с web камерой. К камере подключается, все работает, картинка есть. Проблема возникает, когда пытаюсь получить настройки изображения камеры. При вызове TVideoCaptureDevice.CaptureSetting получаю ошибку "Abstract Error". Под Windows все работает без проблем, под Linux не хочет.:( Знающие люди, подскажите пожалуйста, что это может быть? Реально ли это как-то побороть, или под Linux в RAD Studio это просто не реализовано? Спасибо.
  5. Под Linux, оказалось, есть особенность. Метод вызывается не в момент перемещения формы, а в момент отпускания ЛКМ после перемещения.
  6. Ну, по крайней мере ничего сверхсложного. Изменяем свойство DragKind у Dockable формы и свойство DockSite у PageControl. Получаем нужный функционал, заказчик доволен. Если бы не Linux, по я бы сделал на VCL все и вопрос закрылся бы, но...:( Если бы Вы примерчик маленький дали, как так сделать. Я был бы безмерно счастлив. Спасибо Вам большое! Если позволите, 2 вопроса: 1. Есть ли возможность сделать, чтобы после драга вкладки форму сразу можно было перетаскивать на нужное место? 2. Каким образом форму корректно вернуть (с помощью драга) обратно закладкой на TabControl? Совершенно верно. Заказчик просит сделать, как в Хроме (да еще кроме Win, чтобы под Linux все работало).
  7. К сожалению, в D11.2 повторить не получилось.:( Если все правильно понимаю, то теперь при перемещении формы этот метод больше не вызывается. У меня получилось его вызвать, только напрямую через: SetBounds(10, 10, 500, 500); Даже присвоение новых значений параметрам: Left, Top, Width, Height не вызывает этот метод.
  8. Через фреймы у меня сделано сейчас. Перекинуть фрейм с вкладки на вновь созданную форму - не проблема, проблема в другом. Каким образом сделать так, чтобы это происходило как в браузере Google Chrome, когда пользователь тянет за ярлык вкладки. И обратно, когда дочернее окно расположено над областью ярлыков вкладок, фрейм обратно переносится на закладку TabControl, а окно уничтожается. В VCL это все реализовано "из коробки", в FMX - нет.:(( Сейчас оба этих действия у меня выполняются после нажатия на кнопки, заказчик требует по сути режим D&D, но в в TabControl он какой-то...:((( Весь TabControl мне тянуть не надо, а если включить его для отдельных закладок, они нажиматься перестают.
  9. Добрый день. Заказчик высказал пожелание, чтобы вкладки TabControl вели себя как в Google Chrome. Т.е. пользователь мог, потянув за вкладку мышью, "отстегнуть" ее и сделать полноценным окном. Потом, если что, сделать окно обратно вкладкой. Под VCL это делается очень просто и элегантно, но вот под FMX я такой возможности не нашел.:((( Вернуться обратно к VCL возможности нет, т.к. заказчик требует кроссплатформенность (Win/Linux). Может кто-то знает, возможно ли это сделать? Буду очень признателен за помощь. Спасибо.
  10. В RAD Studio 11.2 обнаружилась интересная особенность. Если закрывать вкладку таким образом, то форма, похоже, теряет фокус ввода.:( Ее не получается ни переместить, ни свернуть/развернуть, ни закрыть, ни размеры поменять. Такое поведение продолжается до тех пор, пока пользователь не кликнет мышью на каком-либо объекте на форме. Никакие SetFocus, ActiveControl:=True и т.п. не помогают. Объект фокус ввода исправно получает, но мышь форма не видит. Пробовал под VCL, такой проблемы нет. Похоже, это особенность FMX.:( Может кто еще с этим сталкивался, подскажите, как бороться?
  11. Slym, спасибо. Я примерно так и думал сделать. Только вопрос. Как можно определить pid при запуске приложения?
  12. Добрый день. Подскажите пожалуйста, есть ли возможность запретить повторный запуск приложения под Linux? Там с Mutex уже не получится.
  13. Спасибо Вам за уточнение. Последнее замечание наверное. При таком вызове: ThreadId := GetCurrentThreadId(); Процедура SetThreadPriority должна вызываться непосредственно из потока, приоритет которого мы собираемся менять. Если стоит задача например из главного потока изменить приоритет другого потока, который был создан из главного, то такой способ здесь уже не подойдет. В данном случае необходимо будет воспользоваться свойством ThreadId класса TThread. ThreadId:=SecondThread.ThreadId;
  14. Спасибо большое Вам за уточнение! Не могли бы Вы пояснить некоторые моменты. 1. По какой причине в данном случае подключается модуль Posix.Errno? В коде к нему обращения нет. 2. Тип pthread_t в RAD Studio не определен (у меня версия 11.2). Каким образом Вам удалось заставить компилироваться данный код? 3. Код pthread_setschedparam(ThreadId, SCHED_FIFO, @Params) так же не компилируется, потому что функция pthread_setschedparam в RAD Studio в качестве аргумента Params требует передавать значение, а не указатель на него. Я так думаю, здесь , как и в п.2, скорее всего взято из Си. Спасибо.
  15. Спасибо Вам большое, все получилось, но пришлось код немного подправить. 1. В раздел USES добавить модуль Posix.Pthread, функции pthread_self и pthread_setschedparam определены как раз в нем 2. Тип pthread_t, я так понял, в RAD Studio отсутствует (скорее всего он из Си). Заменил его на LongWord (тип функции pthread_self). 3. При вызове функции pthread_setschedparam аргумент Params передается непосредственно, а не через указатель. Исправленный код: uses Posix.Sched, Posix.Pthread; var Params: sched_param; ThreadId: LongWord; begin ThreadId := pthread_self(); Params.sched_priority := 10; // устанавливаем приоритет 10 if pthread_setschedparam(ThreadId, SCHED_FIFO, Params) <> 0 then raise Exception.Create('Error setting thread priority'); end; И последнее. Чтобы все корректно работало, приложение необходимо запускать с root правами. Иначе вызов pthread_setschedparam вернет ошибку 1, и никакой приоритет не установится.
  16. Добрый день всем. Подскажите пожалуйста, как правильно назначить приоритет создаваемому потоку для Linux (RAD Studio 11.2)? Пробовал так: constructor TMyThread.Create; begin inherited Create(True); Policy := 1; Priority := 90; end; После инициализации потока приложение "падает" с ошибкой: Thread error: Недопустимый аргумент (22). Если просто запустить поток по умолчанию, все работает.
×
×
  • Создать...