From: <ob...@us...> - 2006-06-23 09:24:49
|
Revision: 10723 Author: obones Date: 2006-06-23 02:24:19 -0700 (Fri, 23 Jun 2006) ViewCVS: http://svn.sourceforge.net/jvcl/?rev=10723&view=rev Log Message: ----------- Added default values to TJvPoint and TJvRect Added Assign overlaod to TJvPoint and TJvRect Added CopyToXXX to TJvPoint and TJvRect Introduced TJvSize, publishable version of TSize. Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2006-06-23 09:23:13 UTC (rev 10722) +++ trunk/jvcl/run/JvJVCLUtils.pas 2006-06-23 09:24:19 UTC (rev 10723) @@ -552,7 +552,7 @@ { end JvGraph } type - // equivalent of TPoint, but that can be a published property for BCB + // equivalent of TPoint, but that can be a published property TJvPoint = class(TPersistent) private FY: Longint; @@ -563,14 +563,16 @@ protected procedure DoChange; public - procedure Assign(Source: TPersistent); override; + procedure Assign(Source: TPersistent); overload; override; + procedure Assign(Source: TPoint); reintroduce; overload; + procedure CopyToPoint(var Point: TPoint); property OnChange: TNotifyEvent read FOnChange write FOnChange; published - property X: Longint read FX write SetX; - property Y: Longint read FY write SetY; + property X: Longint read FX write SetX default 0; + property Y: Longint read FY write SetY default 0; end; - // equivalent of TRect, but that can be a published property for BCB + // equivalent of TRect, but that can be a published property TJvRect = class(TPersistent) private FTopLeft: TJvPoint; @@ -596,19 +598,40 @@ public constructor Create; destructor Destroy; override; - procedure Assign(Source: TPersistent); override; + procedure Assign(Source: TPersistent); overload; override; + procedure Assign(Source: TRect); reintroduce; overload; + procedure CopyToRect(var Rect: TRect); property TopLeft: TJvPoint read FTopLeft write SetTopLeft; property BottomRight: TJvPoint read FBottomRight write SetBottomRight; property Width: Integer read GetWidth write SetWidth; property Height: Integer read GetHeight write SetHeight; property OnChange: TNotifyEvent read FOnChange write FOnChange; published - property Left: Integer read GetLeft write SetLeft; - property Top: Integer read GetTop write SetTop; - property Right: Integer read GetRight write SetRight; - property Bottom: Integer read GetBottom write SetBottom; + property Left: Integer read GetLeft write SetLeft default 0; + property Top: Integer read GetTop write SetTop default 0; + property Right: Integer read GetRight write SetRight default 0; + property Bottom: Integer read GetBottom write SetBottom default 0; end; + TJvSize = class(TPersistent) + private + FWidth: Longint; + FHeight: Longint; + FOnChange: TNotifyEvent; + procedure SetWidth(Value: Longint); + procedure SetHeight(Value: Longint); + protected + procedure DoChange; + public + procedure Assign(Source: TPersistent); overload; override; + procedure Assign(Source: TSize); reintroduce; overload; + procedure CopyToSize(var Size: TSize); + property OnChange: TNotifyEvent read FOnChange write FOnChange; + published + property Width: Longint read FWidth write SetWidth default 0; + property Height: Longint read FHeight write SetHeight default 0; + end; + { begin JvCtrlUtils } //------------------------------------------------------------------------------ @@ -7198,6 +7221,18 @@ inherited Assign(Source); end; +procedure TJvPoint.Assign(Source: TPoint); +begin + X := Source.X; + Y := Source.Y; +end; + +procedure TJvPoint.CopyToPoint(var Point: TPoint); +begin + Point.X := X; + Point.Y := Y; +end; + procedure TJvPoint.DoChange; begin if Assigned(FOnChange) then @@ -7218,6 +7253,18 @@ //=== { TJvRect } ============================================================ +procedure TJvRect.Assign(Source: TRect); +begin + TopLeft.Assign(Source.TopLeft); + BottomRight.Assign(Source.BottomRight); +end; + +procedure TJvRect.CopyToRect(var Rect: TRect); +begin + TopLeft.CopyToPoint(Rect.TopLeft); + BottomRight.CopyToPoint(Rect.BottomRight); +end; + constructor TJvRect.Create; begin inherited Create; @@ -7327,6 +7374,59 @@ FBottomRight.X := FTopLeft.X + Value; end; + { TJvSize } + +procedure TJvSize.Assign(Source: TPersistent); +begin + if Source is TJvSize then + begin + FWidth := (Source as TJvSize).Width; + FHeight := (Source as TJvSize).Height; + DoChange; + end + else + begin + inherited Assign(Source); + end; +end; + +procedure TJvSize.Assign(Source: TSize); +begin + FWidth := Source.cx; + FHeight := Source.cy; + DoChange; +end; + +procedure TJvSize.CopyToSize(var Size: TSize); +begin + Size.cx := Width; + Size.cy := Height; +end; + +procedure TJvSize.DoChange; +begin + if Assigned(OnChange) then + OnChange(Self); +end; + +procedure TJvSize.SetHeight(Value: Integer); +begin + if FHeight <> Value then + begin + FHeight := Value; + DoChange; + end; +end; + +procedure TJvSize.SetWidth(Value: Integer); +begin + if FWidth <> Value then + begin + FWidth := Value; + DoChange; + end; +end; + function SelectColorByLuminance(AColor, DarkColor, BrightColor: TColor): TColor; var ACol: Longint; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2006-06-29 12:41:26
|
Revision: 10760 Author: obones Date: 2006-06-29 05:41:20 -0700 (Thu, 29 Jun 2006) ViewCVS: http://svn.sourceforge.net/jvcl/?rev=10760&view=rev Log Message: ----------- Mantis 3785: Now stops at the FIRST parent form to avoid using an invalid name for a section Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2006-06-28 21:18:21 UTC (rev 10759) +++ trunk/jvcl/run/JvJVCLUtils.pas 2006-06-29 12:41:20 UTC (rev 10760) @@ -4150,7 +4150,15 @@ Result := Component.Name; if Component is TControl then begin - F := GetParentForm(TControl(Component)); + // Pass False to GetParentForm to stop at the FIRST parent that is + // a TCustomForm. This is required to fix Mantis 3785. Indeed with + // the default value, the returned form would be the top most form. + // Say, you have a control in Form2, with an instance of Form2 docked + // in Form1. When loading, F would Form1, because the parent chain + // is completely set. But when destroying, the parent chain would be + // already broken, and F would then be Form2, thus returning a different + // section name than the one returned when loading. + F := GetParentForm(TControl(Component), False); if F <> nil then Result := F.ClassName + Result else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2006-06-29 14:26:00
|
Revision: 10761 Author: obones Date: 2006-06-29 07:25:53 -0700 (Thu, 29 Jun 2006) ViewCVS: http://svn.sourceforge.net/jvcl/?rev=10761&view=rev Log Message: ----------- Mantis 3787: Passing False to GetParentForm is only possible from Delphi 2005. Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2006-06-29 12:41:20 UTC (rev 10760) +++ trunk/jvcl/run/JvJVCLUtils.pas 2006-06-29 14:25:53 UTC (rev 10761) @@ -4158,7 +4158,7 @@ // is completely set. But when destroying, the parent chain would be // already broken, and F would then be Form2, thus returning a different // section name than the one returned when loading. - F := GetParentForm(TControl(Component), False); + F := GetParentForm(TControl(Component){$IFDEF COMPILER9_UP}, False{$ENDIF COMPILER9_UP}); if F <> nil then Result := F.ClassName + Result else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2006-06-29 16:19:05
|
Revision: 10764 Author: obones Date: 2006-06-29 09:18:43 -0700 (Thu, 29 Jun 2006) ViewCVS: http://svn.sourceforge.net/jvcl/?rev=10764&view=rev Log Message: ----------- Introduced GetFirstParentForm to overcome the fact that GetParentForm does not stop at the first TCustomForm it finds. Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2006-06-29 16:04:39 UTC (rev 10763) +++ trunk/jvcl/run/JvJVCLUtils.pas 2006-06-29 16:18:43 UTC (rev 10764) @@ -410,6 +410,7 @@ { end JvUtils } { begin JvAppUtils} +function GetFirstParentForm(Control: TControl): TCustomForm; function GetDefaultSection(Component: TComponent): string; function GetDefaultIniName: string; @@ -4136,6 +4137,15 @@ { begin JvApputils } +function GetFirstParentForm(Control: TControl): TCustomForm; +begin + while not (Control is TCustomForm) and (Control.Parent <> nil) do + Control := Control.Parent; + if Control is TCustomForm then + Result := TCustomForm(Control) else + Result := nil; +end; + function GetDefaultSection(Component: TComponent): string; var F: TCustomForm; @@ -4150,15 +4160,19 @@ Result := Component.Name; if Component is TControl then begin - // Pass False to GetParentForm to stop at the FIRST parent that is - // a TCustomForm. This is required to fix Mantis 3785. Indeed with - // the default value, the returned form would be the top most form. + // GetParentForm will not stop at the first TCustomForm it finds. + // Starting with Delphi 2005, we can pass False as the second parameter + // to stop at the FIRST parent that is a TCustomForm, but this is not + // available in earlier versions of Delphi. Hence the creation and + // use of GetFirstParentForm. + // This is required to fix Mantis 3785. Indeed with GetParentForm, the + // returned form would be the top most form. // Say, you have a control in Form2, with an instance of Form2 docked // in Form1. When loading, F would Form1, because the parent chain // is completely set. But when destroying, the parent chain would be // already broken, and F would then be Form2, thus returning a different // section name than the one returned when loading. - F := GetParentForm(TControl(Component){$IFDEF COMPILER9_UP}, False{$ENDIF COMPILER9_UP}); + F := GetFirstParentForm(TControl(Component)); if F <> nil then Result := F.ClassName + Result else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2006-07-27 17:26:08
|
Revision: 10847 Author: obones Date: 2006-07-27 10:25:58 -0700 (Thu, 27 Jul 2006) ViewCVS: http://svn.sourceforge.net/jvcl/?rev=10847&view=rev Log Message: ----------- GetWorkareaRect and FindMonitor moved here to allow access to the entire JVCL Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2006-07-26 07:51:08 UTC (rev 10846) +++ trunk/jvcl/run/JvJVCLUtils.pas 2006-07-27 17:25:58 UTC (rev 10847) @@ -53,7 +53,7 @@ Qt, QWinCursors, QWindows, {$ENDIF VisualCLX} Forms, Graphics, Controls, StdCtrls, ExtCtrls, Menus, - Dialogs, ComCtrls, ImgList, Grids, IniFiles, + Dialogs, ComCtrls, ImgList, Grids, IniFiles, MultiMon, Classes, // must be after "Forms" JvVCL5Utils, JvJCLUtils, JvAppStorage, JvTypes; @@ -519,6 +519,9 @@ DefaultMappingMethod: TMappingMethod = mmHistogram; {$ENDIF VCL} +function GetWorkareaRect(Monitor: TMonitor): TRect; +function FindMonitor(Handle: HMONITOR): TMonitor; + procedure TileImage(Canvas: TCanvas; Rect: TRect; Image: TGraphic); function ZoomImage(ImageW, ImageH, MaxW, MaxH: Integer; Stretch: Boolean): TPoint; @@ -797,7 +800,7 @@ {$IFDEF VisualCLX} QConsts, {$ENDIF VisualCLX} - Math, + Math, JclSysInfo, JvConsts, JvProgressUtils, JvResources; @@ -4913,6 +4916,28 @@ end; {$ENDIF VCL} +function GetWorkareaRect(Monitor: TMonitor): TRect; +var + MonInfo: TMonitorInfo; +begin + MonInfo.cbSize := SizeOf(MonInfo); + GetMonitorInfo(Monitor.Handle, @MonInfo); + Result := MonInfo.rcWork; +end; + +function FindMonitor(Handle: HMONITOR): TMonitor; +var + I: Integer; +begin + Result := nil; + for I := 0 to Screen.MonitorCount - 1 do + if Screen.Monitors[I].Handle = Handle then + begin + Result := Screen.Monitors[I]; + Break; + end; +end; + { Quantizing } { Quantizing procedures based on free C source code written by Joe C. Oliphant, CompuServe 71742, 1451, joe_oliphant att csufresno dott edu } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2007-11-19 19:21:06
|
Revision: 11580 http://jvcl.svn.sourceforge.net/jvcl/?rev=11580&view=rev Author: obones Date: 2007-11-19 11:21:04 -0800 (Mon, 19 Nov 2007) Log Message: ----------- StringOf does not seem to exist until VERY recently. Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2007-11-18 10:30:52 UTC (rev 11579) +++ trunk/jvcl/run/JvJVCLUtils.pas 2007-11-19 19:21:04 UTC (rev 11580) @@ -7804,10 +7804,20 @@ end; procedure RegisterGraphicSignature(const ASignature: array of Byte; AOffset: Integer; AGraphicClass: TGraphicClass); +{$IFDEF COMPILER11_UP} begin if Length(ASignature) > 0 then RegisterGraphicSignature(StringOf(ASignature), AOffset, AGraphicClass); end; +{$ELSE} +var + Signature: string; +begin + SetLength(Signature, Length(ASignature)); + Move(ASignature[Low(ASignature)], Signature[1], Length(ASignature)); + RegisterGraphicSignature(Signature, AOffset, AGraphicClass); +end; +{$ENDIF COMPILER11_UP} procedure UnregisterGraphicSignature(AGraphicClass: TGraphicClass); overload; var @@ -7831,9 +7841,19 @@ end; procedure UnregisterGraphicSignature(const ASignature: array of Byte; AOffset: Integer); +{$IFDEF COMPILER11_UP} begin UnregisterGraphicSignature(StringOf(ASignature), AOffset); end; +{$ELSE} +var + Signature: string; +begin + SetLength(Signature, Length(ASignature)); + Move(ASignature[Low(ASignature)], Signature[1], Length(ASignature)); + UnregisterGraphicSignature(Signature, AOffset); +end; +{$ENDIF COMPILER11_UP} function GetGraphicClass(AStream: TStream): TGraphicClass; var This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2007-11-20 18:23:18
|
Revision: 11583 http://jvcl.svn.sourceforge.net/jvcl/?rev=11583&view=rev Author: ahuser Date: 2007-11-20 10:23:16 -0800 (Tue, 20 Nov 2007) Log Message: ----------- Reverted StringOf IFDEFs Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2007-11-20 14:46:06 UTC (rev 11582) +++ trunk/jvcl/run/JvJVCLUtils.pas 2007-11-20 18:23:16 UTC (rev 11583) @@ -7804,20 +7804,10 @@ end; procedure RegisterGraphicSignature(const ASignature: array of Byte; AOffset: Integer; AGraphicClass: TGraphicClass); -{$IFDEF COMPILER11_UP} begin if Length(ASignature) > 0 then RegisterGraphicSignature(StringOf(ASignature), AOffset, AGraphicClass); end; -{$ELSE} -var - Signature: string; -begin - SetLength(Signature, Length(ASignature)); - Move(ASignature[Low(ASignature)], Signature[1], Length(ASignature)); - RegisterGraphicSignature(Signature, AOffset, AGraphicClass); -end; -{$ENDIF COMPILER11_UP} procedure UnregisterGraphicSignature(AGraphicClass: TGraphicClass); overload; var @@ -7841,19 +7831,9 @@ end; procedure UnregisterGraphicSignature(const ASignature: array of Byte; AOffset: Integer); -{$IFDEF COMPILER11_UP} begin UnregisterGraphicSignature(StringOf(ASignature), AOffset); end; -{$ELSE} -var - Signature: string; -begin - SetLength(Signature, Length(ASignature)); - Move(ASignature[Low(ASignature)], Signature[1], Length(ASignature)); - UnregisterGraphicSignature(Signature, AOffset); -end; -{$ENDIF COMPILER11_UP} function GetGraphicClass(AStream: TStream): TGraphicClass; var This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2007-12-21 12:22:24
|
Revision: 11635 http://jvcl.svn.sourceforge.net/jvcl/?rev=11635&view=rev Author: obones Date: 2007-12-21 04:22:21 -0800 (Fri, 21 Dec 2007) Log Message: ----------- AsSize and AsPoint do not need to be published, further, they MUST NOT be published as it breaks BCB compatibility. Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2007-12-20 20:14:51 UTC (rev 11634) +++ trunk/jvcl/run/JvJVCLUtils.pas 2007-12-21 12:22:21 UTC (rev 11635) @@ -549,10 +549,10 @@ {$ENDIF CLR} procedure CopyToPoint(var Point: TPoint); property OnChange: TNotifyEvent read FOnChange write FOnChange; + property AsPoint: TPoint read GetAsPoint write SetAsPoint; published property X: Longint read FX write SetX default 0; property Y: Longint read FY write SetY default 0; - property AsPoint: TPoint read GetAsPoint write SetAsPoint; end; // equivalent of TRect, but that can be a published property @@ -609,7 +609,7 @@ procedure SetWidth(Value: Longint); procedure SetHeight(Value: Longint); function GetSize: TSize; - procedure SetSizet(const Value: TSize); + procedure SetSize(const Value: TSize); protected procedure DoChange; public @@ -622,10 +622,10 @@ {$ENDIF CLR} procedure CopyToSize(var Size: TSize); property OnChange: TNotifyEvent read FOnChange write FOnChange; + property AsSize: TSize read GetSize write SetSize; published property Width: Longint read FWidth write SetWidth default 0; property Height: Longint read FHeight write SetHeight default 0; - property AsSize: TSize read GetSize write SetSizet; end; { begin JvCtrlUtils } @@ -7161,7 +7161,7 @@ Result.cy := FHeight; end; -procedure TJvSize.SetSizet(const Value: TSize); +procedure TJvSize.SetSize(const Value: TSize); begin if (Value.cx <> FWidth) or (Value.cy <> FHeight) then begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2007-12-21 16:00:34
|
Revision: 11636 http://jvcl.svn.sourceforge.net/jvcl/?rev=11636&view=rev Author: obones Date: 2007-12-21 08:00:32 -0800 (Fri, 21 Dec 2007) Log Message: ----------- No UTF-8 allowed Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2007-12-21 12:22:21 UTC (rev 11635) +++ trunk/jvcl/run/JvJVCLUtils.pas 2007-12-21 16:00:32 UTC (rev 11636) @@ -7225,13 +7225,13 @@ const Conversions: array [0..6] of THtmlCode = ( - (Html: '&'; Text: '&'), - (Html: '"'; Text: '"'), - (Html: '®'; Text: '\xAE'), - (Html: '©'; Text: '\xA9'), - (Html: '™'; Text: '\x99'), - (Html: '€'; Text: '\x80'), - (Html: ' '; Text: ' ') + (Html: '&'; Text: '&'), + (Html: '"'; Text: '"'), + (Html: '®'; Text: '\xAE'), + (Html: '©'; Text: '\xA9'), + (Html: '™'; Text: '\x99'), + (Html: '€'; Text: '\x80'), + (Html: ' '; Text: ' ') ); var I: Integer; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2008-03-18 01:16:28
|
Revision: 11769 http://jvcl.svn.sourceforge.net/jvcl/?rev=11769&view=rev Author: jfudickar Date: 2008-03-17 18:16:26 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Added function GenerateUniqueComponentName Modified Paths: -------------- trunk/jvcl/run/JvJVCLUtils.pas Modified: trunk/jvcl/run/JvJVCLUtils.pas =================================================================== --- trunk/jvcl/run/JvJVCLUtils.pas 2008-03-18 01:15:25 UTC (rev 11768) +++ trunk/jvcl/run/JvJVCLUtils.pas 2008-03-18 01:16:26 UTC (rev 11769) @@ -868,6 +868,16 @@ function GetTopForm(aCmp: TComponent): TCustomForm; function IsChildWindow(const AChild, AParent: THandle): Boolean; +// This function generates a unique name for a component inside the list of all +// owner components. +// The name is generated in the login <OwnerName>_<AComponentName><Nr> or +// <OwnerName>_<ACOmponent.ClassName><Nr> when the AComponentName parameter +// is not defined. The number will be increased until the name is unique. +function GenerateUniqueComponentName(AOwner, AComponent: TComponent; const + AComponentName: string = ''): string; + + + {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( @@ -7983,6 +7993,79 @@ end; end; +function GenerateUniqueComponentName(AOwner, AComponent: TComponent; const + AComponentName: string = ''): string; + +var + I: Integer; + + function ValidateName(const AName: String): String; + var + I: Integer; + Ignore : Boolean; + c : Char; + begin + Ignore := true; + Result := ''; + for i := 1 to Length(AName) do + begin + c:= AName[i]; + if c IN ['A'..'Z', 'a'..'z', '_', '0'..'9'] then + begin + ignore := False; + Result := Result+c; + end + else + begin + if not ignore then + Result := Result+'_'; + ignore := true; + end; + end; + end; + + function GenerateName(const AName: string; ANumber: Integer): string; + begin + Result := ValidateName (AName); + Result := AOwner.Name + '_' + Result; + if ANumber > 0 then + Result := Result + IntToStr(ANumber); + end; + + function IsUnique(const AName: string): Boolean; + var + I: Integer; + begin + Result := True; + for I := 0 to AOwner.ComponentCount - 1 do + if (AOwner.Components[I] <> AComponent) and + (CompareText(AOwner.Components[I].Name, AName) = 0) then + begin + Result := False; + Break; + end; + + end; + +begin + if not Assigned(AOwner) then + Result := '' + else + for I := 0 to MaxInt do + begin + if (AComponentName <> '') then + Result := GenerateName(AComponentName, I) + else + if Assigned(AComponent) then + Result := GenerateName(AComponent.ClassName, I) + else + Result := GenerateName('', I); + if IsUnique(Result) then + Break; + end; +end; + + initialization {$IFDEF UNITVERSIONING} RegisterUnitVersion(HInstance, UnitVersioning); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |