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

dnekrasov

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

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

  • Посещение

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

    52

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

  1. Кстати, а в чём разница между двумя видами отображения тэгов - сверху красный и снизу чёрный?
  2. В модуле FMX.Helpers.Win есть две чудные функции: function GetDCScale(const DC: HDC): Single; function GetWndScale(const Wnd: HWnd): Single; причём вторая из них учитывает особенности, начиная с восьмерки.
  3. Обычно хватает XML.XMLDoc, XML.XMLIntf
  4. Если Вы про Xml.XMLDoc.TXMLDocument - то нет там никаких IFDEF MSWINDOWS и я его без проблем использую под MacOS
  5. С чего Вы это взяли? Под MacOS прекрасно работает.
  6. Попробуйте в файле проекта добавить GlobalUseGDIPlusClearType := False
  7. Проблема не в расчете базовой линии, а в том как рисуется текст на GDI+ и Direct2D. У шрифта есть еще свойство LineGap - это предлагаемое расстояние между строками. Как я понял, GDI+ не учитывает его при выводе первой строки, а Direct2D - учитывает. Т.е. при выводе текста на Direct2D он смещается на TTextMetric.tmExternalLeading. Чтоб увидеть это - достаточно в Вашем примере поменять шрифт "Times New Roman" на какой-нибудь, где LineGap=0 (например "Tahoma", "Verdana" или "Segoe UI").
  8. Да у Вас просто обработка хоткеев неправильно написана. Если Вы регистрируете хоткей как RegisterHotKey(FWnd, Ord('U'), 0, Ord('U')); то и обрабатывать надо соответственно: case AMsg.Msg of WM_HOTKEY: case TWMHotKey(AMsg).hotkey of Ord('U'): ShowMessage('Событие hotkey RegisterHotKey(FWnd, Ord(''U''), 0, Ord(''U''))'); end; end; end; У Вас первый Ord('U') выступает в качестве ID и, соответственно, на него надо и проверять в case-е. Зарегистрируйте его как RegisterHotKey(FWnd, 1, 0, Ord('U')) - тогда в case-е он пойдет на "1: ... "
  9. Попробуйте вместо Canvas.FillText использовать Canvas.TextToPath и Canvas.FillPath - может поможет.
  10. На XP Вы не сможете использовать Direct2D, следовательно, чтобы обеспечить совместимость Вам необходимо добиться нормального вида при FMX.Types.GlobalUseDirect2D:=False. К тому же не забывайте и про это: unit FMX.Platform.Win; ... function TPlatformWin.GetDefaultFontFamilyName: string; begin if TOSVersion.Check(6) then Result := 'Segoe UI' else Result := 'Tahoma'; end; Т.е. еще и шрифт Tahoma, если Вы его не меняете вручную.
  11. Я пользуюсь TFloatAnimation - другого выхода не нашёл (может просто плохо или мало искал?).
  12. Там TCheckStyleObject, а у него есть набор свойств типа TBitmapLinks - вот ими и управляется.
  13. Вот мой стиль для чекбокса - работает нормально. Я, правда вместо TPath - TImage использую. Сравните со своим, может чем поможет. Или скиньте свой - может чё посоветую. object TLayout StyleName = 'checkboxstyle' Align = Center Padding.Top = -1.000000000000000000 Size.Width = 50.000000000000000000 Size.Height = 50.000000000000000000 Size.PlatformDefault = False TabOrder = 6 object TLayout Align = Left Position.Y = -1.000000000000000000 Size.Width = 22.000000000000000000 Size.Height = 51.000000000000000000 Size.PlatformDefault = False object TRectangle Align = Center Fill.Kind = Gradient Fill.Gradient.Points = < item Color = xFFEBEBEB Offset = 0.000000000000000000 end item Color = xFFFBFBFB Offset = 1.000000000000000000 end> Fill.Gradient.StartPosition.X = 0.500000000000000000 Fill.Gradient.StopPosition.X = 0.499999970197677600 HitTest = False Size.Width = 16.000000000000000000 Size.Height = 16.000000000000000000 Size.PlatformDefault = False Stroke.Color = xFFB9B9B9 XRadius = 2.000000000000000000 YRadius = 2.000000000000000000 object TColorAnimation StyleName = 'focused' Duration = 0.000000000000000000 PropertyName = 'Stroke.Color' StartValue = xFF999999 StopValue = xFF222222 Trigger = 'IsFocused=True' TriggerInverse = 'IsFocused=False' end end object TImage StyleName = 'check' MultiResBitmap = < item Width = 8 Height = 8 PNG = { 89504E470D0A1A0A0000000D4948445200000008000000080806000000C40FBE 8B000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000 008049444154285363200418A134063032324AF9FFFFFF7D26209BC9C2C28213 220C0140C93E4646C6D94C4C4C93988C8D8DE7FEFCF9F32550D00949B210C8FC 0534A10C64C273A04ADE2F5FBE6C064AAE46920C3A77EEDC56901B1881A6CC00 D269400C027049108719443C7FFE7CAB949494C8BF7FFF3481DC309824118081 0100A1F434E007FD62490000000049454E44AE426082} end> Align = Center HitTest = False MarginWrapMode = Fit Opacity = 0.000000000000000000 Size.Width = 12.000000000000000000 Size.Height = 12.000000000000000000 Size.PlatformDefault = False WrapMode = Center object TFloatAnimation Duration = 0.000000000000000000 PropertyName = 'Opacity' StartValue = 0.000000000000000000 StopValue = 1.000000000000000000 Trigger = 'IsChecked=True' TriggerInverse = 'IsChecked=False' end end end object TText StyleName = 'text' Align = Client Locked = True HitTest = False Margins.Left = 5.000000000000000000 Size.Width = 23.000000000000000000 Size.Height = 51.000000000000000000 Size.PlatformDefault = False Text = 'Text' TextSettings.Font.Family = 'Arial' TextSettings.Font.Size = 13.000000000000000000 TextSettings.FontColor = xFF202020 end end
  14. Проверьте HitTest у TPath - должен быть False. И я бы еще посоветовал вместо TLabel использовать TText
  15. Я в данном случае использую TPathData и Canvas.DrawPath. График из 1024 точек 10 раз в секунду перерисовывается без проблем var i: Integer; Path: TPathData; begin Path := TPathData.Create; try Path.MoveTo(PointList[0]); for i := 1 to PointList.Count - 1 do Path.LineTo(PointList[i]); end; Canvas.DrawPath(Path, 1); finally FreeAndNil(Path) end;
  16. var Data: TIdMultiPartFormDataStream; msResponse: TMemoryStream; sResponse: String; bts: TBytes; ... msResponse := TMemoryStream.Create; try FIdHTTP.Post([URL], Data, msResponse); SetLength(bts, msResponse.Size); msResponse.Position := 0; msResponse.Read(bts[0], msResponse.Size); sResponse := TEncoding.UTF8.GetString(bts); finally FreeAndNil(msResponse); end; Так я работаю с IdHTTP. Я думаю, что-то на подобии этого нужно и Вам реализовать
  17. Так у TRectangle же нет свойства IsPressed. Как же можно возбудить этот триггер?
  18. Обратите внимание на модуль System.IOUtils. - там Вы найдёте всё что Вам нужно.
  19. Может так сработает: procedure TFormMain.ComboPopup(Sender: TObject); begin Combo.ListBox.DefaultItemStyles.ItemStyle := 'ListBoxItemStyle2'; Combo.ListBox.NeedStyleLookup; Combo.ListBox.ApplyStyleLookup; end;
  20. Если Parent у Butto2 - Panel2 var PointP: TPointF; begin PointP := PointF((Panel1.Width / 2) - (Button2.Width / 2), (Panel1.Height / 2) - (Button2.Height / 2)); PointP := Panel1.LocalToAbsolute(PointP); Button2.Position.Point := Panel2.AbsoluteToLocal(PointP); end; А вообще зачем Position менять: Button2.Parent := Panel1; Button2.Align := TAlignLayout.Center; Button2.BringToFront;
  21. Официальное название: AlReader Официальный сайт: http://www.alreader.com/ (но лучше сюда - http://4pda.ru/forum/index.php?showtopic=340035) Платформы: Android, Windows, WinMobile, Windows CE
  22. Попробовал реализовать стилем - никаких проблем не возникло: object TEllipse StyleName = 'ButtonEllipseStyle' Align = Center Size.Width = 256.000000000000000000 Size.Height = 191.000000000000000000 Size.PlatformDefault = False object TColorAnimation Duration = 0.500000000000000000 Inverse = True PropertyName = 'Fill.Color' StartValue = x00808080 StopValue = xAF808080 Trigger = 'IsMouseOver=true' TriggerInverse = 'IsMouseOver=false' end end UPD! Мммда... Насчет проблем я поторопился... Для того чтобы отследить клик по кнопке надо переопределить клик для TEllipse в стиле: procedure TForm1.btnTestApplyStyleLookup(Sender: TObject); var el: TEllipse; begin if TStyledControl(btnTest).FindStyleResource<TEllipse>('ButtonEllipseStyle', el) then el.OnClick := btnTestClick; end;
  23. В информации о пользователе слева от вопроса или ответа неправильный падеж слова публикация
  24. Обратите внимание на модуль System.IOUtils, а в частности на класс TDirectory. Там Вы найдёте все что Вам нужно.
×
×
  • Создать...