mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-22 03:19:35 +02:00
Tools/icons_to_html: reads image sizes from files (by Roland Hahn)
This commit is contained in:
parent
cb4b896c31
commit
1f76660947
@ -19,8 +19,8 @@
|
|||||||
<VersionInfo>
|
<VersionInfo>
|
||||||
<UseVersionInfo Value="True"/>
|
<UseVersionInfo Value="True"/>
|
||||||
<MajorVersionNr Value="1"/>
|
<MajorVersionNr Value="1"/>
|
||||||
<MinorVersionNr Value="2"/>
|
<MinorVersionNr Value="3"/>
|
||||||
<StringTable CompanyName="Lazarus and Free Pascal" InternalName="IconTable" LegalCopyright="Lazarus and Free Pascal - Roland Hahn" OriginalFilename="IconTable.exe" ProductName="IconTable" ProductVersion="1.2"/>
|
<StringTable CompanyName="Lazarus and Free Pascal" InternalName="IconTable" LegalCopyright="Lazarus and Free Pascal - Roland Hahn" OriginalFilename="IconTable.exe" ProductName="IconTable" ProductVersion="1.3"/>
|
||||||
</VersionInfo>
|
</VersionInfo>
|
||||||
<BuildModes Count="2" Active="Release">
|
<BuildModes Count="2" Active="Release">
|
||||||
<Item1 Name="Debug" Default="True"/>
|
<Item1 Name="Debug" Default="True"/>
|
||||||
@ -75,12 +75,13 @@
|
|||||||
<PackageName Value="LCL"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item3>
|
</Item3>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="3">
|
<Units Count="4">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="IconTable.lpr"/>
|
<Filename Value="IconTable.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<EditorIndex Value="-1"/>
|
<CursorPos X="72" Y="22"/>
|
||||||
<UsageCount Value="37"/>
|
<UsageCount Value="40"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
@ -89,8 +90,12 @@
|
|||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<IsVisibleTab Value="True"/>
|
<IsVisibleTab Value="True"/>
|
||||||
<CursorPos X="14" Y="12"/>
|
<EditorIndex Value="1"/>
|
||||||
<UsageCount Value="37"/>
|
<CursorPos X="25" Y="32"/>
|
||||||
|
<UsageCount Value="40"/>
|
||||||
|
<Bookmarks Count="1">
|
||||||
|
<Item0 X="16" Y="501" ID="1"/>
|
||||||
|
</Bookmarks>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
<LoadedDesigner Value="True"/>
|
<LoadedDesigner Value="True"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
@ -102,126 +107,135 @@
|
|||||||
<CursorPos X="50" Y="549"/>
|
<CursorPos X="50" Y="549"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="..\..\..\lazarus-3.0-fpc-3.2.2\fpc\3.2.2\source\packages\fcl-image\src\fpimage.pp"/>
|
||||||
|
<UnitName Value="FPImage"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
|
<TopLine Value="108"/>
|
||||||
|
<CursorPos X="3" Y="96"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit3>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="30" HistoryIndex="29">
|
<JumpHistory Count="30" HistoryIndex="29">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="284" TopLine="260"/>
|
<Caret Line="283" TopLine="268"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="317" TopLine="293"/>
|
<Caret Line="284" TopLine="268"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="284" TopLine="260"/>
|
<Caret Line="289" TopLine="268"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="232" TopLine="207"/>
|
<Caret Line="292" TopLine="268"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
<Position5>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="213" Column="10" TopLine="206"/>
|
<Caret Line="294" TopLine="268"/>
|
||||||
</Position5>
|
</Position5>
|
||||||
<Position6>
|
<Position6>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="182" TopLine="158"/>
|
<Caret Line="281" TopLine="268"/>
|
||||||
</Position6>
|
</Position6>
|
||||||
<Position7>
|
<Position7>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="491" Column="18" TopLine="467"/>
|
<Caret Line="283" TopLine="268"/>
|
||||||
</Position7>
|
</Position7>
|
||||||
<Position8>
|
<Position8>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="494" Column="43" TopLine="468"/>
|
<Caret Line="284" TopLine="268"/>
|
||||||
</Position8>
|
</Position8>
|
||||||
<Position9>
|
<Position9>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="492" Column="5" TopLine="476"/>
|
<Caret Line="289" TopLine="268"/>
|
||||||
</Position9>
|
</Position9>
|
||||||
<Position10>
|
<Position10>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="488" TopLine="476"/>
|
<Caret Line="292" TopLine="268"/>
|
||||||
</Position10>
|
</Position10>
|
||||||
<Position11>
|
<Position11>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="489" Column="14" TopLine="476"/>
|
<Caret Line="294" Column="10" TopLine="259"/>
|
||||||
</Position11>
|
</Position11>
|
||||||
<Position12>
|
<Position12>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="48" Column="12" TopLine="24"/>
|
|
||||||
</Position12>
|
</Position12>
|
||||||
<Position13>
|
<Position13>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="286" TopLine="262"/>
|
<Caret Line="23" Column="45"/>
|
||||||
</Position13>
|
</Position13>
|
||||||
<Position14>
|
<Position14>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="233" TopLine="209"/>
|
<Caret Line="47" Column="22" TopLine="18"/>
|
||||||
</Position14>
|
</Position14>
|
||||||
<Position15>
|
<Position15>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="214" TopLine="207"/>
|
<Caret Line="500" Column="54" TopLine="489"/>
|
||||||
</Position15>
|
</Position15>
|
||||||
<Position16>
|
<Position16>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="181" TopLine="158"/>
|
<Caret Line="504" Column="21" TopLine="489"/>
|
||||||
</Position16>
|
</Position16>
|
||||||
<Position17>
|
<Position17>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="48" Column="20" TopLine="30"/>
|
<Caret Line="498" TopLine="489"/>
|
||||||
</Position17>
|
</Position17>
|
||||||
<Position18>
|
<Position18>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="436" Column="34" TopLine="412"/>
|
<Caret Line="500" Column="31" TopLine="482"/>
|
||||||
</Position18>
|
</Position18>
|
||||||
<Position19>
|
<Position19>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="486" Column="31" TopLine="462"/>
|
<Caret Line="496" Column="36" TopLine="482"/>
|
||||||
</Position19>
|
</Position19>
|
||||||
<Position20>
|
<Position20>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="438" Column="26" TopLine="414"/>
|
<Caret Line="500" Column="51" TopLine="482"/>
|
||||||
</Position20>
|
</Position20>
|
||||||
<Position21>
|
<Position21>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="437" Column="31" TopLine="414"/>
|
<Caret Line="527" Column="2" TopLine="494"/>
|
||||||
</Position21>
|
</Position21>
|
||||||
<Position22>
|
<Position22>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="436" Column="28" TopLine="414"/>
|
<Caret Line="514" Column="8" TopLine="496"/>
|
||||||
</Position22>
|
</Position22>
|
||||||
<Position23>
|
<Position23>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="225" Column="14" TopLine="201"/>
|
<Caret Line="24" Column="24"/>
|
||||||
</Position23>
|
</Position23>
|
||||||
<Position24>
|
<Position24>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
|
<Caret Line="205" Column="18" TopLine="188"/>
|
||||||
</Position24>
|
</Position24>
|
||||||
<Position25>
|
<Position25>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="33" Column="23"/>
|
<Caret Line="47" Column="15" TopLine="13"/>
|
||||||
</Position25>
|
</Position25>
|
||||||
<Position26>
|
<Position26>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="419" TopLine="395"/>
|
<Caret Line="514" TopLine="497"/>
|
||||||
</Position26>
|
</Position26>
|
||||||
<Position27>
|
<Position27>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="232" TopLine="208"/>
|
<Caret Line="8" Column="29"/>
|
||||||
</Position27>
|
</Position27>
|
||||||
<Position28>
|
<Position28>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="225" Column="5" TopLine="208"/>
|
<Caret Line="197" Column="48" TopLine="168"/>
|
||||||
</Position28>
|
</Position28>
|
||||||
<Position29>
|
<Position29>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="196" TopLine="172"/>
|
<Caret Line="47" Column="15" TopLine="12"/>
|
||||||
</Position29>
|
</Position29>
|
||||||
<Position30>
|
<Position30>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="186" TopLine="172"/>
|
<Caret Line="507" Column="16" TopLine="491"/>
|
||||||
</Position30>
|
</Position30>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
|
@ -9,13 +9,13 @@ object MainForm: TMainForm
|
|||||||
ClientWidth = 700
|
ClientWidth = 700
|
||||||
Constraints.MinHeight = 515
|
Constraints.MinHeight = 515
|
||||||
Constraints.MinWidth = 700
|
Constraints.MinWidth = 700
|
||||||
|
Position = poScreenCenter
|
||||||
|
ShowHint = True
|
||||||
|
LCLVersion = '3.99.0.0'
|
||||||
OnClose = FormClose
|
OnClose = FormClose
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDropFiles = FormDropFiles
|
OnDropFiles = FormDropFiles
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
Position = poScreenCenter
|
|
||||||
ShowHint = True
|
|
||||||
LCLVersion = '3.2.0.0'
|
|
||||||
object DirectoryEdit: TDirectoryEdit
|
object DirectoryEdit: TDirectoryEdit
|
||||||
AnchorSideLeft.Control = Owner
|
AnchorSideLeft.Control = Owner
|
||||||
AnchorSideTop.Control = sbtnLastDirs
|
AnchorSideTop.Control = sbtnLastDirs
|
||||||
@ -516,6 +516,8 @@ object MainForm: TMainForm
|
|||||||
object SynGutterMarks1: TSynGutterMarks
|
object SynGutterMarks1: TSynGutterMarks
|
||||||
Width = 24
|
Width = 24
|
||||||
MouseActions = <>
|
MouseActions = <>
|
||||||
|
MaxExtraMarksColums = 0
|
||||||
|
Options = [sgmoDeDuplicateMarksOnOverflow]
|
||||||
end
|
end
|
||||||
object SynGutterLineNumber1: TSynGutterLineNumber
|
object SynGutterLineNumber1: TSynGutterLineNumber
|
||||||
Width = 15
|
Width = 15
|
||||||
@ -596,9 +598,9 @@ object MainForm: TMainForm
|
|||||||
Caption = 'Close'
|
Caption = 'Close'
|
||||||
Images = ImageList
|
Images = ImageList
|
||||||
ImageIndex = 6
|
ImageIndex = 6
|
||||||
OnClick = bbtnCloseClick
|
|
||||||
Spacing = 5
|
Spacing = 5
|
||||||
TabOrder = 6
|
TabOrder = 6
|
||||||
|
OnClick = bbtnCloseClick
|
||||||
end
|
end
|
||||||
object bbtnSave: TBitBtn
|
object bbtnSave: TBitBtn
|
||||||
AnchorSideTop.Control = bbtnClose
|
AnchorSideTop.Control = bbtnClose
|
||||||
@ -616,9 +618,9 @@ object MainForm: TMainForm
|
|||||||
Enabled = False
|
Enabled = False
|
||||||
Images = ImageList
|
Images = ImageList
|
||||||
ImageIndex = 5
|
ImageIndex = 5
|
||||||
OnClick = bbtnSaveClick
|
|
||||||
Spacing = 5
|
Spacing = 5
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
|
OnClick = bbtnSaveClick
|
||||||
end
|
end
|
||||||
object bbtnCreateHTML: TBitBtn
|
object bbtnCreateHTML: TBitBtn
|
||||||
AnchorSideTop.Control = bbtnPreview
|
AnchorSideTop.Control = bbtnPreview
|
||||||
@ -637,9 +639,9 @@ object MainForm: TMainForm
|
|||||||
Enabled = False
|
Enabled = False
|
||||||
Images = ImageList
|
Images = ImageList
|
||||||
ImageIndex = 3
|
ImageIndex = 3
|
||||||
OnClick = bbtnCreateHTMLClick
|
|
||||||
Spacing = 5
|
Spacing = 5
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
|
OnClick = bbtnCreateHTMLClick
|
||||||
end
|
end
|
||||||
object bbtnPreview: TBitBtn
|
object bbtnPreview: TBitBtn
|
||||||
AnchorSideTop.Control = bbtnSave
|
AnchorSideTop.Control = bbtnSave
|
||||||
@ -655,12 +657,13 @@ object MainForm: TMainForm
|
|||||||
Enabled = False
|
Enabled = False
|
||||||
Images = ImageList
|
Images = ImageList
|
||||||
ImageIndex = 4
|
ImageIndex = 4
|
||||||
OnClick = bbtnPreviewClick
|
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
|
OnClick = bbtnPreviewClick
|
||||||
end
|
end
|
||||||
object TaskDialog: TTaskDialog
|
object TaskDialog: TTaskDialog
|
||||||
Buttons = <>
|
Buttons = <>
|
||||||
RadioButtons = <>
|
RadioButtons = <>
|
||||||
|
QueryItemIndex = 0
|
||||||
Left = 96
|
Left = 96
|
||||||
Top = 64
|
Top = 64
|
||||||
end
|
end
|
||||||
|
@ -5,7 +5,7 @@ unit main;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, EditBtn, FileUtil,
|
Classes, SysUtils, Forms, FPImage, Controls, Dialogs, StdCtrls, EditBtn, FileUtil,
|
||||||
LazUTF8, LazFileUtils, LCLIntf, LCLType, Buttons, Menus, IniFiles,
|
LazUTF8, LazFileUtils, LCLIntf, LCLType, Buttons, Menus, IniFiles,
|
||||||
SynEdit, SynHighlighterHTML;
|
SynEdit, SynHighlighterHTML;
|
||||||
|
|
||||||
@ -44,6 +44,7 @@ type
|
|||||||
procedure CreateHTML(HTMLLines: TStrings; Preview: Boolean);
|
procedure CreateHTML(HTMLLines: TStrings; Preview: Boolean);
|
||||||
procedure ShowMsg(const AMsgCaption: String; const AMsg: String);
|
procedure ShowMsg(const AMsgCaption: String; const AMsg: String);
|
||||||
procedure UpdateLastDirs(ImgDir: String; Delete: Boolean);
|
procedure UpdateLastDirs(ImgDir: String; Delete: Boolean);
|
||||||
|
procedure GetPixSize(FileName: String; var PixWidth: Integer; var PixHeight: Integer);
|
||||||
public
|
public
|
||||||
|
|
||||||
end;
|
end;
|
||||||
@ -241,6 +242,8 @@ var
|
|||||||
IcoFile: String;
|
IcoFile: String;
|
||||||
IcoSize: String;
|
IcoSize: String;
|
||||||
IcoName: String;
|
IcoName: String;
|
||||||
|
IcoWidth: Integer = 0;
|
||||||
|
IcoHeight: Integer = 0;
|
||||||
DPos: Integer;
|
DPos: Integer;
|
||||||
IntDummy: Integer;
|
IntDummy: Integer;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -273,16 +276,14 @@ begin
|
|||||||
for i := 0 to AllFileList.Count - 1 do
|
for i := 0 to AllFileList.Count - 1 do
|
||||||
begin
|
begin
|
||||||
IcoFile := ChangeFileExt(ExtractFileName(AllFileList.Strings[i]), '');
|
IcoFile := ChangeFileExt(ExtractFileName(AllFileList.Strings[i]), '');
|
||||||
|
GetPixSize(AllFileList.Strings[i], IcoWidth, IcoHeight);
|
||||||
|
IcoSize := IntToStr(IcoWidth);
|
||||||
|
|
||||||
DPos := LastDelimiter('_', IcoFile);
|
DPos := LastDelimiter('_', IcoFile);
|
||||||
IcoSize := RightStr(IcoFile, Utf8Length(IcoFile) - DPos);
|
if TryStrToInt(RightStr(IcoFile, Utf8Length(IcoFile) - DPos), IntDummy) then
|
||||||
|
IcoName := Utf8Copy(IcoFile, 1, DPos - 1)
|
||||||
if not TryStrToInt(IcoSize, IntDummy) then
|
|
||||||
IcoSize := '';
|
|
||||||
|
|
||||||
if IcoSize = '' then
|
|
||||||
IcoName := IcoFile
|
|
||||||
else
|
else
|
||||||
IcoName := Utf8Copy(IcoFile, 1, DPos - 1);
|
IcoName := IcoFile;
|
||||||
|
|
||||||
if Preview then
|
if Preview then
|
||||||
IcoFileList.Add('file:///' + ImgDirectory + IcoFile)
|
IcoFileList.Add('file:///' + ImgDirectory + IcoFile)
|
||||||
@ -334,7 +335,7 @@ begin
|
|||||||
HTMLLines.Add('<table>');
|
HTMLLines.Add('<table>');
|
||||||
HTMLLines.Add(' <tr class="no_border">');
|
HTMLLines.Add(' <tr class="no_border">');
|
||||||
HTMLLines.Add(' <td class="colorset1 right_border"></td>');
|
HTMLLines.Add(' <td class="colorset1 right_border"></td>');
|
||||||
HTMLLines.Add(' <td class="colorset2 text_center" colspan="' + PixSizeList.Count.ToString + '">Appendix</td>');
|
HTMLLines.Add(' <td class="colorset2 text_center" colspan="' + PixSizeList.Count.ToString + '">Size</td>');
|
||||||
HTMLLines.Add(' </tr>');
|
HTMLLines.Add(' </tr>');
|
||||||
HTMLLines.Add(' <tr>');
|
HTMLLines.Add(' <tr>');
|
||||||
HTMLLines.Add(' <td class="colorset1 right_border">Name</td>');
|
HTMLLines.Add(' <td class="colorset1 right_border">Name</td>');
|
||||||
@ -489,6 +490,24 @@ begin
|
|||||||
Result := '';
|
Result := '';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.GetPixSize(FileName: String; var PixWidth: Integer; var PixHeight: Integer);
|
||||||
|
var
|
||||||
|
stream: TStream;
|
||||||
|
reader: TFPCustomImageReaderClass;
|
||||||
|
begin
|
||||||
|
stream := TFileStream.Create(FileName, fmOpenRead + fmShareDenyWrite);
|
||||||
|
try
|
||||||
|
reader := TFPCustomImage.FindReaderFromStream(stream);
|
||||||
|
with reader.ImageSize(stream) do
|
||||||
|
begin
|
||||||
|
PixWidth := X;
|
||||||
|
PixHeight := Y;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
stream.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function CustomSortProc(List: TStringList; X1, X2: Integer): Integer;
|
function CustomSortProc(List: TStringList; X1, X2: Integer): Integer;
|
||||||
var
|
var
|
||||||
P1, P2: Integer;
|
P1, P2: Integer;
|
||||||
|
Loading…
Reference in New Issue
Block a user