Delphi, Ручки в объектах TPanel

Я читал исходный код для tmplayer и MPUI, обоих медиаплееров, которые используют MPlayer в качестве бэкенда для воспроизведения медиафайлов в Delphi, и я заметил здесь, а также в других старых кодах, с которыми я пытался экспериментировать, которые я не могу использовать

Form1.Rectangle1.Handle

или, как в этом примере для слоя tmp, который пытается направить видеовыход на TPanel

CmdLine := HomeDir + 'mplayer.exe -slave -identify'
+' -wid ' + IntToStr(Form1.Panel1.Handle) + ' -colorkey 0x101010'
+' -nokeepaspect -framedrop -autosync 100' + #32 + Media;

Как видите, RAD studio xe6/7 жалуется, что элемент не содержит параметр с именем Handle. Это что-то, что использовалось в более старых версиях, но больше не может использоваться, и если да, то как я могу выполнить ту же задачу в простой форме Firemonkey.

ИЗМЕНИТЬ

Итак, теперь мне ясно, что параметр Handle применим только для форм VCL. Пытаюсь перефразировать свой вопрос,

Как я могу перенести эту конкретную строку кода (получение дескриптора компонента) в форму Firemonkey?


person dearn44    schedule 24.09.2014    source источник
comment
Вам нужно уточнить, что ваш вопрос касается переноса кода VCL на FMX.   -  person David Heffernan    schedule 24.09.2014


Ответы (1)


Panels и/или Rectangle в Firemonkey не имеют Handle в качестве члена. Вместо этого FireMonkey Handle является членом компонента Form.

Вы можете преобразовать дескриптор FireMonkey в дескриптор конкретной платформы с помощью функции: WindowHandleToPlatform, но нет способа получить дескриптор элемента управления внутри формы.

Может быть, вы можете заменить Rectangle другой внутренней формой и получить ее дескриптор. Взгляните на FMXEmbeddedForm .

person aleroot    schedule 24.09.2014