Componentes.Terceros.DevExp.../official/x.26/ExpressNavBar/Demos/Delphi/AlphaBlendingDemo/AlphaBlendingMain.pas
2007-09-09 11:27:27 +00:00

268 lines
8.6 KiB
ObjectPascal

unit AlphaBlendingMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, ImgList, ExtDlgs,
dxNavBarStyles, dxNavBarCollns, dxNavBarBase, dxNavBar;
type
TfmAlphaBlendingMain = class(TForm)
nbMain: TdxNavBar;
Label9: TLabel;
gbDocs: TdxNavBarGroup;
bgPlaces: TdxNavBarGroup;
bgDetails: TdxNavBarGroup;
biMyMusic: TdxNavBarItem;
biMyPictures: TdxNavBarItem;
biReceivedFiles: TdxNavBarItem;
biDesktop: TdxNavBarItem;
biMyComputer: TdxNavBarItem;
biNetwork: TdxNavBarItem;
ilSmall: TImageList;
ilLarge: TImageList;
stBackground: TdxNavBarStyleItem;
stGroup1Background: TdxNavBarStyleItem;
stGroup2Background: TdxNavBarStyleItem;
stGroup3Background: TdxNavBarStyleItem;
OpenPictureDialog1: TOpenPictureDialog;
Panel5: TPanel;
GroupBox4: TGroupBox;
Label7: TLabel;
lbBgGroup3: TLabel;
tbBgGroup3: TTrackBar;
Panel4: TPanel;
iBgGroup3: TImage;
GroupBox3: TGroupBox;
Label5: TLabel;
lbBgGroup2: TLabel;
tbBgGroup2: TTrackBar;
Panel3: TPanel;
iBgGroup2: TImage;
GroupBox2: TGroupBox;
Label3: TLabel;
lbBgGroup1: TLabel;
tbBgGroup1: TTrackBar;
Panel2: TPanel;
iBgGroup1: TImage;
GroupBox1: TGroupBox;
Label1: TLabel;
lbBg: TLabel;
Panel1: TPanel;
iBg: TImage;
tbBg: TTrackBar;
procedure lbBgDblClick(Sender: TObject);
procedure lbBgGroup1DblClick(Sender: TObject);
procedure lbBgGroup2DblClick(Sender: TObject);
procedure lbBgGroup3DblClick(Sender: TObject);
procedure iBgClick(Sender: TObject);
procedure iBgGroup1Click(Sender: TObject);
procedure iBgGroup2Click(Sender: TObject);
procedure iBgGroup3Click(Sender: TObject);
procedure tbBgChange(Sender: TObject);
procedure tbBgGroup1Change(Sender: TObject);
procedure tbBgGroup2Change(Sender: TObject);
procedure tbBgGroup3Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure nbMainGroupHotTrack(Sender: TObject;
Group: TdxNavBarGroup);
procedure nbMainCalcGroupClientHeight(Sender: TObject;
ViewInfo: TdxNavBarGroupViewInfo; var Height: Integer);
procedure nbMainCustomDrawGroupClientForeground(Sender: TObject;
Canvas: TCanvas; ViewInfo: TdxNavBarGroupViewInfo;
var Handled: Boolean);
procedure nbMainGetGroupHint(Sender: TObject; Group: TdxNavBarGroup;
var Hint: String);
procedure nbMainCalcGroupHintRect(Sender: TObject;
Group: TdxNavBarGroup; ViewInfo: TdxNavBarViewInfo; var R: TRect);
procedure nbMainCustomDrawGroupHint(Sender: TObject;
ACanvas: TCanvas; AGroup: TdxNavBarGroup; AHint: String; R: TRect;
var AHandled: Boolean);
private
procedure ClearBgImage(AStyleItem: TdxNavBarStyleItem);
procedure SetBgImage(AStyleItem: TdxNavBarStyleItem);
procedure SetBgAlphaBlending(AStyleItem: TdxNavBarStyleItem; AValue: Byte);
public
{ Public declarations }
end;
var
fmAlphaBlendingMain: TfmAlphaBlendingMain;
implementation
{$R *.dfm}
{ TForm1 }
procedure TfmAlphaBlendingMain.ClearBgImage(AStyleItem: TdxNavBarStyleItem);
begin
AStyleItem.Style.Image.Graphic := nil;
end;
procedure TfmAlphaBlendingMain.SetBgAlphaBlending(AStyleItem: TdxNavBarStyleItem; AValue: Byte);
begin
AStyleItem.Style.AlphaBlending := AValue;
AStyleItem.Style.AlphaBlending2 := AValue;
end;
procedure TfmAlphaBlendingMain.SetBgImage(AStyleItem: TdxNavBarStyleItem);
begin
if OpenPictureDialog1.Execute then
AStyleItem.Style.Image.LoadFromFile(OpenPictureDialog1.FileName);
end;
procedure TfmAlphaBlendingMain.lbBgDblClick(Sender: TObject);
begin
ClearBgImage(nbMain.StyleBackground);
iBg.Picture.Graphic := nil;
end;
procedure TfmAlphaBlendingMain.lbBgGroup1DblClick(Sender: TObject);
begin
ClearBgImage(nbMain.Groups[0].StyleBackground);
iBgGroup1.Picture.Graphic := nil;
end;
procedure TfmAlphaBlendingMain.lbBgGroup2DblClick(Sender: TObject);
begin
ClearBgImage(nbMain.Groups[1].StyleBackground);
iBgGroup2.Picture.Graphic := nil;
end;
procedure TfmAlphaBlendingMain.lbBgGroup3DblClick(Sender: TObject);
begin
ClearBgImage(nbMain.Groups[2].StyleBackground);
iBgGroup3.Picture.Graphic := nil;
end;
procedure TfmAlphaBlendingMain.iBgClick(Sender: TObject);
begin
SetBgImage(nbMain.StyleBackground);
iBg.Picture.Assign(nbMain.StyleBackground.Style.Image);
end;
procedure TfmAlphaBlendingMain.iBgGroup1Click(Sender: TObject);
begin
SetBgImage(nbMain.Groups[0].StyleBackground);
iBgGroup1.Picture.Assign(nbMain.Groups[0].StyleBackground.Style.Image);
end;
procedure TfmAlphaBlendingMain.iBgGroup2Click(Sender: TObject);
begin
SetBgImage(nbMain.Groups[1].StyleBackground);
iBgGroup2.Picture.Assign(nbMain.Groups[1].StyleBackground.Style.Image);
end;
procedure TfmAlphaBlendingMain.iBgGroup3Click(Sender: TObject);
begin
SetBgImage(nbMain.Groups[2].StyleBackground);
iBgGroup3.Picture.Assign(nbMain.Groups[2].StyleBackground.Style.Image);
end;
procedure TfmAlphaBlendingMain.tbBgChange(Sender: TObject);
begin
SetBgAlphaBlending(nbMain.StyleBackground, tbBg.Position);
end;
procedure TfmAlphaBlendingMain.tbBgGroup1Change(Sender: TObject);
begin
SetBgAlphaBlending(nbMain.Groups[0].StyleBackground, tbBgGroup1.Position);
end;
procedure TfmAlphaBlendingMain.tbBgGroup2Change(Sender: TObject);
begin
SetBgAlphaBlending(nbMain.Groups[1].StyleBackground, tbBgGroup2.Position);
end;
procedure TfmAlphaBlendingMain.tbBgGroup3Change(Sender: TObject);
begin
SetBgAlphaBlending(nbMain.Groups[2].StyleBackground, tbBgGroup3.Position);
end;
procedure TfmAlphaBlendingMain.FormCreate(Sender: TObject);
begin
tbBg.Position := nbMain.StyleBackground.Style.AlphaBlending;
tbBgGroup1.Position := nbMain.Groups[0].StyleBackground.Style.AlphaBlending;
tbBgGroup2.Position := nbMain.Groups[1].StyleBackground.Style.AlphaBlending;
tbBgGroup3.Position := nbMain.Groups[2].StyleBackground.Style.AlphaBlending;
iBg.Picture.Assign(nbMain.StyleBackground.Style.Image);
iBgGroup1.Picture.Assign(nbMain.Groups[0].StyleBackground.Style.Image);
iBgGroup2.Picture.Assign(nbMain.Groups[1].StyleBackground.Style.Image);
iBgGroup3.Picture.Assign(nbMain.Groups[2].StyleBackground.Style.Image);
end;
procedure TfmAlphaBlendingMain.nbMainGroupHotTrack(Sender: TObject;
Group: TdxNavBarGroup);
begin
if Group = bgDetails then
bgDetails.LargeImageIndex := 2
else bgDetails.LargeImageIndex := 3;
end;
procedure TfmAlphaBlendingMain.nbMainCalcGroupClientHeight(Sender: TObject;
ViewInfo: TdxNavBarGroupViewInfo; var Height: Integer);
begin
if (ViewInfo.Group = bgDetails) and ViewInfo.Group.Expanded then
Height := 50;
end;
procedure TfmAlphaBlendingMain.nbMainCustomDrawGroupClientForeground(Sender: TObject;
Canvas: TCanvas; ViewInfo: TdxNavBarGroupViewInfo; var Handled: Boolean);
begin
if (ViewInfo.Group = bgDetails) and ViewInfo.Group.Expanded then
begin
Canvas.Brush.Style := bsClear;
Canvas.Font.Color := clBlack;
Canvas.Font.Size := 8;
Canvas.Font.Style := [fsBold];
Canvas.TextOut(ViewInfo.ItemsRect.Left + 10, ViewInfo.ItemsRect.Top + 10, 'My Documents');
Canvas.Font.Style := [];
Canvas.TextOut(ViewInfo.ItemsRect.Left + 10, ViewInfo.ItemsRect.Top + 24, 'System Folder');
Handled := True;
end;
end;
procedure TfmAlphaBlendingMain.nbMainGetGroupHint(Sender: TObject;
Group: TdxNavBarGroup; var Hint: String);
begin
if Group = bgDetails then
Hint := 'Custom hint for ' + Group.Caption;
end;
procedure TfmAlphaBlendingMain.nbMainCalcGroupHintRect(Sender: TObject;
Group: TdxNavBarGroup; ViewInfo: TdxNavBarViewInfo; var R: TRect);
begin
if Group = bgDetails then
begin
R.Right := R.Left + 300;
R.Bottom := R.Top + 30;
end;
end;
procedure TfmAlphaBlendingMain.nbMainCustomDrawGroupHint(Sender: TObject;
ACanvas: TCanvas; AGroup: TdxNavBarGroup; AHint: String; R: TRect;
var AHandled: Boolean);
begin
if AGroup = bgDetails then
begin
ACanvas.Pen.Width := 1;
ACanvas.Pen.Style := psSolid;
ACanvas.Pen.Color := clYellow;
ACanvas.Brush.Style := bsSolid;
ACanvas.Brush.Color := clTeal;
ACanvas.Rectangle(R.Left, R.Top, R.Right, R.Bottom);
ACanvas.Brush.Style := bsClear;
ACanvas.Font.Color := clYellow;
ACanvas.Font.Size := 14;
ACanvas.Font.Style := [fsBold];
DrawText(ACanvas.Handle, PChar(AHint), Length(AHint), R, DT_VCENTER or
DT_CENTER or DT_SINGLELINE or DT_END_ELLIPSIS or DT_NOPREFIX);
AHandled := True;
end;
end;
end.