Quantcast
Channel: Delphi Forum - Delphi Programming Kings of Code - All Forums
Viewing all 3619 articles
Browse latest View live

Chrome PDF Reader

$
0
0
This is a simple utility written in Delphi that allows you to set Chrome as your default PDF viewer. It also wraps the PDF viewer giving it a differente look.

İmage

 

DarkDesktop

$
0
0
 Simple application that will allow you to dim your monitor in order to protect your eyes from excessive glare, specially on nights.This is only working on Windows 7 and newer. Not tested on Vista or below.Notice: This application needs digital code signing in order to make it work over ModernUI applications.

İmage

Magenta Systems WMI and SMART Component v5.5 DX10.1

$
0
0
Magenta Systems WMI and SMART Component
Home: Code:
PHP Code:
http://www.magsys.co.uk/delphi/magwmi.asp 
Introduction

Magenta Systems WMI and SMART Component contains WMI, SMART and SCSI Pass
Through functions, of particular use for getting hard disk information and
configuring network adaptors, but also for many other general uses.

MagWMI which allows access and update of windows system information using
Windows Management Instrumentation. MagWMI provides general view access
to any WMI information using SQL like commands, and also a number of
dedicated function relating to TCP/IP configuration, such as setting the
adaptor IP addresses, the computer name, domain/workgroup, BIOS and disk
drive information.

...

Magenta Systems WMI and SMART Component v5.5
  • Added missed function MagWmiGetInfoExASSOCIATORS for XE10.1

TMS Component Pack 8.3.4.0 Full Source D7-DX10.1 Win32-Win64 Retail 2016-09-23

Google AdSense for Business and Beginners

$
0
0
İmage
Google AdSense for Business and Beginners
English + 1.16 GB





Take this course to learn the basics of Google AdSense based on my experience building a Google AdSense business!


If you want to learn how to use Google AdSense to monetize your website, you can find a lot of practical tips and motivation in this course! When I started out, I had no idea how to actually get an Google AdSense website to make money. I may have never learned unless I took a step to purchase an Google AdSense website from someone else.

I took what I learned from purchasing that website to create more websites that turned out to be even more profitable. Now, I have taken my experience and packaged it into this course. I spent $2500 on my first website to be able to learn how to run a successful Google AdSense website.

$2500! And since that time I have spent hundreds of hours figuring out how to improve my Google AdSense earnings and determining what makes a site successful. Take what I learned about buying Google AdSense websites and creating my own to start your very own Google AdSense empire at a fraction of what it cost me to do it!

If you are going to learn a skill from someone, you want to learn from the one who has successfully achieved the goal you want. Is your goal to make enough money to live off of from Google AdSense? I have already been there and done that. I have made over $100,000 in one year from Google AdSense.

Take this course today to get lifetime access to everything I know about Google AdSense in just a few hours!


Code:
http://nitroflare.com/view/5DC099FC337A348/GOADFOBABs.part1.rar
http://nitroflare.com/view/670BD590E210AEC/GOADFOBABs.part2.rar
http://nitroflare.com/view/1AA8AB6B19426EA/GOADFOBABs.part3.rar
http://nitroflare.com/view/F53CBBEB8597244/GOADFOBABs.part4.rar
http://nitroflare.com/view/CEA2328A9A2A302/GOADFOBABs.part5.rar

Code:
http://k2s.cc/file/d80aa20a2e3cd/GOADFOBABs.part1.rar
http://k2s.cc/file/c223ce02a375a/GOADFOBABs.part2.rar
http://k2s.cc/file/023432295bdb5/GOADFOBABs.part3.rar
http://k2s.cc/file/ac0e2224f4888/GOADFOBABs.part4.rar
http://k2s.cc/file/a84d57665ba22/GOADFOBABs.part5.rar

XLSReadWriteII.v.5.20.67 D7-XE10.1

John Reese - Traffic Secrets 2016 English +

$
0
0
İmage
John Reese - Traffic Secrets 2016
English + 2.21 GB


"The Great Traffic Evolution!"
What you absolutely must do in 2016 to grow your business online!

Here's What This Eye-Opening FREE Video Series Reveals:

