From: <ob...@us...> - 2006-06-11 10:20:22
|
Revision: 10701 Author: obones Date: 2006-06-11 03:20:13 -0700 (Sun, 11 Jun 2006) ViewCVS: http://svn.sourceforge.net/jvcl/?rev=10701&view=rev Log Message: ----------- Mantis 3721: Setting Transparent at design time is now working fine. Modified Paths: -------------- trunk/jvcl/run/JvImage.pas Modified: trunk/jvcl/run/JvImage.pas =================================================================== --- trunk/jvcl/run/JvImage.pas 2006-06-10 17:57:48 UTC (rev 10700) +++ trunk/jvcl/run/JvImage.pas 2006-06-11 10:20:13 UTC (rev 10701) @@ -33,7 +33,7 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - SysUtils, Classes, Graphics, ExtCtrls, Controls, Forms, + Windows, SysUtils, Classes, Graphics, ExtCtrls, Controls, Forms, JvExExtCtrls; type @@ -71,6 +71,7 @@ FPicture: TPicture; FClickCount: Integer; FPictureChange: TNotifyEvent; + FDrawing: Boolean; procedure SetState(Value: TPicState); procedure PicturesChanged(Sender: TObject); procedure DoPictureChange(Sender: TObject); @@ -80,6 +81,7 @@ function UsesPictures: Boolean; protected procedure Click; override; + procedure Paint; override; procedure MouseEnter(Control: TControl); override; procedure MouseLeave(Control: TControl); override; function HitTest(X, Y: Integer): Boolean; override; @@ -241,10 +243,43 @@ end; procedure TJvImage.DoOwnPictureChange(Sender: TObject); +var + G: TGraphic; + D : TRect; begin + // All this code is required for Transparent, Center and other inherited + // properties to work fine. + if AutoSize and (Picture.Width > 0) and (Picture.Height > 0) then + SetBounds(Left, Top, Picture.Width, Picture.Height); + G := Picture.Graphic; + if G <> nil then + begin + if not ((G is TMetaFile) or (G is TIcon)) then + G.Transparent := inherited Transparent; + D := DestRect; + if (not G.Transparent) and (D.Left <= 0) and (D.Top <= 0) and + (D.Right >= Width) and (D.Bottom >= Height) then + ControlStyle := ControlStyle + [csOpaque] + else // picture might not cover entire clientrect + ControlStyle := ControlStyle - [csOpaque]; + if DoPaletteChange and FDrawing then Update; + end + else ControlStyle := ControlStyle - [csOpaque]; + if not FDrawing then Invalidate; + inherited Picture.Assign(FPicture); end; +procedure TJvImage.Paint; +begin + FDrawing := True; + try + inherited Paint; + finally + FDrawing := False; + end; +end; + procedure TJvImage.PicturesChanged(Sender: TObject); begin if UsesPictures then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2007-10-12 10:02:57
|
Revision: 11533 http://jvcl.svn.sourceforge.net/jvcl/?rev=11533&view=rev Author: obones Date: 2007-10-12 03:02:55 -0700 (Fri, 12 Oct 2007) Log Message: ----------- Mantis 4141: Setting AutoSize in DoOwnPictureChange had some weird side effects for no obvious benefit Modified Paths: -------------- trunk/jvcl/run/JvImage.pas Modified: trunk/jvcl/run/JvImage.pas =================================================================== --- trunk/jvcl/run/JvImage.pas 2007-10-09 21:40:03 UTC (rev 11532) +++ trunk/jvcl/run/JvImage.pas 2007-10-12 10:02:55 UTC (rev 11533) @@ -248,8 +248,6 @@ begin // All this code is required for Transparent, Center and other inherited // properties to work fine. - if AutoSize and (Picture.Width > 0) and (Picture.Height > 0) then - SetBounds(Left, Top, Picture.Width, Picture.Height); G := Picture.Graphic; if G <> nil then begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |