Category: Firemonkey

FMX Component style not showing correctly in IDE

  

Below are the sources to a very simple FMX component that simply inherits from a TCustomEdit but with a different Style. What I am going for is to have two buttons on the Windows version of the component and no buttons on the Android component.
When I compile the sources before and run a program with the component, both devices show the components as expected. Windows shows the two buttons, Android doesn’t display the buttons.
My problem is, during design time in the IDE, setting the "Style" drop down to Android, the component is displayed using the Windows version. If I "edit the default style" when the Android style is selected, it shows the Edit "background" with a sourcelookup of "Windows 10 Desktopstyle.png", not "AndroidL Lightstyle.png" but also includes the buttons with a sourcelookup of "AndroidL Lightstyle.png".
My assumption is I am missing something is my component design that tells the IDE which version of style to use. Any idea what that is? FYI: this is a very simple component that shows the problem. My more complicated component has the same problem.
unit RHEdit;

interface

uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Controls.Presentation, FMX.Edit, FMX.Controls.Model;

type
TRHEdit = class(TCustomEdit)
private
{ Private declarations }
protected
function GetStyleObject(const Clone: Boolean): TFmxObject; override;
function DefinePresentationName: string; override;
public
{ Public declarations }
published
property Text;
end;

procedure Register;

implementation

{$IFDEF ANDROID}
{$R RHEdit_android.res}
{$ENDIF}
{$IFDEF MSWINDOWS}
{$R RHEdit_win.res}
{$ENDIF}

uses System.Types, FMX.Styles;

procedure Register;
begin
RegisterComponents(‘Samples’, [TRHEdit]);
end;

{ TRHEdit }

function TRHEdit.DefinePresentationName: string;
begin
Result := ‘RHEdit-‘ + GetPresentationSuffix;
end;

function TRHEdit.GetStyleObject(const Clone: Boolean): TFmxObject;
var
style: string;
begin
style := ‘rheditstyle’;
if (StyleLookup = ”) then
Result:= TStyleStreaming.LoadFromResource(HInstance, Style, RT_RCDATA)
else
Result := inherited GetStyleObject(Clone);
end;

end.

RHEdit_android.rc
RHEditStyle RCDATA "RHEdit_android.style"

RHEdit_win.rc
RHEditStyle RCDATA "RHEdit_win.style"