How to get more leads & customers to your site today!
The "B-C-B Foundation" and why you need to always focus on it.
How "Macro-Targeting" and "Micro-Targeting" changed everything.
What "Traffic Recycling" is and why it's so valuable for you.
Traffic Retargeting, Conversion Outliers, and more!
The impact of "Source Value Hierarchy" on your profit!
23 Common & Uncommon Traffic-Getting Mistakes!
And much, much more!

Are You Ready To Drive An Ongoing
Stampede Of High Quality Laser-Targeted
Leads & New Customers To Your Web Site?
"TRAFFIC SECRETS 2016"
6-Week Intensive Online Class

* This is the first-time ever this new class is being taught.

(24) Master Traffic-Getting Modules
(250+) Video "How-To" Lessons
Blueprints, Cheatsheets, Checklists!
Software Tools & Scripts
Interactive Quizzes & Tests
Gamification Badges & Awards
And Much, Much More!




Who Is This Ground-Breaking Traffic Class For?

Beginners & Advanced Marketers
New & Existing Entrepreneurs
Business Coaches
Marketing Consultants
Affiliate Marketers
Online Store Owners
InfoProduct Sellers
Life Coaches
Authors
SAAS Developers
And Many More!




(24) Master Traffic-Getting Modules

The Foundation
Spying On Your Competitors
Market Discovery
Copywriting Secrets
Keyword Science
Email Marketing Tactics
Google AdWords Mastery
Buying Media & Sponsorships
Shopping Engines & Amazon
Your Affiliate Army
Facebook Ads Architect
Traffic Retargeting
Social Media Strategy
Podcasts & Broadcasts
Mobile App Marketing
Software & Widgets
Google SEO Dynamics
Building A Content Factory
Content Curation Methods
YouTube Marketing
Traffic Recycling
International Opportunities
Expansion & Scalability
The Master Plan


Code:
http://nitroflare.com/view/C85DDBB9CF5B9D9/JRAARTS2016.part1.rar
http://nitroflare.com/view/0F485D3AA1DA64C/JRAARTS2016.part2.rar
http://nitroflare.com/view/CD2A12728227BF4/JRAARTS2016.part3.rar
http://nitroflare.com/view/522331E3CC74A8A/JRAARTS2016.part4.rar
http://nitroflare.com/view/0F49E2B351FB52C/JRAARTS2016.part5.rar

Code:
http://k2s.cc/file/b760e3340f8e7/JRAARTS2016.part1.rar
http://k2s.cc/file/d164dceece1f4/JRAARTS2016.part2.rar
http://k2s.cc/file/553781f6999d5/JRAARTS2016.part3.rar
http://k2s.cc/file/a8ba301d4387b/JRAARTS2016.part4.rar
http://k2s.cc/file/a67fd9835adec/JRAARTS2016.part5.rar

Delphi REST client API to consume REST

$
0
0
Delphi REST Client API

A Delphi REST client API to consume REST services written in any programming language.

The API was tested in Delphi 7, XE, XE2, XE3, XE4 and XE7. It is also compatible with Mac OSX and iOS.

Connection Layer

There are a IHttpConnection interface to abstract the real Http conection. This interface currently have two implementations, using Indy 10, WinHTTP and WinInet.

Indy 9 does not handles HTTP response codes correctly, then if you are using Delphi 7, you must update your indy library to version 10 or use WinHttp (recommended). To disable indy support comment the compiler directive {.$DEFINE USE_INDY} in DelphiRest.inc file.

Serialization/Desserialization

The objects are transmitted in JSON format. To function properly, the object must be declared as follows, with public fields.

TPerson = class(TObject)
public
  (* Reflect the server side object field names, for Java must be case-sensitive *)
  id: Integer;
  name: String;
  email: String;

  (* Static constructor *)
  class function NewFrom(Id: Integer; Name, EMail: String): TPerson;
end;
See more details about serialization here: Serialization

Samples

Note that all code below assume you have installed the component in your IDE and dropped the RestClient component on a form or data module, but of course you can also create the component directly in your code.

GET
var
  vList : TList<TPerson>;
begin
  vList := RestClient.Resource('http://localhost:8080/java-rest-server/rest/persons')
                     .Accept(RestUtils.MediaType_Json)
                     .Get<TList<TPerson>>();
GET ONE
var
  vPerson : TPerson;
