Перейти к содержанию
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. Добрый день. У TMediaPlayerControl нет события OnClick, но есть OnTap. Однако в Windows оно не работает. Существует ли какой-нибудь способ уловить клик по этому компоненту? О варианте с размещением поверх него формы и отработке события на ней знаю, но он не подходит.
  6. После долгого поиска все-таки нашел тему на этом же форуме )). Хотя раньше искал, но не находил. Тема: 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; В данном случае - присвоение второй форме координат первой.
  7. Добрый день. Интересует есть ли в FMX способ отследить передвижение формы.
  8. Нашел ошибку. Вот так работает: 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;
  9. Решил сделать скриншот всей формы, на которой растянут компонент 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 черный. Что я пропустил или не учел?
  10. Собственно. Нашел эту тему : http://fire-monkey.ru/topic/391-kak-sdelat-skrinshot-s-tmediaplayercontrol/ Но реализация там не работает под современными редакциями FMX. Интересует, есть ли в FMX способ сделать скриншот под Windows.
  11. Добрый день. Как вариант для предотвращения разбегания label-ов можно попробовать задать выравнивание для всех TLabel таким образом: Align:=TAlignLayOut.MostTop; Если Вы используете TLabel для вывода текста в TListBox, то, быть может, целесообразнее для этого вместо Label использовать свойство Text самого TListBoxItem. Но судя по прикрепленному Вами изображению Вам должно хватить возможностей TListView - картинка, текст и details там среди стандартных параметров.
  12. Добрый день. Есть ли у TMemo что-то вроде рамок, которые ограничивают текстовую область? Суть вопроса: есть 1 элемент TText и 1 элемент TMemo. У этих компонентов заданы одинаковые пропорции, одинаковые параметры шрифта кроме размера. Размер шрифта и у того, и у другого компонента определяется умножением высоты компонента на одно и то же число. Так, чтобы при изменении их размеров текст растягивался вслед за компонентом. Так вот, при всем при этом, если пропорционально менять размеры компонентов и размер шрифта в них, то в некоторых случаях размещение текста может не совпадать, то есть некоторое слово в TMemo может перебежать на другую строку. При этом если брать два TText, то при изменении их размера текст у них всегда совпадает. Поэтому и интересует, может быть в TMemo есть небольшая граница для текстовой области, которая делает ее меньше размеров самого TMemo?
  13. Как воспроизводить видео из одного файла одновременно на двух компонентах разного размера.
  14. Мне советовали в другой ветке использовать метод половинного деления.
  15. Добрый день. Интересует, можно ли в FMX реализовать воспроизведение видео из одного файла одновременно в двух окнах или компонентах, чтобы в каждый момент времени в них был один и тот же кадр. Желательно без потерь в производительности по сравнению с выводом на один приемник, либо с минимальными потерями. Окна разного размера. Одно маленькое, другое большое. Что-то вроде главного окна и предварительного просмотра
  16. Нет, не пропадает. Пропадает только если нажать на область компонента TDropTarget на форме. А нужно, чтобы сразу исчезал после перетаскивания. Вот сейчас пишу сообщение на форуме, а значек поверх экрана висит.
  17. Все работает - в обработчике события OnDropped выполняю действия с файлами, все нормально, кроме того, что значек перетаскиваемого файла, который генерирует Windows при перемещении, остается над формой и не исчезает после отпускания клавиши мыши. Как его можно программно убрать?
  18. Добрый день. Интересует, как в FMX организовать открытие файлов перемещением их из проводника Windows на форму. Как открыть несколько файлов через TOpenDialog знаю, как делается открытие перемещением в VLC написано здесь: http://www.delphisources.ru/forum/showthread.php?t=3658. Но как сделать это в FMX - вопрос.
  19. Нашел немного похожий вопрос на 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 по центру вертикали родительского контрола
×
×
  • Создать...