RHEdit_android.style
object TLayout
StyleName = ‘rheditstyle’
TabOrder = 12
FixedHeight = 32
object TActiveStyleObject
StyleName = ‘background’
Align = Contents
SourceLookup = ‘AndroidL Lightstyle.png’
ActiveTrigger = Focused
ActiveLink = <
item
CapInsets.Left = 4.000000000000000000
CapInsets.Right = 4.000000000000000000
SourceRect.Left = 94.000000000000000000
SourceRect.Top = 63.000000000000000000
SourceRect.Right = 127.000000000000000000
SourceRect.Bottom = 95.000000000000000000
end
item
CapInsets.Left = 6.000000000000000000
CapInsets.Right = 6.000000000000000000
Scale = 1.500000000000000000
SourceRect.Left = 157.000000000000000000
SourceRect.Top = 95.000000000000000000
SourceRect.Right = 206.000000000000000000
SourceRect.Bottom = 143.000000000000000000
end
item
CapInsets.Left = 8.000000000000000000
CapInsets.Right = 8.000000000000000000
Scale = 2.000000000000000000
SourceRect.Left = 187.000000000000000000
SourceRect.Top = 122.000000000000000000
SourceRect.Right = 253.000000000000000000
SourceRect.Bottom = 186.000000000000000000
end
item
CapInsets.Left = 12.000000000000000000
CapInsets.Right = 12.000000000000000000
Scale = 3.000000000000000000
SourceRect.Left = 337.000000000000000000
SourceRect.Top = 190.000000000000000000
SourceRect.Right = 436.000000000000000000
SourceRect.Bottom = 286.000000000000000000
end>
SourceLink = <
item
CapInsets.Left = 4.000000000000000000
CapInsets.Right = 4.000000000000000000
SourceRect.Left = 94.000000000000000000
SourceRect.Top = 30.000000000000000000
SourceRect.Right = 127.000000000000000000
SourceRect.Bottom = 62.000000000000000000
end
item
CapInsets.Left = 6.000000000000000000
CapInsets.Right = 6.000000000000000000
Scale = 1.500000000000000000
SourceRect.Left = 157.000000000000000000
SourceRect.Top = 45.000000000000000000
SourceRect.Right = 206.000000000000000000
SourceRect.Bottom = 93.000000000000000000
end
item
CapInsets.Left = 8.000000000000000000
CapInsets.Right = 8.000000000000000000
Scale = 2.000000000000000000
SourceRect.Left = 187.000000000000000000
SourceRect.Top = 57.000000000000000000
SourceRect.Right = 253.000000000000000000
SourceRect.Bottom = 121.000000000000000000
end
item
CapInsets.Left = 12.000000000000000000
CapInsets.Right = 12.000000000000000000
Scale = 3.000000000000000000
SourceRect.Left = 337.000000000000000000
SourceRect.Top = 93.000000000000000000
SourceRect.Right = 436.000000000000000000
SourceRect.Bottom = 189.000000000000000000
end>
TouchAnimation.Link = <>
end
object TLayout
StyleName = ‘content’
Align = Client
Locked = True
Margins.Left = 32.000000000000000000
Margins.Top = 4.000000000000000000
Margins.Right = 32.000000000000000000
Margins.Bottom = 4.000000000000000000
Size.Width = 0.000000000000000000
Size.Height = 42.000000000000000000
Size.PlatformDefault = False
end
object TColorObject
StyleName = ‘caretcolor’
Color = xFF222222
end
object TBrushObject
StyleName = ‘foreground’
Brush.Color = xFF222222
end
object TBrushObject
StyleName = ‘selection’
Brush.Color = x7F33B5E5
end
object TFontObject
StyleName = ‘font’
Font.Size = 18.000000000000000000
end
end

RHEdit_win.style
object TLayout
StyleName = ‘rheditstyle’
TabOrder = 16
object TActiveStyleObject
StyleName = ‘background’
Align = Contents
SourceLookup = ‘Windows 10 Desktopstyle.png’
ActiveTrigger = Focused
ActiveLink = <
item
CapInsets.Left = 7.000000000000000000
CapInsets.Top = 7.000000000000000000
CapInsets.Right = 7.000000000000000000
CapInsets.Bottom = 7.000000000000000000
SourceRect.Left = 266.000000000000000000
SourceRect.Top = 81.000000000000000000
SourceRect.Right = 305.000000000000000000
SourceRect.Bottom = 110.000000000000000000
end
item
CapInsets.Left = 10.000000000000000000
CapInsets.Top = 10.000000000000000000
CapInsets.Right = 10.000000000000000000
CapInsets.Bottom = 10.000000000000000000
Scale = 1.500000000000000000
SourceRect.Left = 399.000000000000000000
SourceRect.Top = 121.000000000000000000
SourceRect.Right = 457.000000000000000000
SourceRect.Bottom = 165.000000000000000000
end
item
CapInsets.Left = 14.000000000000000000
CapInsets.Top = 14.000000000000000000
CapInsets.Right = 14.000000000000000000
CapInsets.Bottom = 14.000000000000000000
Scale = 2.000000000000000000
SourceRect.Left = 532.000000000000000000
SourceRect.Top = 162.000000000000000000
SourceRect.Right = 610.000000000000000000
SourceRect.Bottom = 220.000000000000000000
end>
SourceLink = <
item
CapInsets.Left = 7.000000000000000000
CapInsets.Top = 7.000000000000000000
CapInsets.Right = 7.000000000000000000
CapInsets.Bottom = 7.000000000000000000
SourceRect.Left = 225.000000000000000000
SourceRect.Top = 81.000000000000000000
SourceRect.Right = 264.000000000000000000
SourceRect.Bottom = 110.000000000000000000
end
item
CapInsets.Left = 10.000000000000000000
CapInsets.Top = 10.000000000000000000
CapInsets.Right = 10.000000000000000000
CapInsets.Bottom = 10.000000000000000000
Scale = 1.500000000000000000
SourceRect.Left = 337.000000000000000000
SourceRect.Top = 121.000000000000000000
SourceRect.Right = 396.000000000000000000
SourceRect.Bottom = 165.000000000000000000
end
item
CapInsets.Left = 14.000000000000000000
CapInsets.Top = 14.000000000000000000
CapInsets.Right = 14.000000000000000000
CapInsets.Bottom = 14.000000000000000000
Scale = 2.000000000000000000
SourceRect.Left = 450.000000000000000000
SourceRect.Top = 162.000000000000000000
SourceRect.Right = 528.000000000000000000
SourceRect.Bottom = 220.000000000000000000
end>
TouchAnimation.Link = <>
end
object TLayout
StyleName = ‘content’
Align = Client
Locked = True
Margins.Left = 21.000000000000000000
Margins.Top = 4.000000000000000000
Margins.Right = 21.000000000000000000
Margins.Bottom = 4.000000000000000000
Size.Width = 0.000000000000000000
Size.Height = 42.000000000000000000
Size.PlatformDefault = False
end
object TButton
StyleName = ‘minusbutton’
Align = Left
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
Position.X = 2.000000000000000000
Position.Y = 2.000000000000000000
Size.Width = 20.000000000000000000
Size.Height = 46.000000000000000000
Size.PlatformDefault = False
StyleLookup = ‘spinbottombutton’
end
object TButton
StyleName = ‘plusbutton’
Align = Right
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
Position.X = 28.000000000000000000
Position.Y = 2.000000000000000000
Size.Width = 20.000000000000000000
Size.Height = 46.000000000000000000
Size.PlatformDefault = False
StyleLookup = ‘spintopbutton’
end
object TBrushObject
StyleName = ‘foreground’
Brush.Color = claBlack
end
object TBrushObject
StyleName = ‘selection’
Brush.Color = x7F2A96FF
end
object TFontObject
StyleName = ‘font’
end
end
end

Read More

Book Review: Delphi GUI Programming with FireMonkey (Part 1)

  