begin
  vPerson := RestClient.Resource('http://localhost:8080/java-rest-server/rest/person/1')
                 .Accept(RestUtils.MediaType_Json)
                 .Get<TPerson>();
POST
var
  vPerson : TPerson;
begin
  vPerson := TPerson.NewFrom(123, 'Fabricio', 'fabricio.colombo.mva@gmail.com');
  RestClient.Resource('http://localhost:8080/java-rest-server/rest/person')
            .Accept(RestUtils.MediaType_Json)
            .ContentType(RestUtils.MediaType_Json)
            .Post<TPerson>(vPerson);
PUT
var
  vPerson : TPerson;
begin
  vPerson := //Load person
  vPerson.Email := 'new@email.com';
  RestClient.Resource('http://localhost:8080/java-rest-server/rest/person')
            .Accept(RestUtils.MediaType_Json)
            .ContentType(RestUtils.MediaType_Json)
            .Put<TPerson>(vPerson);
DELETE
var
  vPerson : TPerson;
begin
  vPerson := //Load person
  RestClient.Resource('http://localhost:8080/java-rest-server/rest/person')
            .Accept(RestUtils.MediaType_Json)
            .ContentType(RestUtils.MediaType_Json)
            .Delete(vPerson);
GET AS DATASET
The fields need be predefined.

var
  vDataSet: TClientDataSet;
begin
  vDataSet := TClientDataSet.Create(nil);
  try
    TDataSetUtils.CreateField(vDataSet, ftInteger, 'id');
    TDataSetUtils.CreateField(vDataSet, ftString, 'name', 100);
    TDataSetUtils.CreateField(vDataSet, ftString, 'email', 100);
    vDataSet.CreateDataSet;

   RestClient.Resource(CONTEXT_PATH + 'persons')
              .Accept(RestUtils.MediaType_Json)
              .GetAsDataSet(vDataSet);
  finally
    vDataSet.Free;
  end;
GET AS DYNAMIC DATASET
The fields are created dynamically according to the returned content.

var
  vDataSet: TDataSet;
begin
  vDataSet := RestClient.Resource(CONTEXT_PATH + 'persons')
                        .Accept(RestUtils.MediaType_Json)
                        .GetAsDataSet();
  try
    //Do something
  finally
    vDataSet.Free;
  end;
ASYNC REQUESTS
  //Implement OnAsyncRequestProcess event to allow cancelling a request or update the UI
  RestClient.OnAsyncRequestProcess :=
    procedure(var Cancel: Boolean)
    begin
      Cancel := True; // Set cancel to true to abort the request
    end;

// This will raise an EAbort if the request is canceled 
 RestClient.Resource(CONTEXT_PATH + 'async')
            .Accept('text/plain')
            .Async
            .GET();
NOTE: Async request is only supported for WinHTTP. Any thought about how to implement this feature for Indy and WinInet are welcome.
Authentication

RestClient supports HTTP Basic authentication. You can set credentials using the SetCredentials method before making the first request:

RestClient.SetCredentials('username', 'password');
You can set it once and it will be used for every request.

Self-signed certificates

To skip certificate validation set VerifyCert to false.

RestClient.VerifyCert := false;
Indy note: Certificate validation is not yet supported with Indy. Certificates will not be validated! Any thought about how to implement this feature for Indy are welcome.
Error events

Retry modes

hrmRaise (default)
Raises an exception after the event.
hrmIgnore
Ignore the error. No exception will be raised after the event.
hrmRetry
Retries the request.
THTTPErrorEvent

Triggered for all status codes equal or above 400.

The following example will ignore the status code 404. This will result in an empty response (nil for objects). You'll have to check if your objects has been assigned after every request.

AHTTPError.ErrorMessage contains the content of the response. You can deserialize this to display your own error message (see RestJsonUtils.TJsonUtil).

restclient := TRestClient.Create(self); 
restclient.ConnectionType := hctWinINet;
restclient.OnError := RestError;

procedure Tdm.RestError(ARestClient: TRestClient; AResource: restclient.TResource;
  AMethod: TRequestMethod; AHTTPError: EHTTPError;
  var ARetryMode: THTTPRetryMode);
