Componentes.Terceros.jvcl/official/3.39/run/JvLinkLabelTools.pas
2010-01-18 16:55:50 +00:00

247 lines
6.5 KiB
ObjectPascal

{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: LinkTools.pas, released 2002-01-06.
The Initial Developer of the Original Code is David Polberger <dpol att swipnet dott se>
Portions created by David Polberger are Copyright (C) 2002 David Polberger.
All Rights Reserved.
Contributor(s): ______________________________________.
Current Version: 2.00
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.delphi-jedi.org
Description:
Various common utility routines grouped together in groups, represented by
non-instantiable classes containing class methods. The design of these classes
has been influenced by Java's class library.
Known Issues:
Please see the accompanying documentation.
-----------------------------------------------------------------------------}
// $Id: JvLinkLabelTools.pas 12461 2009-08-14 17:21:33Z obones $
unit JvLinkLabelTools;
{$I jvcl.inc}
interface
uses
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
SysUtils, Classes, Windows,
ShellAPI,
JvTypes;
type
EGenericToolsError = class(EJVCLException);
TStaticObject = class(TObject)
public
constructor Create; virtual;
end;
TStringTools = class(TStaticObject)
private
class function RemoveChars(const S: string; const Chars: array of Char): string;
public
class function RemoveCRLF(const S: string): string;
class function EndsWith(const S: string; const SubS: string = ' '): Boolean;
class function BeginsWith(const S: string; const SubS: string = ' '): Boolean;
class function EscapeBackslashes(const S: string): string;
class function Replace(OldSubstr, NewSubstr: string; var S: string): Boolean;
end;
TGraphicTools = class(TStaticObject)
public
class function IsPointInRect(const Rect: TRect; const Point: TPoint): Boolean;
end;
TConversionTools = class(TStaticObject)
public
class function BoolToYesNo(const B: Boolean): string;
class function BoolToStr(const B: Boolean): string;
end;
TWebTools = class(TStaticObject)
public
class function OpenWebPage(const URI: string): Boolean;
end;
TOwnerPointerList = class(TObject)
private
function GetCount: Integer;
protected
FList: TList;
public
constructor Create;
destructor Destroy; override;
procedure Clear; virtual;
property Count: Integer read GetCount;
end;
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
RCSfile: '$URL: https://jvcl.svn.sourceforge.net/svnroot/jvcl/tags/JVCL3_39/run/JvLinkLabelTools.pas $';
Revision: '$Revision: 12461 $';
Date: '$Date: 2009-08-14 19:21:33 +0200 (ven., 14 août 2009) $';
LogPath: 'JVCL\run'
);
{$ENDIF UNITVERSIONING}
implementation
uses
{$IFDEF MSWINDOWS}
// ShellAPI,
{$ENDIF MSWINDOWS}
{$IFDEF HAS_UNIT_LIBC}
// Libc,
{$ENDIF HAS_UNIT_LIBC}
JvConsts, JvResources;
//=== { TStaticObject } ======================================================
constructor TStaticObject.Create;
begin
raise EGenericToolsError.CreateRes(@RsECannotBeInstantiated);
end;
//=== { TStringTools } =======================================================
class function TStringTools.BeginsWith(const S, SubS: string): Boolean;
begin
Result := Copy(S, 1, Length(SubS)) = SubS;
end;
class function TStringTools.EndsWith(const S, SubS: string): Boolean;
begin
Result := Copy(S, Length(S) - Length(SubS) + 1, Length(SubS)) = SubS;
end;
class function TStringTools.RemoveChars(const S: string;
const Chars: array of Char): string;
begin
Result := StringReplace(S, Chars, '', [rfReplaceAll, rfIgnoreCase]);
end;
class function TStringTools.RemoveCRLF(const S: string): string;
begin
Result := RemoveChars(S, [Cr, Lf]);
end;
class function TStringTools.EscapeBackslashes(const S: string): string;
var
I: Integer;
begin
Result := S;
for I := Length(Result) downto 1 do
if Result[I] = '\' then
Insert('\', Result, I);
end;
class function TStringTools.Replace(OldSubstr, NewSubstr: string;
var S: string): Boolean;
var
Pos: Integer;
begin
Result := False;
while AnsiPos(OldSubstr, S) <> 0 do
begin
Pos := AnsiPos(OldSubstr, S);
Result := Pos <> 0;
if Result then
begin
Delete(S, Pos, Length(OldSubstr));
Insert(NewSubstr, S, Pos);
end;
end;
end;
//=== { TGraphicTools } ======================================================
class function TGraphicTools.IsPointInRect(const Rect: TRect;
const Point: TPoint): Boolean;
begin
Result :=
(Point.X >= Rect.Left) and (Point.X <= Rect.Right) and
(Point.Y >= Rect.Top) and (Point.Y <= Rect.Bottom);
end;
//=== { TConversionTools } ===================================================
class function TConversionTools.BoolToStr(const B: Boolean): string;
begin
if B then
Result := 'True'
else
Result := 'False';
end;
class function TConversionTools.BoolToYesNo(const B: Boolean): string;
begin
if B then
Result := 'Yes'
else
Result := 'No';
end;
//=== { TWebTools } ==========================================================
class function TWebTools.OpenWebPage(const URI: string): Boolean;
begin
Result := ShellExecute(0, 'open', PChar(URI), nil, nil, SW_SHOWNORMAL) > 32;
end;
//=== { TOwnerPointerList } ==================================================
constructor TOwnerPointerList.Create;
begin
inherited Create;
FList := TList.Create;
end;
destructor TOwnerPointerList.Destroy;
begin
Clear;
FList.Free;
inherited Destroy;
end;
procedure TOwnerPointerList.Clear;
var
I: Integer;
begin
for I := 0 to FList.Count - 1 do
Dispose(FList[I]);
FList.Clear;
end;
function TOwnerPointerList.GetCount: Integer;
begin
Result := FList.Count;
end;
{$IFDEF UNITVERSIONING}
initialization
RegisterUnitVersion(HInstance, UnitVersioning);
finalization
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
end.