I purchased the book Delphi GUI Programming with FireMonkey by Andrea Magni on November 7, 2020. I dove in head first with great enthusiasm only to get derailed early on. It happened when I tried to follow the topic Understanding the Style Designer in chapter 2.As someone who knows almost nothing about FireMonkey these four and one-half pages soured my learning and turned me against this book and it’s author. I tried reaching out to the author directly and received a curt response basically telling me that the examples in his book were not meant to be step-by-step. From that moment on I let this book sit on the shelf and collect dust.That was a foolish mistake on my part. The Style Designer is a central part of FireMonkey and FMX. It is my opinion, that the author introduced this complex topic much too early in the book. It was presented with just a small smattering of knowledge and guidance. Leading me to three days of frustration because I could not make the Style Designer match what I saw in the book. The style designer is much too complex a topic to simply be glossed over in this fashion. A more fitting title for this topic would be First Glance at the Style Designer. Don’t Judge a Book by Only 4 Pages If you are new to FMX and FireMonkey, and you want to get the most out of this book, I highly recommend you skip the topic Understanding the Style Designer in Chapter 2 (print: 34-38, pdf: 31-35). No understanding will happen. Instead, I recommend you watch this 50 minute YouTube video by Ray Konopka called Customizing Controls with FMX Styles.After you have a better understanding of the FMX Style Designer, you may want to come back to the topic Understanding the Style Designer in this book.You can best sum up my attitude about this book (and it’s author) by the phrase “Don’t judge a book by only 4 pages“. I owe Magni an apology for holding a grudge against him because of 4 stinkin pages (and one email) in a book. “Andrea, I’m sorry.”I finally picked up Magni’s book (again) last week. Actually I did a search for “Live Bindings” of my digital Delphi books which lead me to pick up Magni’s book of the shelf. I opened up to Chapter 4, Discovering Lists and Advanced Components to a huge surprise. The printed copy of my book went from page 104 to page 157. Pages 105 through 156 are missing.I contacted Packt Publishing to let them know of the misprint. All is good, a new printed copy is on the way.At this point I was committed and had to fall back on reading the PDF version of Magni’s book. I recently had cataract surgery on both eyes so I was very hesitant. Reading PDF books and manuals always leads to eyestrain at best or headaches at worst. That’s when I discovered you can customize the background and font colors of a PDF document. See my post “Tip of the Day – How to change the text color of a PDF document” for instructions on how to do this.I’m only part way through Chapter 4: Discovering Lists and Advanced Components and so far, Magni had done a fairly descent job. I have downloaded the source code for this book. I find it very helpful to have Delphi up and running along side reading the customized PDF. I open the example projects and play along with the reading to get a better understanding. Magni has done a a great job organizing the source code for this book. There is a separate chapter containing projects for each chapter. Each project within a given chapter has it’s own folder. It is very well organized. The folders seem to be named intuitively. However, I find it very helpful to rename each folder and preface each folder name with the page number. That way I can quickly associate which project goes with with page or section of the book. As a plus, any un-numbered folders means I haven’t opened that project and most likely haven’t read that section of the book in detail.I’m not sure when or if I will get finished with Magni’s book. I’m just glad I overcame my stubbornness and opened his book back up again. I do know I have a need to and look forward to learning the following:Chapter 4 Discovering Lists and Advanced Components ListBox ListViews Treeviews GridsChapter 5 Using FireDAC in FMX ApplicationsChapter 6 Implementing Data BindingChapter 7 Understanding FMX Style ConceptChapter 8 Divide and Conquer with TFrameStand (Maybe)Bottom Line: Buy this book. Skip pages 34-38 (print), 31-35 (pdf).Semper Fi,Gunny Mikezilchworks.com

Read More

Tip of the Day – How to change the text color of a PDF document.

  

I was reading Andrea Magni’s book Delphi GUI Programming with FireMonkey and realized I am missing pages 105-156. Packt Publishing is having a new print copied sent to me. Anyway, the PDF copy of the book is 100% complete.I’ve always dreaded having to read PDF books for two reasons:I don’t like the way the pages jump from one page to anotherThe standard black text on a white background hurts my eyes and makes them tired.I recently discovered two things you can change about PDF books (documents) that have made a huge difference for me. One is smooth scrolling. I thought that all pdf’s jumped from the bottom of the page to the top of the next page. Not true. This is a setting. The second thing I discovered is the ability to change the color of the text within a pdf document. The standard black text on white background rally hurts my eyes. By changing the background and text color it is much more enjoyable to read.This video shows you how to set smooth scrolling and change the text and background colors within a PDF document. Enjoy,Gunny Mike

Read More

Developer Sunac China plans to sell $ 580million shares to repay loans

  

The logo of Sunac China Holdings Ltd is seen at an exhibition in Hangzhou, Zhejiang province, China on May 25, 2015. Photo taken on May 25, 2015. China Daily / via REUTERS

Register now for FREE and unlimited access to Reuters.com

Register

HONG KONG, Jan. 13 (Reuters) – Chinese real estate developer Sunac China Holdings Ltd (1918.HK) announced on Thursday that it plans to raise 4.52 billion Hong Kong dollars ($ 580.09 million) from a sale of shares for loan repayment and general corporate purposes.
The Hong Kong-listed developer plans to sell 452 million new shares, or 8.3% of the enlarged share capital, to controlling shareholder Sunac International Investment Holdings, he said in a filing on the Hong Stock Exchange. Kong.
The new shares will be issued at HK $ 10 each, which is a 15.3% discount from Wednesday’s closing price of HK $ 11.80 each.