begin
  ARetryMode := hrmRaise;
  if AHTTPError.ErrorCode = 404 then
    ARetryMode := hrmIgnore;
end;
THTTPConnectionLostEvent

The following example will retry the request forever. If you want it to only retry for at limited time, you'll have to implement that counter your self.

restclient := TRestClient.Create(self); 
restclient.ConnectionType := hctWinINet;
restclient.OnConnectionLost := RestConnectionLost;

procedure Tdm.RestConnectionLost(AException: Exception; var ARetryMode: THTTPRetryMode);
begin
  ARetryMode := hrmRetry;
  sleep(1000);
end;
Java Rest Server

The java project is only for test purpose and has built using Maven and Jersey, so it's needed have installed the JRE 6+ (Java Runtime Environment) and Maven 2 to build and run the application. The Maven bin directory must be included in Windows Path environment variable.

After install Java and Maven just run 'start-java-server.bat' to start the application and 'stop-java-server.bat' to shut down them.

When 'start-java-server.bat' is first run maven dependencies will be downloaded, and it may take a while.


ERP and Restaurante Soruce Code

FireBird (2.5, 3.0) + FireDac Russian

Smart LED Animator Full Source

$
0
0
SLED is a piece of software for creating animation for Smart LEDs (RGB Pixels). It can be used to quickly create animations for Horizontal (LEDTrix), Vertical (MegaTrees), Circular (Arches), and Radial (Spinners) orientations. It will export the animations in Light-O-Rama S3, Vixen, and LightShow Pro formats to be incorporated into your shows.


 

EhLib 9.0 Build 9.0.028 XE10.1

Digital Media Controller Component

