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

Alex7wrt

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

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

  • Посещение

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

    31

Весь контент Alex7wrt

  1. Я ж не спорю, что Ваш код работает. Наоборот, так, как у Вас, и должно быть. Я не пойму, что у меня не так. Первый раз с таким сталкиваюсь. Delphi XE7. Пример я привел выше. В коде 1.5 тысячи строк, но он полностью рабочий. Просто первый раз в нем пришлось использовать свойство Left и такое обнаружил.
  2. Процедура относится к другой форме - form1. Но даже в своем юните описанный Вами способ у меня не работает. Скриншот прилагаю
  3. Добрый день. При попытке задать координаты одной из форм: form5.left:=5; Происходит ошибка следующего содержания: [dcc32 Error] unit5.pas(42): E2010 Incompatible types: 'TRectangle' and 'Integer' При введении точки после Form5 в выпадающем списке свойств и методов свойству Left, как и Тоp указан тип TRectangle. Откуда это могло взяться? У других форм все нормально.
  4. Добрый день. Интересует, как можно сделать фон формы прозрачным так, чтобы у нее остались видны заголовок и рамки. Если выставить свойство Transparancy в True, то заголовок и рамки исчезают. То же самое происходит если выставить цвет заливки прозрачным.
  5. Спасибо за ответ!
  6. Добрый день. У TMediaPlayerControl нет события OnClick, но есть OnTap. Однако в Windows оно не работает. Существует ли какой-нибудь способ уловить клик по этому компоненту? О варианте с размещением поверх него формы и отработке события на ней знаю, но он не подходит.
  7. После долгого поиска все-таки нашел тему на этом же форуме )). Хотя раньше искал, но не находил. Тема: http://fire-monkey.ru/topic/1452-kak-poimat-peremeschenie-formy/ Суть решения - необходимо перекрыть виртуальный метод формы SetBounds, который выполняется каждый раз при перемещении формы procedure TCommonCustomForm.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual; Для этого в описании методов формы пишем type TForm1 = class(TForm) ........ procedure SetBounds(ALeft, ATop, AWidth, AHeight: integer); override; ....... end; и в теле процедуры выполняем необходимые действия procedure TForm1.SetBounds(ALeft, ATop, AWidth, AHeight: integer); begin inherited; if assigned(form2) then begin form2.Left:=ALeft; form2.top:=ATop; end; end; В данном случае - присвоение второй форме координат первой.
  8. Добрый день. Интересует есть ли в FMX способ отследить передвижение формы.
  9. Нашел ошибку. Вот так работает: procedure MakeWindowScreenShot; var VCLBitmap: Vcl.Graphics.TBitmap; WindowRect: TRect; tmpStream: TMemoryStream; dc: HDC; begin VCLBitmap := Vcl.Graphics.TBitmap.Create; dc := GetDc(FMXHandletoHWND(form5.Handle)); try tmpStream:= TMemoryStream.Create; WindowRect:= Rect(0, 0, form5.Width, form5.Height); VCLBitmap.Width:= WindowRect.Width; VCLBitmap.Height:= WindowRect.Height; BitBlt(VCLBitmap.Canvas.Handle, WindowRect.Left, WindowRect.Top, WindowRect.Width, WindowRect.Height, dc, 0, 0, SRCCOPY); VCLBitmap.SaveToStream(tmpStream); tmpstream.Position:=0; form4.image1.bitmap.LoadFromStream(tmpStream); finally VCLBitmap.free; tmpStream.Free end; end;
  10. Решил сделать скриншот всей формы, на которой растянут компонент TMediaPlayerControl. На основе http://fire-monkey.ru/topic/648-xe7-sozdanie-printscreenov-polnykh-i-chasti-ekranov/ и http://fire-monkey.ru/topic/492-windows-kak-zagruzit-hbitmap-v-tbitmap/ Получился такой код procedure MakeWindowScreenShot; var VCLBitmap: Vcl.Graphics.TBitmap; WindowRect: TRect; tmpStream: TMemoryStream; begin VCLBitmap := Vcl.Graphics.TBitmap.Create; try tmpStream:= TMemoryStream.Create; WindowRect := Rect(0, 0, form5.Width, form5.Height); VCLBitmap.Width := WindowRect.Width; VCLBitmap.Height := WindowRect.Height; BitBlt(VCLBitmap.Canvas.Handle, WindowRect.Left, WindowRect.Top, WindowRect.Width, WindowRect.Height, FMXHandletoHWND(form5.Handle), 0, 0, SRCCOPY); VCLBitmap.SaveToStream(tmpStream); form4.image1.bitmap.LoadFromStream(tmpStream); except VCLBitmap := nil; end; tmpStream.Free; end; Запускаю процедуру во время воспроизведения видео на Form5. Но в image1 на Form4 сохраняется пустой битмап белого цвета без видео, без ничего. Хотя даже фон на Form5 черный. Что я пропустил или не учел?
  11. Собственно. Нашел эту тему : http://fire-monkey.ru/topic/391-kak-sdelat-skrinshot-s-tmediaplayercontrol/ Но реализация там не работает под современными редакциями FMX. Интересует, есть ли в FMX способ сделать скриншот под Windows.
  12. Добрый день. Как вариант для предотвращения разбегания label-ов можно попробовать задать выравнивание для всех TLabel таким образом: Align:=TAlignLayOut.MostTop; Если Вы используете TLabel для вывода текста в TListBox, то, быть может, целесообразнее для этого вместо Label использовать свойство Text самого TListBoxItem. Но судя по прикрепленному Вами изображению Вам должно хватить возможностей TListView - картинка, текст и details там среди стандартных параметров.
  13. Добрый день. Есть ли у TMemo что-то вроде рамок, которые ограничивают текстовую область? Суть вопроса: есть 1 элемент TText и 1 элемент TMemo. У этих компонентов заданы одинаковые пропорции, одинаковые параметры шрифта кроме размера. Размер шрифта и у того, и у другого компонента определяется умножением высоты компонента на одно и то же число. Так, чтобы при изменении их размеров текст растягивался вслед за компонентом. Так вот, при всем при этом, если пропорционально менять размеры компонентов и размер шрифта в них, то в некоторых случаях размещение текста может не совпадать, то есть некоторое слово в TMemo может перебежать на другую строку. При этом если брать два TText, то при изменении их размера текст у них всегда совпадает. Поэтому и интересует, может быть в TMemo есть небольшая граница для текстовой области, которая делает ее меньше размеров самого TMemo?
  14. Как воспроизводить видео из одного файла одновременно на двух компонентах разного размера.
  15. Даже не подозревал, что все так сложно.
  16. Мне советовали в другой ветке использовать метод половинного деления.
  17. Не знаю еще. А каким посоветуете?
  18. Добрый день. Интересует, можно ли в FMX реализовать воспроизведение видео из одного файла одновременно в двух окнах или компонентах, чтобы в каждый момент времени в них был один и тот же кадр. Желательно без потерь в производительности по сравнению с выводом на один приемник, либо с минимальными потерями. Окна разного размера. Одно маленькое, другое большое. Что-то вроде главного окна и предварительного просмотра
  19. Может быть это быть вызвано тем, что я перетаскиваю на дочернюю форму приложения.
  20. Нет, не пропадает. Пропадает только если нажать на область компонента TDropTarget на форме. А нужно, чтобы сразу исчезал после перетаскивания. Вот сейчас пишу сообщение на форуме, а значек поверх экрана висит.
  21. Все работает - в обработчике события OnDropped выполняю действия с файлами, все нормально, кроме того, что значек перетаскиваемого файла, который генерирует Windows при перемещении, остается над формой и не исчезает после отпускания клавиши мыши. Как его можно программно убрать?
  22. Добрый день. Интересует, как в FMX организовать открытие файлов перемещением их из проводника Windows на форму. Как открыть несколько файлов через TOpenDialog знаю, как делается открытие перемещением в VLC написано здесь: http://www.delphisources.ru/forum/showthread.php?t=3658. Но как сделать это в FMX - вопрос.
  23. Нашел немного похожий вопрос на http://stackoverflow.com/questions/21836579/can-i-make-a-tmemo-size-itself-to-the-text-it-contains-firemonkey Используя код определения высоты TMemo: function get_memo_height(amemo:tmemo):single; var i:integer; astring: string; layout: ttextlayout; begin Layout := TTextLayoutManager.DefaultTextLayout.Create; astring:=''; for i:=0 to amemo.lines.count-1 do astring:=astring+amemo.lines[i]+chr(10); Layout.BeginUpdate; Layout.Text :=astring; Layout.WordWrap:= amemo.wordwrap; Layout.HorizontalAlign:= amemo.TextAlign; Layout.MaxSize:= PointF(amemo.width,maxint); Layout.VerticalAlign := TTextAlign.Leading; Layout.Font := amemo.Font; Layout.TopLeft := pointf(0,0); Layout.EndUpdate; result:=layout.textrect.bottom-amemo.Font.Size;; Layout.free; end; Memo.Height:=get_memo_height(Memo); в сочетании с Memo.Align:= TAlignLayOut.VertCenter; Получаем эффект выравнивания текста Memo по центру вертикали родительского контрола
×
×
  • Создать...