Skip to content

Commit ce035c9

Browse files
committed
Code Central Commit
Some free Delphi components from Embarcadero Code Central have been added
1 parent 5aced77 commit ce035c9

File tree

181 files changed

+134781
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

181 files changed

+134781
-0
lines changed
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Embarcadero Code Central/Custom Containers Pack/CCPack5.rtf

Lines changed: 7614 additions & 0 deletions
Large diffs are not rendered by default.

Embarcadero Code Central/Custom Containers Pack/Source/Boxes.pas

Lines changed: 492 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package ccpack50;
2+
3+
{$R *.RES}
4+
{$ALIGN ON}
5+
{$ASSERTIONS ON}
6+
{$BOOLEVAL OFF}
7+
{$DEBUGINFO ON}
8+
{$EXTENDEDSYNTAX ON}
9+
{$IMPORTEDDATA ON}
10+
{$IOCHECKS ON}
11+
{$LOCALSYMBOLS ON}
12+
{$LONGSTRINGS ON}
13+
{$OPENSTRINGS ON}
14+
{$OPTIMIZATION ON}
15+
{$OVERFLOWCHECKS OFF}
16+
{$RANGECHECKS OFF}
17+
{$REFERENCEINFO ON}
18+
{$SAFEDIVIDE OFF}
19+
{$STACKFRAMES OFF}
20+
{$TYPEDADDRESS OFF}
21+
{$VARSTRINGCHECKS ON}
22+
{$WRITEABLECONST ON}
23+
{$MINENUMSIZE 1}
24+
{$IMAGEBASE $400000}
25+
{$DESCRIPTION 'Custom Containers Pack'}
26+
{$DESIGNONLY}
27+
{$IMPLICITBUILD OFF}
28+
29+
requires
30+
vcl50,
31+
dsnide50;
32+
33+
contains
34+
ccwdlg in 'ccwdlg.pas' {CCWDialog},
35+
ccreg in 'ccreg.pas',
36+
ccwiz in 'ccwiz.pas',
37+
Boxes in 'Boxes.pas',
38+
ccregprc in 'ccregprc.pas',
39+
ccwizres in 'ccwizres.pas';
40+
41+
end.
Binary file not shown.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{*******************************************************}
2+
{ }
3+
{ Delphi Visual Component Library }
4+
{ Custom Containers Pack (CCPack) }
5+
{ }
6+
{ Copyright (c) 1997-99, Sergey Orlik }
7+
{ }
8+
{ Written by: }
9+
{ Sergey Orlik }
10+
{ product manager }
11+
{ Russia, C.I.S. and Baltic States (former USSR) }
12+
{ Inprise Moscow office }
13+
{ e-mail: sorlik@inprise.ru }
14+
{ WWW: http://www.inprise.ru }
15+
{ }
16+
{ Personal Home Page: }
17+
{ www.geocities.com/SiliconValley/Way/9006/ }
18+
{ }
19+
{*******************************************************}
20+
21+
//======================================
22+
// VCL Version Define
23+
24+
{$IFDEF VER130} // Delphi 5
25+
{$DEFINE VER_VCL5}
26+
{$ENDIF}
27+
28+
{$IFDEF VER125} // CBuilder 4
29+
{$DEFINE VER_VCL4}
30+
{$ENDIF}
31+
32+
{$IFDEF VER120} // Delphi 4
33+
{$DEFINE VER_VCL4}
34+
{$ENDIF}
35+
36+
37+
//======================================
38+
// Language&IDE Define
39+
40+
{$IFDEF VER130} // Delphi 5
41+
{$DEFINE VER_D}
42+
{$ENDIF}
43+
44+
{$IFDEF VER125} // CBuilder 4
45+
{$DEFINE VER_CB}
46+
{$ENDIF}
47+
48+
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
{*******************************************************}
2+
{ }
3+
{ Delphi Visual Component Library }
4+
{ Custom Containers Pack (CCPack) }
5+
{ }
6+
{ Copyright (c) 1997-99, Sergey Orlik }
7+
{ }
8+
{ Written by: }
9+
{ Sergey Orlik }
10+
{ product manager }
11+
{ Russia, C.I.S. and Baltic States (former USSR) }
12+
{ Inprise Moscow office }
13+
{ e-mail: sorlik@inprise.ru }
14+
{ WWW: http://www.inprise.ru }
15+
{ }
16+
{ Personal Home Page: }
17+
{ www.geocities.com/SiliconValley/Way/9006/ }
18+
{ }
19+
{*******************************************************}
20+
{$I CCPDEF.INC}
21+
22+
{$IFDEF VER_CB}
23+
{$ObjExportAll On}
24+
{$ENDIF}
25+
26+
unit ccreg;
27+
28+
interface
29+
uses
30+
Windows, SysUtils, Classes, Graphics,
31+
Controls, Forms, Boxes;
32+
33+
type
34+
TRegisterCustomContainerProc = procedure (AClass: TComponentClass);
35+
36+
procedure RegisterCustomContainer(AClass: TComponentClass);
37+
procedure UnRegisterCustomContainer(AClass: TComponentClass);
38+
39+
function GetCustomContainerClass(const AClassName: string): TComponentClass; overload;
40+
function FindCustomContainerClass(const AClassName: string): TComponentClass;
41+
function GetCustomContainerUnit(const AClassName: string): string;
42+
43+
function GetCustomContainerClass(const Index: integer): TComponentClass; overload;
44+
function GetCustomContainerClassListCount: integer;
45+
46+
var
47+
RegisterCustomContainerProc: TRegisterCustomContainerProc = nil;
48+
49+
const
50+
BaseContainerClassArray : array [0..5] of TComponentClass
51+
= (TForm, TDataModule, TFrame, TBox, TControlGroupBox, TControlScrollBox);
52+
53+
function IsBaseContainer(AClass: TComponentClass): integer;
54+
function GetBaseContainer(AClass: TComponentClass): integer;
55+
56+
implementation
57+
58+
uses
59+
Consts, TypInfo;
60+
61+
var
62+
CustomContainerClassList: TThreadList = nil;
63+
64+
function IsBaseContainer(AClass: TComponentClass): integer;
65+
var
66+
i :integer;
67+
begin
68+
Result:=-1;
69+
for i:=0 to High(BaseContainerClassArray) do
70+
if AClass=BaseContainerClassArray[i] then
71+
begin
72+
Result:=i;
73+
Break;
74+
end;
75+
end;
76+
77+
function GetBaseContainer(AClass: TComponentClass): integer;
78+
var
79+
i :integer;
80+
begin
81+
Result:=-1;
82+
for i:=0 to High(BaseContainerClassArray) do
83+
if AClass.InheritsFrom(BaseContainerClassArray[i]) then
84+
begin
85+
Result:=i;
86+
Break;
87+
end;
88+
end;
89+
90+
procedure ClassNotFound(const ClassName: string);
91+
begin
92+
raise EClassNotFound.CreateFmt(SClassNotFound, [ClassName]);
93+
end;
94+
95+
function GetCustomContainerClass(const AClassName: string): TComponentClass;
96+
var
97+
I: Integer;
98+
begin
99+
with CustomContainerClassList.LockList do
100+
try
101+
for I := 0 to Count - 1 do
102+
begin
103+
Result:=Items[I];
104+
if Result.ClassNameIs(AClassName) then Exit;
105+
end;
106+
Result := nil;
107+
finally
108+
CustomContainerClassList.UnLockList;
109+
end;
110+
end;
111+
112+
function FindCustomContainerClass(const AClassName: string): TComponentClass;
113+
begin
114+
Result := GetCustomContainerClass(AClassName);
115+
if Result = nil then ClassNotFound(AClassName);
116+
end;
117+
118+
function GetCustomContainerUnit(const AClassName: string): string;
119+
begin
120+
Result:=GetTypeData(PTypeInfo(GetCustomContainerClass(AClassName).ClassInfo))^.UnitName;
121+
end;
122+
123+
function GetCustomContainerClass(const Index: integer): TComponentClass;
124+
begin
125+
with CustomContainerClassList.LockList do
126+
try
127+
Result:=Items[Index];
128+
finally
129+
CustomContainerClassList.UnlockList;
130+
end;
131+
end;
132+
133+
function GetCustomContainerClassListCount: integer;
134+
begin
135+
with CustomContainerClassList.LockList do
136+
try
137+
Result:=Count;
138+
finally
139+
CustomContainerClassList.UnlockList;
140+
end;
141+
end;
142+
143+
{procedure RegisterCustomContainer(AClass: TComponentClass);
144+
var
145+
AClassName: string;
146+
begin
147+
with CustomContainerClassList.LockList do
148+
try
149+
while IndexOf(AClass) = -1 do
150+
begin
151+
AClassName := AClass.ClassName;
152+
if GetCustomContainerClass(AClassName) <> nil then
153+
raise EFilerError.CreateResFmt(@SDuplicateClass, [AClassName]);
154+
Add(AClass);
155+
if AClass = TPersistent then Break;
156+
AClass := TComponentClass(AClass.ClassParent);
157+
end;
158+
finally
159+
ClassList.UnlockList;
160+
end;
161+
end;
162+
}
163+
164+
procedure RegisterCustomContainer(AClass: TComponentClass);
165+
begin
166+
if Assigned(RegisterCustomContainerProc) then
167+
RegisterCustomContainerProc(AClass)
168+
else
169+
raise EComponentError.Create('Cannot register '+AClass.ClassName+' class.');
170+
with CustomContainerClassList.LockList do
171+
try
172+
Add(AClass);
173+
finally
174+
CustomContainerClassList.UnlockList;
175+
end;
176+
end;
177+
178+
procedure UnRegisterCustomContainer(AClass: TComponentClass);
179+
begin
180+
CustomContainerClassList.Remove(AClass);
181+
end;
182+
183+
procedure UnRegisterCustomContainerClasses(Module: HMODULE);
184+
var
185+
I: Integer;
186+
M: TMemoryBasicInformation;
187+
begin
188+
with CustomContainerClassList.LockList do
189+
try
190+
for I := Count - 1 downto 0 do
191+
begin
192+
VirtualQuery(Items[I], M, SizeOf(M));
193+
if (Module = 0) or (HMODULE(M.AllocationBase) = Module) then
194+
Delete(I);
195+
end;
196+
finally
197+
CustomContainerClassList.UnlockList;
198+
end;
199+
end;
200+
201+
procedure ModuleUnload(Instance: Longint);
202+
begin
203+
UnRegisterCustomContainerClasses(HMODULE(Instance));
204+
end;
205+
206+
initialization
207+
AddModuleUnloadProc(ModuleUnload);
208+
CustomContainerClassList:=TThreadList.Create;
209+
finalization
210+
UnRegisterCustomContainerClasses(HInstance);
211+
CustomContainerClassList.Free;
212+
RemoveModuleUnloadProc(ModuleUnload);
213+
end.
214+
215+

0 commit comments

Comments
 (0)