Лидеры
Популярный контент
Показан контент с высокой репутацией 18.10.2016 во всех областях
-
TBitmap и экономия памяти
Brovin Yaroslav и 3 других отреагировал Pax Beach за вопрос
В FMX Opacity всегда от 0 до 1. Не верьте безоговорочно примерам Студии, они не актуальные.4 балла -
Приложения для Android, сделанные в Embarcadero RAD
Евгений Корепов и 2 других отреагировал Равиль Зарипов (ZuBy) за вопрос
@Евгений Корепов 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 балла -
[Android] Почему возникает ошибка ECanvasException 'Handle not allocated'?
Kitty и 2 других отреагировал Brovin Yaroslav за вопрос
В какой момент создаете битмап?3 балла -
Легче всего, по моему мнению, сделать так: ... 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 балла
-
[TRadioButton] Как разместить текст TRadioButton слева от круга?
Brovin Yaroslav и 2 других отреагировал Vitaldj за вопрос
sinuke правильно написал. Просто стили привязаны к платформам. Вы редактировали для винды. Нужно отдельно отредактировать и для андрюши. Будите переходить на iOs, нужно будет редактировать третий раз)))3 балла -
Наложение картинки на фото
Kitty и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
да, а чем проблемы? через Canvas.DrawBitmap2 балла -
[Windows] Глобальный хук на клавиши возможно ли FMX
Просто Проги и ещё один отреагировал Brovin Yaroslav за вопрос
Так, то что в 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 балла -
[Android] Почему возникает ошибка ECanvasException 'Handle not allocated'?
AngryOwl и ещё один отреагировал Brovin Yaroslav за вопрос
Дело в том, что у вас 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 балла -
TBitmap и экономия памяти
Pax Beach и ещё один отреагировал Brovin Yaroslav за вопрос
Не знаю, кто пишет примеры в студию Но иногда сам удивляюсь... Мы, конечно, иногда сами делаем примеры, но их не так много. P.S. Opacity в FMX всегда было от 0 до 12 балла -
[Android] Почему возникает ошибка ECanvasException 'Handle not allocated'?
AngryOwl и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
Image1.Bitmap.Canvas.BeginScene; ... Image1.Bitmap.Canvas.EndScene; это тут не нужно, т.к. не работаете с Canvas'ом2 балла -
Не могу сейчас найти. Хотите — верьте, хотите — проверьте, на прошлой неделе, буквально, читал во глубинах developer.android.com, что SDK 23 пока самый работоспособный релиз. Наверное имелся ввиду 23.3, этой версией пользуюсь. С более поздними версиями были аналогичные проблемы, описанные в топике.2 балла
-
[TListView] Как отловить нажатие на картинку в TListView?
Kitty и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
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 балла -
[TRadioButton] Как разместить текст TRadioButton слева от круга?
Евгений Корепов и ещё один отреагировал Andrey Efimov за вопрос
Если необходимо разместить текст слева от точки/кружочка, то придётся отредактировать стиль компонента. Кидаете компонент на форму, правый клик по нему и далее Edit Custom Style или Edit Default Style, далее уже редактируете стиль.2 балла -
Особенности TGrid в Delphi 10.1 Berlin (XE10)
Brovin Yaroslav отреагировал RoschinSpb за вопрос
Вы меняли значение 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 балл -
Верхний регистр для кирилицы
walexw отреагировал Andrey Efimov за вопрос
На форуме уже обсуждалась подобная проблема: Зависимость от регистра русских символов при использовании LIKE1 балл -
ListView фильтрация здорового человека (не курильщика)
Равиль Зарипов (ZuBy) отреагировал Евгений Корепов за вопрос
Сделал тоже самое для берлина. Изменено три файла 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.zip1 балл -
[Windows] Глобальный хук на клавиши возможно ли FMX
Равиль Зарипов (ZuBy) отреагировал Brovin Yaroslav за вопрос
Извините, но Вы хоть сами поняли, что написали выше? :-)1 балл -
Приложения для Android, сделанные в Embarcadero RAD
Steepe_Hare отреагировал Brovin Yaroslav за вопрос
Часть есть здесь: http://fire-monkey.ru/forum/18-приложения-написанные-с-использованием-firemonkey/ Часть нужно искать по интернету...1 балл -
анимация батарейки с управлением "уровня заряда"
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
ответ: можно P.S. несколько раз прочитал, не понял о чем1 балл -
Всем доброго времени суток, очень помогла тема и ответы выше. Решил добавить небольшой пример касательно "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 балл
-
[TRadioButton] Как разместить текст TRadioButton слева от круга?
Евгений Корепов отреагировал walexw за вопрос
Можно ли у компонента TRadioButton текст разместить слева? Если ДА, то как? Спасибо!1 балл -
[TRadioButton] Как разместить текст TRadioButton слева от круга?
Равиль Зарипов (ZuBy) отреагировал walexw за вопрос
Поначалу я сам догадался, что где-то надо для Андроида стиль задать. Ошибочно решил, что если включена компиляция под андроид, то и стиль его. Запутался короче. sunike, Vitaldj, спасибо за подсказку, теперь разобрался!1 балл -
Проверить наличие интернета
Равиль Зарипов (ZuBy) отреагировал Pax Beach за вопрос
Вот теперь верю ) Спасибо, то что нужно!1 балл -
Проверить наличие интернета
Brovin Yaroslav отреагировал Равиль Зарипов (ZuBy) за вопрос
а вообще я как-то уже выкладывал, универсальный способ проверки интернета, для тех кто в танке)1 балл -
Проверить наличие интернета
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
"ОН" - метод средствами апи посмотрите DeviceInfo там реализовано для Android и Windows для IOS нет нужных интерфейсов. сделать можно, но времени нет этим заниматься1 балл -
TBeacon в iOS
Kitty отреагировал Равиль Зарипов (ZuBy) за вопрос
попробуйте выставить UIBackgroundModes -> bluetooth-central, так IOS будет знать что приложение обменивается данными по блютуз но это нужно проверять, я такое не пробовал1 балл -
в Application две настройки.
Kitty отреагировал Равиль Зарипов (ZuBy) за вопрос
1) это аналог xpmanifest VCL программисты должны помнить (хотя могу ошибаться) 2) High DPI для 4K дисплеев, правда смотрится не очень, как будто в браузере 300% поставили1 балл -
нужно отредактировать стиль для андройда1 балл
-
Ошибка при подключении *.pas файла.
Евгений Корепов отреагировал Kitty за вопрос
Удалось получить вибрацию на С++ 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 балл -
TBitmap и экономия памяти
Brovin Yaroslav отреагировал kami за вопрос
Не совсем. То есть - технически правильно, но идеологически - нет. Проведем мысленный эксперимент: что случится, если на 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 балл -
[TListView] Как отловить нажатие на картинку в TListView?
Roma77751 отреагировал Равиль Зарипов (ZuBy) за вопрос
if ItemObject is TListItemImage then begin if ItemObject.Name = 'Image2' then ..... end;1 балл -
TBitmap и экономия памяти
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
TRectF - не является классом, у него нет конструктора. Create используется чисто синтаксически.1 балл -
Особенности TGrid в Delphi 10.1 Berlin (XE10)
Равиль Зарипов (ZuBy) отреагировал RoschinSpb за вопрос
Как я понимаю, BlobType должно быть ftGraphic Live Binding это не мой конек.1 балл -
Как управлять питанием устройства
#WAMACO отреагировал Равиль Зарипов (ZuBy) за вопрос
разрешения сделаны в том числе для фильтрации в маркете, а обычный юзер не смотрит на них. для него это просто кнопка "Принять" в андроид 6 сделали запрос на использование этого функционала (слизали у эпл конечно, но это правильный ход)1 балл -
Как управлять питанием устройства
#WAMACO отреагировал Равиль Зарипов (ZuBy) за вопрос
нет, и это правильно Я бы не хотел чтобы любое приложение могло перезагрузить девайс1 балл -
Вес исполняемого файла.
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
смиритесь, это RAD! Хотите чтобы меньше весило используйте нативные инструменты разработки. Android Studio, XCode1 балл -
RAD Berlin Upd1 & XCode
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
xcode 8 и новый paserver все пучком1 балл -
Ничего в нем отличного нет. У меня подписка на эти компоненты, со всей ответственностью заявляю - TMS веббраузер - всего лишь надстройка над штатными нативными реализациями из FMX начиная с версии 3.0. До этого они использовали на мобильных платформах - реализацию из FMX (не уверен в этом утверждении, давненько было), на десктопе - хромиум. Причем ввиду того, что в FMX есть некоторые привязки к стандартному веббраузеру, многое из того, что штатно работает с TWebBrowser, не хочет работать с TMSWebBrowser. В качестве примера - вы не можете разместить TMSWebBrowser на закладке табконтрола. Вернее, можете, но результат вас не обрадует.1 балл
-
TMapView не работает с IOS
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
думаю как-то так 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; метод HEAD1 балл -
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 балл
-
Изменение свойства шрифта одной ячейки в FireMonkey TStringGrid DELPHI XE6
Brovin Yaroslav отреагировал VladimirS за вопрос
ребята, вы чё, это же все есть в исходниках Embarcadero Открываете модуль с контролом, и ищите его метод "что-то-там-Paint-что-то-там"1 балл -
Поменялась логика работы грида. Теперь он самостоятельно отрисовывает ячейки и не создает для каждой ячейки отдельный контрол. Поэтому старый способ работать не будет. Новый вариант решения - это самостоятельно нарисовать ячейку грида: 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 балл