From d808eb5bc29a41a7edd821681da76073c4bbb900 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Sat, 12 Jan 2013 13:39:26 +0000 Subject: - iceit icon patcher sources added git-svn-id: http://svn.miranda-ng.org/main/trunk@3069 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- tools/iceit/utils.pas | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tools/iceit/utils.pas (limited to 'tools/iceit/utils.pas') diff --git a/tools/iceit/utils.pas b/tools/iceit/utils.pas new file mode 100644 index 0000000000..7d1cceeab8 --- /dev/null +++ b/tools/iceit/utils.pas @@ -0,0 +1,66 @@ +unit utils; + +interface + +uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms; + + function GetValue(S: String; H: Integer): String; + function SetValue(S: String; H: Integer; Value: String): String; + function SetWidth(Canvas: TCanvas; S: String; n: Integer): String; + +implementation + +//-------------------------------------------------------------------------------------- +// Функция возвращает текст из строки S содержащийся между символами '|' на позиции H +//-------------------------------------------------------------------------------------- +function GetValue(S: String; H: Integer): String; +var F, n: Integer; +begin + F := 0; + Result := ''; + for n := 1 to Length(S) do + begin + if S[n] = '|' then inc(F); + if (S[n] <> '|') and (F = H) then Result := Result + S[n] + end; +end; + +//-------------------------------------------------------------------------------------- +// Функция возвращает строку аналогичную S, но с замененным между +// символами '|' на позиции H текстом на значение Value +//-------------------------------------------------------------------------------------- +function SetValue(S: String; H: Integer; Value: String): String; +var F, n: Integer; +begin + n := 1; + F := 0; + Result := ''; + while (n < Length(S)) and (F < H) do + begin + if S[n] = '|' then inc(F); + Result := Result + S[n]; + inc(n); + end; + Result := Result + Value; + while S[n] <> '|' do inc(n); + while (n <= Length(S)) do + begin + Result := Result + S[n]; + inc(n); + end; +end; + +//-------------------------------------------------------------------------------------- +// Функция возвращает S если ширина строки < n, +// или S с многоточием '...' урезанную до ширины n +//-------------------------------------------------------------------------------------- +function SetWidth(Canvas: TCanvas; S: String; n: Integer): String; +begin + if Canvas.TextWidth(S) > n then + begin + while Canvas.TextWidth(S + '...') > n do SetLength(S, Length(S)-1); + Result := S + '...'; + end else Result := S; +end; + +end. -- cgit v1.2.3