$
0
0
PHP Code:
TUpnpDMC is a class that implements a DLNA DMC (Digital Media Controllerin Delphi.
I needed some Delphi code to play Videos from my server to my SAMSUNG TV.
I could only find some partial implementationone in Visual Basic and some code in Delphi
bur not a complete DMCso I wrote this.
There is an example application in the directory UPNPDelphi.
On second thoughtI should heva named the class TDLNADMC and the same for the example.
For 
nowI am just sharing this code.

You can browse the available servers and renderers on your system.
Once foundyou can select an item from the server and play it on a renderer.
Then you can pausestopplayseek that item

You create a TUpnpDMC object by calling _create_

supplying an owner and a TStrings (not NILused as Log
You can search devices by _SearchDevices_
Set _OnDeviceListChanged_ to receive notifaction on Devices available
Then retrieve Servers 
and Renderers by inpecting _ServerCount_ and _GetServerName_ etc.
Select a Server with _SetServerIndex_the same for a Renderer
Browse the Server tree with _BrowseRoot_ 
and subdirectories with _BrowseIndex_,
go back with _Back_
Inspect items with _GetItemName_ 
and _ItemCount_
Select an item with _SetItemIndex_

Now you can Play
PauseSeekSetPosition etc the item with the corresponding methods.
You can retrieve information bij GetPosition and GetPlayStatus

[lock]Download [url=https://github.com/RuudErmers/DelphiDLNADMC/archive/master.zip]HERE[/url][/lock] 
 

Android to PC USB Interfaces (ADB, AOA, HID)

$
0
0
 
PHP Code:
This is a set of code to aid development for communication between an Android device and 
an Embedded Device, or PCThere are examples for the following:

Communication between PC and Android deviceover USBusing the ADB (Android Debugprotocol.
Communication between PC and Android deviceover USBusing the AOA (Android Open Accessoryprotocol.
Communication between PC and a simple HID device (Arduino and LPC 1768 Microcontroller).

All PC code is written in Delphi.
Android code is in Java and the embedded code in C/C++.

So why would you want this?
We are developing a hardware device which needs to interact with an Android phone.
It needs to be robust and simpleso we opted for a USB interface. 
(
Wireless connections were ruled out)
In this case the Android device is the USB client, and the hardware device is USB Host.
In development it became clear that it would be handy to change the hardware device for a PC,
to test the Android side of things without to much hassle on the hardware device.
Therefor we needed an Android <-> PC bridge.
I found a few (in C), but I opted to use Delphi for quick testing
Based on LibUSBK there is a class which implements a simple twoway USB connection.
From therethere are classes which implement the ADB protocol and the AOA protocol.

As 
you may know the ADB interface runs on devices supporting Android 1.5AOA is only supported
by some devices
, and need Android 2.3.3.
PersonallyI don't see any advantage of using AOA as it is not widely supported. In fact, 
I was only able to get this working with one Android Device i have (a chines Android TV Stick)

All of this code becomes '
obsolete' when using an Android device which adds HID facility. 
This is supported from Android 4.0. Since all the basics wre there I decide to add an example where 
Delphi takes over the Android side to test the hardware. 
I have added two examples on Embedded platforms, for Arduino and LPC 1768 (from mBed).
I have also some examples for FEZ Domino or Microchip Cereboth (both implementing ADB host).
On the HID facility: This is also only implemented in some devices.

[lock]Download [url=https://github.com/RuudErmers/AndroidDelphiInterface/archive/master.zip]HERE[/url][/lock] 

TMS FlexCel Manuals

$
0
0
TMS FlexCel Manuals, especially
- API Developers Guide
- Reports Designers Guide
- Reports developers Guide
- Using FlexCel with Lazarus


 

XtremeDocumentStudio Ultimate.v.16.6.638.1890 D2010-XE10.1

$
0
0
Gnostice XtremeDocumentStudio Delphi is the next-generation multi-format document-processing component suite for Delphi/C++Builder developers. XtremeDocumentStudio includes VCL components for viewing, printing, and converting PDF, DOCX, DOC, RTF, BMP, JPEG, PNG, WMF, EMF, and single-page and multi-page TIFF. It also has report-export components for ACE Reporter, FastReport, QuickReport and ReportBuilder components that can export to PDF, PDF/A, XLSX, RTF, HTML, XHTML, TXT, SVG, PNG, JPEG and GIF formats. PDF/A support includes compliance with PDF/A 1b, 2b, and 3b versions. PDF/A-3b support complies with ZUGFeRD electronic invoicing standard. In future, creation and editing support will be added.

XtremeDocumentStudio also includes FireMonkey support. Its FireMonkey document viewer can display PDF, DOC, RTF and images on Windows, Mac, iOS and Android platforms. The FireMonkey support is currently in beta and we are continually improving the rendering with support for more and more features of each of the formats.

XtremeDocumentStudio Delphi is written in 100% Object Pascal for both VCL and FireMonkey. It can process all supported formats without requiring external software such as Microsoft Word, Open XML SDK, Adobe PDF library or GhostScript.

Supports Delphi 2010 to Delphi XE10.1(Berlin)


 

Fill bitmap area with 2-color gradient, any angle - Source using Graphics32

$
0
0
Hi all,

I recently had to develop a little method for filling an area of bitmap with a 2-color gradient of any angle.
I use the Graphics32 library, and didn't want to have to integrate and learn another library for that. I quickly searched for an existing solution online, and didn't find one, so I wrote my own. I'm posting it here in case it helps someone.

The way I went about it is as follows:
  • a 2-color gradient is essentially defined by a line.
  • On that line, any point up to the start is of the start color.
  • In between the start and end point, the color is the weighted average of the 2 colors (I don't know if my way of blending the colors is the generally accepted one, or if there is even such a thing. It works well for me though)
  • from the end point on, the color is the end color.
  • The area of the bitmap is filled by finding the corresponding "X" position of each pixel relative to the provided gradient line
The tricky part is the last one, at least if you're not familiar with geometry and transforms.
The way I approached it is:
  • The gradient is specified by its start and end points (relative to the overal bitmap)
  • The origin of the "gradient coordinate system" is halfway between the start and end points
  • We pre-calculate the individual pixel values along the X-axis for the gradient coord. system
  • The target area is then filled according to the X-value of the pixel in the gradient coord. system. that value is calculated by apply the rotation and translation transforms required.
  • The target area is defined by a TRect
  • I used a mask to further delimit the area of the bitmap that needs to be filled. The mask is white for the area that is to be filled, black for the rest. The provided mask is stretched to match the target rect.
Here is the code.

Cheers!
 
uses
  GR32, GR32_Transforms;

///<summary>Advanced Gradient Fill function, with any angle and any start/end point combinations for the gradient<br/>
///         Lets you specify the area of the bitmap in which to draw the gradient (aRect)<br/>
///         Lets you specify the start and end points (with repect to the drawing area aRect) of the gradient (sPoint, ePoint)<br/>
///         Lets you specify the start and end colors of the gradient (sColor, eColor)<br/>
///         Lets you specify a mask for the gradient (maskBitmap). The gradient will only be drawn to parts of the mask that are not fully transparent (levels of transparency are not applied however)</summary>

procedure GradientFillAdv (aBitmap : TBitmap32; aRect : TRect; sColor, eColor : TColor32; sPoint, ePoint : TPoint; maskBitmap : TBitmap32 = nil);

procedure GradientFillAdv (aBitmap : TBitmap32; aRect : TRect; sColor, eColor : TColor32; sPoint, ePoint : TPoint; maskBitmap : TBitmap32 = nil);
var
  startPoint, endPoint : TPoint;  //Used to make the calculations easier, always use the smallest-X point as the start point
  startColor, endColor : TColor32;
  newO : TPoint;  //origin in the new reference coordinate system
  alpha : Double;  //Rotation angle of the new reference coordinate system, in radians
  sinAlpha, cosAlpha : Double;  //the sinus and cosinus values of the rotation angle, used many times so precalculated
  GradColors: TArrayOfColor32;  //Array of colors corresponding to the X axis value on the new ref. coord. system. This value is shifted by caOffset since arrays are 0-based
  caOffset, minRectX, maxRectX, spX, epX, xDist : Integer;
  loop, loopX, loopY: Integer;  //used to determine the size of the color array to create
  scR, scG, scB, scA, ecR, ecG, ecB, ecA : Byte;  //color components of the start and end colors
  { Mask Vars }
  scaleFactor : Double;
  tarRect : TRect;
  tempMask : TBitmap32;
  pAlpha : Byte;


  { Functions for coordinates under the translated and rotated system:
      After Translation: X2t = X - newO.X
                         Y2t = Y - newO.Y
      After Rotation:    X2tr = X2t.cos(alpha) - Y2t.sin(alpha)
                         Y2tr = Y2t.cos(alpha) + X2t.sin(alpha) }


  function GetNewX (oldX, oldY : Integer) : Integer;
  begin
    Result := Round ((oldX - newO.X) * cosAlpha - (oldY - newO.Y) * sinAlpha);
  end;
  { Not needed
  function GetNewY (oldX, oldY : Integer) : Integer;
  begin
    Result := Round ((oldY - newO.Y) * cosAlpha + (oldX - newO.X) * sinAlpha);
  end; }


  { For speed, assumes spX < pX < epX. Otherwise, just add Mins and Maxs or check for position }
  function CombineColors (pX : Integer) : TColor32;
  var
    dist2Start, dist2End : Integer;
  begin
    dist2Start := pX - spX;
    dist2End := epX - pX;

    Result := Color32((scR * dist2End + ecR * dist2Start) div xDist, (scG * dist2End + ecG * dist2Start) div xDist, (scB * dist2End + ecB * dist2Start) div xDist, (scA * dist2End + ecA * dist2Start) div xDist);
  end;

begin
  { For a simple 2-color gradient, we only need to find the X coordinate of each point in a new reference system that has been (potentially) translated and (potentially) rotated.
    The new reference coordinate system is determined by the start and end points of the gradient. }

  if sPoint.X <= ePoint.X then
  begin
    startPoint := sPoint;
    endPoint := ePoint;
    startColor := sColor;
    endColor := eColor;
  end else
  begin
    startPoint := ePoint;
    endPoint := sPoint;
    startColor := eColor;
    endColor := sColor;
  end;

  newO := Gr32.Point (Round ((startPoint.X + endPoint.X) / 2.0), Round ((startPoint.Y + endPoint.Y) / 2.0));
  alpha := -ArcTan ((endPoint.Y - startPoint.Y) / (endPoint.X - startPoint.X));
  sinAlpha := Sin (alpha);
  cosAlpha := Cos (alpha);
  Color32ToRGBA(startColor, scR, scG, scB, scA);
  Color32ToRGBA(endColor, ecR, ecG, ecB, ecA);

  { We will fill the tempBitmap with colors.
    The color of each pixel is governed by its X position in the new reference coordinate system (Y coordinate would only be used if we had a multi-point, non-linear gradient) }

  if startPoint.Y <= endPoint.Y then
  begin
    minRectX := GetNewX(0, 0);
    maxRectX := GetNewX(GetRectWidth(aRect) - 1, GetRectHeight(aRect) - 1);
  end else
  begin
    minRectX := GetNewX(0, GetRectHeight(aRect) - 1);
    maxRectX := GetNewX(GetRectWidth(aRect) - 1, 0);
  end;
  SetLength (GradColors, maxRectX - minRectX + 1);
  { Fill the array with the corresponding color for each position }
  spX := GetNewX(startPoint.X, startPoint.Y);  //X value in the new ref. coord. system of the starting point
  epX := GetNewX(endPoint.X, endPoint.Y);  //X value in the new ref. coord. system of the ending point
  xDist := epX - spX;
  for loop := minRectX to maxRectX do
  begin
    if loop <= spX  then
      GradColors[loop - minRectX] := startColor
    else if loop >= epX then
      GradColors[loop - minRectX] := endColor
    else
      GradColors[loop - minRectX] := CombineColors(loop);
  end;

  { Prepare the mask, if required. }
  if Assigned(maskBitmap) then
  begin
    tempMask := TBitmap32.Create;
    if (maskBitmap.Height <> GetRectHeight(aRect)) or (maskBitmap.Width <> GetRectWidth(aRect)) then
    begin
      scaleFactor := Max(maskBitmap.Height / GetRectHeight(aRect), maskBitmap.Width / GetRectWidth(aRect));
      tarRect := Rect(0, 0, Floor(maskBitmap.Width / scaleFactor), Floor(maskBitmap.Height / scaleFactor));
      maskBitmap.ResamplerClassName := 'TLinearResampler';
      maskBitmap.DrawTo(tempMask, tarRect);
    end else
      tempMask.Assign(maskBitmap);
  end;

  { Now, fill the aRect area }
  for loopX := Max(0, aRect.Left) to Min(aBitmap.Width, aRect.Right - 1) do
  begin
    for loopY := Max(0, aRect.Top) to Min(aBitmap.Height, aRect.Bottom - 1) do
    begin
      if Assigned(maskBitmap) then
      begin
        pAlpha := AlphaComponent (tempMask. Pixel [loopX, loopY]);
        if pAlpha <> 0 then
          aBitmap. Pixel [loopx, loopY] := GradColors[GetNewX(loopX - aRect.Left, loopY - aRect.Top) - minRectX];
      end else
        aBitmap.Pixel[loopX, loopY] := GradColors[GetNewX(loopX - aRect.Left, loopY - aRect.Top) - minRectX];
    end;
  end;
end;


 

FastReport 5.3.16

Intraweb Bootstrap 3 Framework for Delphi

$
0
0
This framework let you create responsive desktop and mobile applications with IntraWeb using Tweeter Bootstrap 3 library.Using the ide in the same way you use for create traditional Intraweb Aplications, with very little effort you can create a single applications that look awsome in mobile devices and desktop at the same time.It's light and fast so it provides a great experience for the final user on practically any modern device.If you need to develop applications for phones, tablets and any other device this is the best alternative for use with Intraweb for Delphi.

 

AlphaControls.v11.17.Stable.(D5&D10.1Berlin - CB6&Builder10.1Berlin) OnlyDCU

$
0
0
13.10.2016 AlphaControls v11.17 Stable released
* Improved initializing of the TsDecimalSpinEdit when the DecimalPlaces property is changed
* Improved drawing of the TsImage if Transparent property is False
* Improved showing of popup forms by the ShowPopupForm procedure
* Improved scaling of TsSpeedButton and TsButton when dropdown arrow is visible
* Improved painting of the TsCombobox component without skins
* Switching of the ScaleMode property is improved visually
* Solved issue with drawing of a selected item with big text in the TsTreeView component
* Solved problem with scrolling of the TsSkinSelector component by keyboard
* Solved issue with empty form showing when ExtendedBorders used
* Solved problem with hotkeys when TsComboboxEx is focused
* Added support of the TSearchBox component
* Added semitransparent painting of the disabled TsSlider components and caption of the TsGroupBox component


 
Viewing all 3619 articles
Browse latest View live