Register now for FREE and unlimited access to Reuters.com

Register

Sunac shares fell 22% in afternoon trading to HK $ 9.2, compared to a 0.2% drop in the broad market (.HSI)
A source close to Sunac told Reuters that the company no longer intends in the short term to place its stock or shares in the Sunac Services unit (1516.HK) to raise capital, adding that it has sufficient funds to meet short-term debt payment obligations. term and for the development of the project.
Sunac China did not immediately respond to a request for comment.
Sunac last issued new shares and sold a stake in Sunac Services in November to raise a total of $ 948 million.
Sunac Services told investors on Tuesday that it also had no stock placement plan or new related party transactions and would resume share buybacks, according to a brokerage report. Jefferies.
In the last share placement, the controlling shareholder will buy the new shares after having sold the same number of existing shares at the same price to third-party investors.
Morgan Stanley & Co. International plc is the placement agent.
($ 1 = 7.7919 Hong Kong dollars)

Register now for FREE and unlimited access to Reuters.com

Register

Reporting by Donny Kwok and Clare Jim; Editing by Muralikumar Anantharaman
Our standards: Thomson Reuters Trust Principles.

Read More

Software Development Tools Market Size and Forecast

New Jersey, United States, – the Software Development Tools Market contains explicit information related to development rate, market estimates, drivers, restraints, future demand and sales during the forecast period. The Software Development Tools market is comprised of data that is collected from many primary as well as secondary sources. This information has been verified and […] … Read More

Read More

Accessing and/or clearing cookies in Delphi’s FMX TWebBrowser on Android

  

I’m currently developing an app on Android using Delphi, and a part of the authentification is done using the native TWebBrowser component, which as I’m understanding pulls from android’s native chrome webkit.
I need to clear cookies specific to my TWebBrowser component upon the press of a "log-off" button and upon exit of the application, however I’m finding it quite difficult as there doesn’t seem to be any procedure within TWebBrowser which ressembles a cookie manager of any sort. Whilst I have EnableCaching set to false, the app remembers my credentials upon exit and restart, which is problematic for my use case…
Is there a way to access or delete cookies created by Delphi’s Android TWebBrowser FMX component? I’ve thought of maybe importing this class :https://developer.android.com/reference/android/webkit/CookieManager with the JNI bridge, but I’m unsure on how to do so exactly and would like to try a native option if possible…
P.S : I’ve tried running chrome queries such as chrome://settings/clearBrowserData but it doesn’t seem like TWebBrowser recognizes it, but if there’s a similar option then I’m also open to it.
Any help is appreciated!

Read More

Software Development Kits (SDKs) Market Valuation To Explode Until 2026

  

The recent research report on Software Development Kits (SDKs) Market offers a meticulous analysis of all the crucial parameters such as key growth determinants, obstacles and expansion opportunities to reveal the growth pattern of the software development kits (SDKs). industry on 20XX-20XX. It also provides startling details on the sizes and shares of market segments, including product landscape and application spectrum, as well as regional segmentation.
Going further, the document offers actionable information on the competitive arena, elaborating on emerging companies, leading companies, as well as new entrants in this field. Additionally, it highlights the impact of the COVID-19 pandemic on that vertical and provides a set of tactics that will help companies stay afloat amid market turmoil.
Highlights from the COVID-19 case studies:

Effect of the COVID-19 pandemic on the economic situation at regional and global levels
Corresponding importance of supply and demand in the midst of the pandemic
Industry scenario before and after the pandemic

Request a copy of this report @ https://www.nwdiamondnotes.com/request-sample/118116
Overview of the regional analysis:

