[Lazarus] Once again about the size of the executable

Max Vlasov max.vlasov at gmail.com
Sat Jul 9 00:32:42 CEST 2011


On Sat, Jul 9, 2011 at 12:26 AM, Alexander Klenin <klenin at gmail.com> wrote:
> On Fri, Jul 8, 2011 at 08:30, Max Vlasov <max.vlasov at gmail.com> wrote:
>> So after some investigation I came up with a one minor fix. If ImgList
>> is removed from the Themes implementation section and
>> DrawIcon(ACanvas...) made blank, Graphics no longer indirectly uses
>> Controls unit . The only place that uses this overloaded
>> DrawIcon(ACanvas method is \lcl\include\headercontrol.inc. Sure this
>> change is not a fix that works, but just proof-of-concept change that
>> shows that this method either can be moved somewhere or replace with
>> something else allowing existence of Graphics without Widget Set
>> (Factory) usage.
>
> This is excellent news for me, since I have long planned to get rid of
> Graphics unit in TAChart to avoid widgetset dependency.
> I thought that Graphics depends on WidgetSet due to Delphi compatibility.
> If in fact the dependency is just an implementation accident,
> I would like it very much to see it gone.
>
> Can you post a patch of your changes for easier review/discussion?
>

Sorry for my free form of the patch, it looks like the following
changes in Themes.pas

implementation
uses
  SysUtils, InterfaceBase, LCLIntf, GraphType, Graphics, ImgList;

implementation
uses
  SysUtils, InterfaceBase, LCLIntf, GraphType, Graphics{, ImgList};


and

procedure TThemeServices.DrawIcon(ACanvas: TPersistent;
  Details: TThemedElementDetails; const P: TPoint; AImageList:
TPersistent;  Index: Integer);
begin
...
end;

to

procedure TThemeServices.DrawIcon(ACanvas: TPersistent;
  Details: TThemedElementDetails; const P: TPoint; AImageList:
TPersistent;  Index: Integer);
begin
end;

so just make this overloaded DrawIcon do nothing.

Max




More information about the Lazarus mailing list