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

Лидеры

  1. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      21

    • Постов

      2 517


  2. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      12

    • Постов

      2 124


  3. Pax Beach

    Pax Beach

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


    • Баллы

      7

    • Постов

      414


  4. Andrey Efimov

    Andrey Efimov

    Модераторы


    • Баллы

      3

    • Постов

      842


Популярный контент

Показан контент с высокой репутацией 18.10.2016 во всех областях

  1. В FMX Opacity всегда от 0 до 1. Не верьте безоговорочно примерам Студии, они не актуальные.
    4 балла
  2. @Евгений Корепов https://play.google.com/store/apps/developer?id=Евгений Корепов&hl=ru @ra.eremeev https://play.google.com/store/apps/details?id=com.embarcadero.MSPGOR&hl=ru других не помню, но их достаточно
    3 балла
  3. В какой момент создаете битмап?
    3 балла
  4. Легче всего, по моему мнению, сделать так: ... FWnd := AllocateHWnd(WindowProc); ... procedure WindowProc(var AMsg: TMessage); begin case AMsg.Msg of WM_HOTKEY: case TWMHotKey(AMsg).hotkey of 1: ...; 2: ...; ... end; end; end; ... RegisterHotkey(FWnd, ...); // как обычно в VCL ... UnregisterHotkey(...); // как обычно в VCL ...
    3 балла
  5. sinuke правильно написал. Просто стили привязаны к платформам. Вы редактировали для винды. Нужно отдельно отредактировать и для андрюши. Будите переходить на iOs, нужно будет редактировать третий раз)))
    3 балла
  6. да, а чем проблемы? через Canvas.DrawBitmap
    2 балла
  7. Так, то что в VCL вы привыкли писать так: procedure OnHotKey(var Msg: TWMHotKey); message WM_HOTKEY; Это заслуга Delphi TObject.Dispatch. Суть простая, вызвав Dispatch и передав внутрь сообщение TMessage с ID, TObject автоматически найдет среди ваших методов метод, у которого WM_HOTKEY будет равен ID сообщения. Таким образом можно передавать любые варианты сообщений. Главное, чтобы первые 4 байта - это были ID сообщения. В VCL оконная процедура просто вызывает у формы Form.Dispatch и передает туда виндовое сообщение. Так все и работает. В FMX другая идеология, она не редиректит сообщения из оконной процедуры в форму. Поэтому вам предложили сделать следующее: Или повесить хук на оконную процедуру и обрабатывать свои сообщения там. Либо сделать редирект сообщения, как я указал на уровне платформы.
    2 балла
  8. Дело в том, что у вас Image1.Bitmap, как экземпляр класса TBitmap присутствует. НО в нем нету никакой информации. То есть по факту у него размер равен 0 на 0. Это значит, что для него хендл не будет выделяться (Зачем системе хранить пустой битмап). Поэтому, когда вы пытаетесь с ним поработать и получить доступ к канве, то получаете такую ошибку: raised exception class ECanvasException with message 'Handle not allocated' Теперь смотрим ваш код: Image1.Bitmap.Canvas.BeginScene; Будет работать с канвой, но хендла нет. отсюда будет исключение. Image1.Bitmap.Clear(0); Опять же работает с канвой и пытается очистить пустой битмап. Image1.Bitmap.LoadFromStream(MemStream); Это корректный вызов, при загрузке нового битмапа будет выделен хендл на уровне Image1.Bitmap. Соответственно, вам нужно: Сформировать новый битмап Загрузить его в Image1.Bitmap На Windows используется GDI+/Direct2D канва, которая может работать по другому. А на мобильных платформах GPU, поэтому у вас и возникает ошибка.
    2 балла
  9. Не знаю, кто пишет примеры в студию Но иногда сам удивляюсь... Мы, конечно, иногда сами делаем примеры, но их не так много. P.S. Opacity в FMX всегда было от 0 до 1
    2 балла
  10. Image1.Bitmap.Canvas.BeginScene; ... Image1.Bitmap.Canvas.EndScene; это тут не нужно, т.к. не работаете с Canvas'ом
    2 балла
  11. Не могу сейчас найти. Хотите — верьте, хотите — проверьте, на прошлой неделе, буквально, читал во глубинах developer.android.com, что SDK 23 пока самый работоспособный релиз. Наверное имелся ввиду 23.3, этой версией пользуюсь. С более поздними версиями были аналогичные проблемы, описанные в топике.
    2 балла
  12. procedure TForm1.lvMainItemClickEx(const Sender: TObject; ItemIndex: Integer; const LocalClickPos: TPointF; const ItemObject: TListItemDrawable); begin if ItemObject is TListItemImage then ShowMessage(lvMain.Items[ItemIndex].Data['DateText'].AsString); end;
    2 балла
  13. Если необходимо разместить текст слева от точки/кружочка, то придётся отредактировать стиль компонента. Кидаете компонент на форму, правый клик по нему и далее Edit Custom Style или Edit Default Style, далее уже редактируете стиль.
    2 балла
  14. Вы меняли значение BlobType как я предложил в предыдущем сообщении? У меня работает /// Эта часть не работает! /// if (Value.IsEmpty=false) and (Value.IsObject=true) then begin // LB:=TBlobField(Value.AsObject); // ужос!!! // LB.SaveToStream(LStr); // LBM:=FMX.Graphics.TBitmap.CreateFromStream(LStr); // try // Canvas.DrawBitmap(LBM,RectF(0,0,LBM.Width,LBM.Height),Bounds,1); // finally // LBM.Free; // end; LBM := TBitmap(Value.AsObject); Canvas.DrawBitmap(LBM,RectF(0,0,LBM.Width,LBM.Height),Bounds,1); end; /// /// /// И вообще без обработчика события тоже всё рисуется. Это некоторое расстояние называется разделительная линия.
    1 балл
  15. На форуме уже обсуждалась подобная проблема: Зависимость от регистра русских символов при использовании LIKE
    1 балл
  16. Сделал тоже самое для берлина. Изменено три файла FMX.ListView.Adapters.Base.pas FMX.ListView.Appearances.pas FMX.ListView.Types.pas, изменения предваряются комментарием "// Added Evgeniy Korepov for FilterEx". Единственный нюанс - параметр функции теперь function(X: TListItem): Boolean а не function(X: TListViewItem): Boolean ListViewBerlinWithFilterEx.zip
    1 балл
  17. Извините, но Вы хоть сами поняли, что написали выше? :-)
    1 балл
  18. Часть есть здесь: http://fire-monkey.ru/forum/18-приложения-написанные-с-использованием-firemonkey/ Часть нужно искать по интернету...
    1 балл
  19. ответ: можно P.S. несколько раз прочитал, не понял о чем
    1 балл
  20. Всем доброго времени суток, очень помогла тема и ответы выше. Решил добавить небольшой пример касательно "Tgriddrawstates" ( Указание выделена ли строка, выделена ячейка и в фокусе ли ячейка или нет ) Может быть полезно новичкам. procedure TForm4.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const [Ref] Bounds: TRectF; const Row: Integer; const [Ref] Value: TValue; const State: TGridDrawStates); var TextLayout : TTextLayout; TextRect: TRectF; begin if TGridDrawState.RowSelected in State then Canvas.Fill.Color := TAlphaColors.Blue; else Canvas.Fill.Color := TAlphaColors.white; end; вместе с кодом отрисовки ячейки грида выше можно управлять цветом фона да и чем угодно при например выделении строки.
    1 балл
  21. Можно ли у компонента TRadioButton текст разместить слева? Если ДА, то как? Спасибо!
    1 балл
  22. Поначалу я сам догадался, что где-то надо для Андроида стиль задать. Ошибочно решил, что если включена компиляция под андроид, то и стиль его. Запутался короче. sunike, Vitaldj, спасибо за подсказку, теперь разобрался!
    1 балл
  23. Вот теперь верю ) Спасибо, то что нужно!
    1 балл
  24. а вообще я как-то уже выкладывал, универсальный способ проверки интернета, для тех кто в танке)
    1 балл
  25. "ОН" - метод средствами апи посмотрите DeviceInfo там реализовано для Android и Windows для IOS нет нужных интерфейсов. сделать можно, но времени нет этим заниматься
    1 балл
  26. Равиль Зарипов (ZuBy)

    TBeacon в iOS

    попробуйте выставить UIBackgroundModes -> bluetooth-central, так IOS будет знать что приложение обменивается данными по блютуз но это нужно проверять, я такое не пробовал
    1 балл
  27. 1) это аналог xpmanifest VCL программисты должны помнить (хотя могу ошибаться) 2) High DPI для 4K дисплеев, правда смотрится не очень, как будто в браузере 300% поставили
    1 балл
  28. нужно отредактировать стиль для андройда
    1 балл
  29. Удалось получить вибрацию на С++ Builder. Вот такие настройки путей оказались правильными. Просто перебором вариантов нашла такое решение. При этом возникло диалоговое окно, что есть более новая версия файла AudioToolbox. Я согласилась с заменой. Компиляция проекта прошла успешно. Вибро сработало. #include <fmx.h> #pragma hdrstop #include "UVibrate.hpp" <-- на основании *.pas в этой теме #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.fmx" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Vibrate(); }
    1 балл
  30. kami

    TBitmap и экономия памяти

    Не совсем. То есть - технически правильно, но идеологически - нет. Проведем мысленный эксперимент: что случится, если на BeginScene возникнет исключение? Правильно, битмап не будет уничтожен, потому что этот код не выполнялся внутри Try. Поэтому, если заниматься буквоедством, то код должен выглядывать так: MyBitmap := TBitmap.CreateFromFile(OpenDialog1.Files[0]); try Image1.Bitmap.Canvas.BeginScene; try Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 20); finally Image1.Bitmap.Canvas.EndScene; end; finally myBitmap.Free; end;
    1 балл
  31. if ItemObject is TListItemImage then begin if ItemObject.Name = 'Image2' then ..... end;
    1 балл
  32. TRectF - не является классом, у него нет конструктора. Create используется чисто синтаксически.
    1 балл
  33. Как я понимаю, BlobType должно быть ftGraphic Live Binding это не мой конек.
    1 балл
  34. разрешения сделаны в том числе для фильтрации в маркете, а обычный юзер не смотрит на них. для него это просто кнопка "Принять" в андроид 6 сделали запрос на использование этого функционала (слизали у эпл конечно, но это правильный ход)
    1 балл
  35. нет, и это правильно Я бы не хотел чтобы любое приложение могло перезагрузить девайс
    1 балл
  36. смиритесь, это RAD! Хотите чтобы меньше весило используйте нативные инструменты разработки. Android Studio, XCode
    1 балл
  37. Равиль Зарипов (ZuBy)

    RAD Berlin Upd1 & XCode

    xcode 8 и новый paserver все пучком
    1 балл
  38. kami

    TMS Pack for FireMonkey

    Ничего в нем отличного нет. У меня подписка на эти компоненты, со всей ответственностью заявляю - TMS веббраузер - всего лишь надстройка над штатными нативными реализациями из FMX начиная с версии 3.0. До этого они использовали на мобильных платформах - реализацию из FMX (не уверен в этом утверждении, давненько было), на десктопе - хромиум. Причем ввиду того, что в FMX есть некоторые привязки к стандартному веббраузеру, многое из того, что штатно работает с TWebBrowser, не хочет работать с TMSWebBrowser. В качестве примера - вы не можете разместить TMSWebBrowser на закладке табконтрола. Вернее, можете, но результат вас не обрадует.
    1 балл
  39. думаю как-то так function CheckInternet2: boolean; // uses System.Net.HttpClient, System.Net.HttpClientComponent var Resp: IHTTPResponse; begin Result := false; with TNetHTTPClient.Create(nil) do begin try Resp := Head('http://google.com'); Result := Resp.StatusCode < 400; except Result := false; end; Free; end; end; метод HEAD
    1 балл
  40. uses AndroidAPI.Helpers, AndroidAPI.JNI.GraphicsContentViewText; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } function BatteryPercent(const aContext: JContext): Integer; end; var Form1: TForm1; implementation {$R *.fmx} function TForm1.BatteryPercent(const aContext: JContext): Integer; var filter: JIntentFilter; battery: JIntent; begin filter := TJIntentFilter.Create; filter.addAction(TJIntent.JavaClass.ACTION_BATTERY_CHANGED); battery := aContext.registerReceiver(NIL, filter); result := battery.getIntExtra(StringToJString('level'), -1) end; procedure TForm1.FormCreate(Sender: TObject); var myContext: JContext; begin myContext := SharedActivityContext; Showmessage(BatteryPercent(myContext).ToString); end; а еще по другим параметрам испанец круто обсосал тут http://neftali.clubdelphi.com/?p=3157 а если надо модель, серийный то это у вас на компе Delphi\Samples\Object Pascal\Mobile Snippets\DeviceInfo (но тут хоть ИОС есть).
    1 балл
  41. ребята, вы чё, это же все есть в исходниках Embarcadero Открываете модуль с контролом, и ищите его метод "что-то-там-Paint-что-то-там"
    1 балл
  42. Поменялась логика работы грида. Теперь он самостоятельно отрисовывает ячейки и не создает для каждой ячейки отдельный контрол. Поэтому старый способ работать не будет. Новый вариант решения - это самостоятельно нарисовать ячейку грида: uses FMX.TextLayout, System.UIConsts; procedure TForm2.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); const HorzTextMargin = 2; VertTextMargin = 1; var TextLayout : TTextLayout; TextRect: TRectF; begin // Здесь определяем какую ячейку будем перерисовывать if (Column = StringColumn1) and (Row = 1) then begin TextRect := Bounds; TextRect.Left := TextRect.Left + 1; TextRect.Bottom := TextRect.Bottom -1; TextRect.Inflate(-HorzTextMargin, -VertTextMargin); Canvas.FillRect(TextRect, 0, 0, AllCorners, 1); TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.WordWrap := False; TextLayout.Opacity := Column.AbsoluteOpacity; TextLayout.HorizontalAlign := StringGrid1.TextSettings.HorzAlign; TextLayout.VerticalAlign := StringGrid1.TextSettings.VertAlign; TextLayout.Trimming := TTextTrimming.Character; TextLayout.TopLeft := TextRect.TopLeft; TextLayout.Text := Value.ToString; TextLayout.MaxSize := PointF(TextRect.Width, TextRect.Height); { Пользовательские настройки отрисовки } TextLayout.Font.Family := 'Times New Roman'; TextLayout.Font.Style := [ TFontStyle.fsBold ]; TextLayout.Font.Size := 14; TextLayout.Color := claBlueViolet; finally TextLayout.EndUpdate; end; TextLayout.RenderLayout(Canvas); finally TextLayout.Free; end; end; end;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...