Major regional markets are North America, Europe, Asia-Pacific, South America, Middle East & Africa, Southeast Asia.
The contribution of each region to the overall progress of the industry is calculated in the study.
Sales, market shares and revenues for each geographic area are shown.

Other Important Inclusions in the Software Development Kit (SDK) Market report:

The document segments the product landscape of the Software Development Kits (SDK) market into iOS, Android, and others.
The report encompasses industry share and revenue data for each product segment.
Production models, industry share, and annual growth rate of each product segment over the expected time period are provided.
The scope of the Software Development Kits (SDK) market is categorized into phones, tablets, PCs, and others.
Estimates of the growth rate and market share of each application segment over the forecast period are concluded with supporting statistics.
The leading companies in the Software Development Kit (SDK) market are Apple Developer, Foresee, Instabug, Mapbox, Optimizely, Leanplum, Appsee, Stripe, and UserTesting.
The predominant trends and their effects on businesses are presented to help better understand the competitive dynamics of this industry.
A systematic inspection of the industry’s supply chain is carried out by assessing major suppliers, suppliers of raw materials and equipment, and downstream customers.
The study infers the pros and cons of investing in a new project using Porter’s Five Force assessment and SWOT analysis tools.

Main points covered by the table of contents:
Overview: Besides a general overview of the global Software Development Kits (SDKs) market, this section provides an overview of the report to give an idea of ​​the nature and content of the study.
Analysis of the strategies of the main players: Market players can use this analysis to gain competitive advantage over their competitors in the Software Development Kit (SDK) market.
Study on the main market trends: This section of the report offers a more in-depth analysis of the most recent and future trends in the market.
Market Forecast: Buyers of the report will have access to accurate and validated estimates of the total market size in terms of value and volume. The report also provides consumption, production, sales, and other forecasts for the Software Development Kit (SDK) market.
Analysis of regional growth: All major regions and countries have been covered in the report. The regional analysis will help market players tap unexplored regional markets, prepare specific strategies for target regions, and compare the growth of all regional markets.
Segmental analysis: The report provides accurate and reliable market share forecast for important segments of the Software Development Kits (SDK) market. Market players can use this analysis to make strategic investments in key growth pockets of the market.
Key questions answered in the report:

What will be the market growth rate of the Software Development Kit (SDK) market?

What are the key factors driving the global Software Development Kit (SDK) market?

Who are the main manufacturers in the market?

What are the market opportunities, market risk and market overview?

What are the sales, revenue, and price analyzes of the leading manufacturers of the Software Development Kit (SDK) market?

Who are the distributors, traders, and resellers of Software Development Kit (SDK) market?

What are the opportunities and threats of the Software Development Kit (SDK) market facing the vendors of the global Software Development Kit (SDK) industries?

What are the sales, revenue, and price analyzes by types and applications of the market?

What are the sales, revenue, and price analysis by regions of industries?

Request customization on this report @ https://www.nwdiamondnotes.com/request-for-customization/118116

Source link

Read More

Accessing Data From Component With Live Bindings

  

I’m loading a combo box with a number of customer records (3000+) (Delphi Alexandria/Firemonkey). Traditionally I’ve done this by creating an object with the ID number of the record and the identifying text:
IDRec := TIDRecClass.Create;
IDRec.IDNum := FieldByName(‘CustID’).AsInteger;
cboProducts.Items.AddObject (FieldByName(‘CustomerName’).AsString, IDRec);

and fetching the ID by retrieving the object when the combo box changes, but performance for loading the records was slower than I liked, so I though I would try a Live Binding (I’ve never used Live Binding before so I am a total newbie.) I bound the component to a table by selecting LiveBinding -> Bind Visually from the list of properties and connecting the CustID to the SelectedValue and the CustomerName to the Item.Text.
It loads the Customers quickly, but I have two issues now. First, it appears that when I select an entry, the OnChange event of the combo box does not fire, and second I’m not clear how to get the CustID number from the component for the selected entry. Once the record has been selected I need to use the CustID to fetch additional data from other tables.
All of the examples of how to work with live bindings seem to bind all of the controls on the form, and that’s not what I’m looking to do. Is there a resource I can use to learn how to do this? (Or a solution I can copy?)

