Componentes.Terceros.CCPack/internal/5/Sources/ccwdlg.pas
2007-09-09 18:20:50 +00:00

127 lines
3.4 KiB
ObjectPascal

{*******************************************************}
{ }
{ Delphi Visual Component Library }
{ Custom Containers Pack (CCPack) }
{ }
{ Copyright (c) 1997-99, Sergey Orlik }
{ }
{ Written by: }
{ Sergey Orlik }
{ product manager }
{ Russia, C.I.S. and Baltic States (former USSR) }
{ Inprise Moscow office }
{ e-mail: sorlik@inprise.ru }
{ WWW: http://www.inprise.ru }
{ }
{ Personal Home Page: }
{ www.geocities.com/SiliconValley/Way/9006/ }
{ }
{*******************************************************}
unit ccwdlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ComCtrls, StdCtrls, Buttons, ImgList;
type
TCCWDialog = class(TForm)
CCtree: TTreeView;
CCtext: TStaticText;
CCimage: TImage;
CCimagelist: TImageList;
Bevel1: TBevel;
CCradio: TRadioGroup;
CClabel: TLabel;
CCfinish: TBitBtn;
CCcancel: TBitBtn;
CCstatus: TStatusBar;
CCeditClassName: TEdit;
CClabel2: TLabel;
procedure CCtreeChange(Sender: TObject; Node: TTreeNode);
procedure CCradioClick(Sender: TObject);
private
function GetContainerNode(AClassName:string):TTreeNode;
procedure SelectImage;
procedure LoadNodes;
protected
procedure Loaded; override;
public
{ Public declarations }
end;
var
CCWDialog: TCCWDialog;
implementation
uses
ccreg;
{$R *.DFM}
function TCCWDialog.GetContainerNode(AClassName:string):TTreeNode;
begin
Result := CCtree.Items.GetFirstNode;
while (Result <> nil) do
begin
if AnsiCompareText(Result.Text,AClassName)=0 then Break;
Result:=Result.GetNext;
end;
end;
procedure TCCWDialog.SelectImage;
var
BMP: TBitmap;
Index: integer;
begin
Index:=GetBaseContainer(TComponentClass(CCtree.Selected.Data));
if Index=-1 then
Exit;
BMP:=TBitmap.Create;
CCtext.Caption:=CCtree.Selected.Text;
CCimagelist.GetBitmap(Index+6*CCradio.ItemIndex,BMP);
CCimage.Picture.Bitmap.Assign(BMP);
BMP.Free;
end;
procedure TCCWDialog.CCtreeChange(Sender: TObject; Node: TTreeNode);
begin
SelectImage;
end;
procedure TCCWDialog.CCradioClick(Sender: TObject);
begin
SelectImage;
end;
procedure TCCWDialog.LoadNodes;
var
I: integer;
AClass : TComponentClass;
begin
with CCTree.Items do
for I:=0 to GetCustomContainerClassListCount-1 do
begin
AClass:=GetCustomContainerClass(I);
if IsBaseContainer(AClass)<>-1 then
AddObject(nil,AClass.ClassName,AClass)
else
AddChildObject(GetContainerNode(AClass.ClassParent.ClassName),AClass.ClassName,AClass);
end;
end;
procedure TCCWDialog.Loaded;
begin
inherited;
with CCtree.Items do
begin
LoadNodes;
GetFirstNode.Selected:=True;
end;
end;
end.