Read More

Param null when do PUT HTTP call

  

I do some test with a REST API.
When I do a POST call :
Param := TMultipartFormData.Create;

Param.AddField(‘param1’, ‘value1’);
Param.AddField(‘param2’, ‘value2’);

Response := Client.Post(‘http://localhost/project/public/login’, Param);

I can use param1 and param2 in my backend.
When I do same with PUT method, I can’t use my param, param1 and param2 are null
Param := TMultipartFormData.Create;

Param.AddField(‘param1’, ‘value1’);
Param.AddField(‘param2’, ‘value2’);

// Headers contain my JWT

Response := Client.Put(‘http://localhost/project/public/api/profile’, Param, nil, Headers);

To use my param in PUT call I need to add it in my URL but I didn’t want use it like that.
Client.Put(
‘http://localhost/project/public/api/profile?param1=value1’,
nil, nil, Headers); // work but bad solution

I use Firemonkey 10.4.2 .
EDIT: My PUT call work in Postam when I’m with body x-www-form-urlencoded. When I use form-data, I get null param.
How can I give param in x-www-form-urlencoded ?

Read More

What is equivalent of VCL bmp.Canvas.CopyMode on the Delphi FireMonkey for find different of two bmp?

  

I get different between of two pictures according of this procedure :
procedure DifBmp(nbmp:tbitmap;bmp1,bmp2:tbitmap);
var rec:trect;
begin
nbmp.Assign(bmp1);
nbmp.Canvas.CopyMode:= cmSrcInvert;
rec:=rect(0,0,bmp1.Width,bmp1.Height);
nbmp.Canvas.CopyRect(rec, bmp2.Canvas,rec);
end;

I search net and can’t find any equivalent of it for FireMonkey.
Of Course compare pixel by pixel is a solution but it is very slowly.
thanks for any help.

Read More

FMX Timer editor

  

Does any one know where I can find a FMX Timer editor component that will work in windows, OSX, iOS and Android?
I need to be able to edit the hours, minutes, and seconds. From what I can tell both the Android and iOS time pickers only allow changing hours and minutes and includes an "am"/"pm" selection. I need minimally to be able to do the editing using the 24-hour format, include seconds, and preferably not be limited to a max of 24 hours. I would prefer not having to create my own FMX component if there are already ones available that do this.

Read More

Audio Plug-in Software Application Market Size, Reach, Forecast to 2029

New Jersey, United States, – The latest report published by Verified Market Reports shows that the Audio Plug-in Software Application Market should experience a sustained pace in the years to come. Analysts looked at market drivers, restrictions, risks and openings in the global market. The Audio Plug-in Software Application report shows the likely direction of […] … Read More

Read More

Programmatically aligning a created TButton right next to an adjacent TComponent in an FMX Frame

Referring to the picture, I would like to align a dynamically created TButton at runtime right next to a BindNavigator.

TButton *Add_But;
Add_But = new TButton(this);
Add_But->Visible = true;
Add_But->Text = "Add";
//Add_But->Position->X = 300;
//Add_But->Position->Y = 350;
Add_But->Parent=Form1->BindNavigator1;

Form1->Frame1->AddObject(Form1->StringGridBindSourceDB1);

Form1->Frame1->AddObject(Form1->BindNavigator1);
Form1->Frame1->AddObject(Add_But);

Add_But->Align=Fmx::Types::TAlignLayout::Right;

If I execute the above code, the Add_But button would align next to BindNavigator enclosed portion of the area between the last three buttons starting from the refresh button. Positioning Add_But using X,Y is not the ideal solution as I would like the Add_But to space out by certain margin padding just by using the Align property.

How to programmatically construct a TBounds margin object to resolve the issue?

Read More

Read More