Componentes.Terceros.DevExp.../official/x.26/ExpressQuantumGrid 6/Demos/Delphi/CustomDrawTableViewDemo/CustomDrawTableViewDemoStylesEditor.pas
2007-09-09 11:27:27 +00:00

375 lines
13 KiB
ObjectPascal

unit CustomDrawTableViewDemoStylesEditor;
interface
uses
Windows, Messages, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, cxButtons, cxDropDownEdit, cxMRUEdit, cxControls,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, CheckLst,
ExtCtrls, ComCtrls, Buttons, cxLookAndFeelPainters, cxRadioGroup,
cxImageComboBox, DemoUtils;
type
TCustomDrawTableViewDemoStylesEditorForm = class(TForm)
btnClose: TcxButton;
tvCustomDrawItems: TTreeView;
gbEventHandlerSettings: TGroupBox;
lbFont: TLabel;
sbFont: TSpeedButton;
bvSeparator: TBevel;
lbIndicatorGlyph: TLabel;
cbGradient: TcxComboBox;
mruBkImage: TcxMRUEdit;
rbBackGroundImage: TcxRadioButton;
rbGradient: TcxRadioButton;
rbDependsOnTheData: TcxRadioButton;
rbDafaultDrawing: TcxRadioButton;
pnSampleText: TPanel;
icbIndicatorImages: TcxImageComboBox;
FontDialog: TFontDialog;
OpenDialog: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure mruBkImagePropertiesButtonClick(Sender: TObject);
procedure rbBackGroundImageClick(Sender: TObject);
procedure rbGradientClick(Sender: TObject);
procedure rbDependsOnTheDataClick(Sender: TObject);
procedure rbDafaultDrawingClick(Sender: TObject);
procedure tvCustomDrawItemsClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure mruBkImagePropertiesChange(Sender: TObject);
procedure sbFontClick(Sender: TObject);
procedure cbGradientPropertiesChange(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure mruBkImageKeyPress(Sender: TObject; var Key: Char);
procedure icbIndicatorImagesPropertiesEditValueChanged(
Sender: TObject);
private
FUserDefinedImage: TBitMap;
FIsUpdating: Boolean;
procedure DisableControls(Sender: TcxCustomMaskEdit);
procedure SetProperties(ACustomDrawingStyle: TCustomDrawingStyle);
function GetBkImageText: String;
procedure SetFont;
function GetGradientColorText: String;
end;
var
CustomDrawTableViewDemoStylesEditorForm: TCustomDrawTableViewDemoStylesEditorForm;
implementation
uses CustomDrawTableViewDemoMain;
{$R *.dfm}
procedure TCustomDrawTableViewDemoStylesEditorForm.FormCreate(Sender: TObject);
var
I, J: Integer;
p: TCustomDrawItem;
Node: TTreeNode;
begin
Node := tvCustomDrawItems.Items[0];
for I:=0 to 1 do
for J:=0 to 5 do
begin
p := TCustomDrawItem.Create;
p.ViewType := TViewType(I);
p.CustomDrawArea := TCustomDrawArea(J);
if Node.HasChildren then
Node := Node.GetNext;
if Node <> nil then
Node.Data := p;
Node := Node.GetNext;
end;
tvCustomDrawItems.FullExpand;
tvCustomDrawItems.Selected :=
tvCustomDrawItems.Items.GetFirstNode.getFirstChild;
tvCustomDrawItems.Items.GetFirstNode.getFirstChild.Focused := True;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.mruBkImagePropertiesButtonClick(
Sender: TObject);
begin
if OpenDialog.Execute then
begin
if FUserDefinedImage = nil then
begin
FUserDefinedImage.Free;
FUserDefinedImage := nil;
end;
FUserDefinedImage := TBitmap.Create;
try
FUserDefinedImage.LoadFromFile(OpenDialog.FileName);
FIsUpdating := True;
mruBkImage.Text := 'User Defined';
FIsUpdating := False;
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
begin
CustomDrawTableViewDemoMainForm.UserDefindedBitmap[ViewType, CustomDrawArea] := FUserDefinedImage;
CustomDrawTableViewDemoMainForm.CustomBkImage[ViewType, CustomDrawArea] := bkiUserDefined;
end;
finally
FUserDefinedImage := nil;
end;
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.DisableControls(Sender: TcxCustomMaskEdit);
var
I: Integer;
begin
for I :=0 to ComponentCount - 1 do
if (Components[i] is TcxCustomMaskEdit) and (Components[i] <> Sender) and not (Components[i] is TcxImageComboBox) then
(Components[i] as TControl).Enabled := False;
if Sender <> nil then
Sender.Enabled := True;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.rbBackGroundImageClick(
Sender: TObject);
begin
if not (Sender as TcxRadioButton).Checked then (Sender as TcxRadioButton).Checked := True;
DisableControls(mruBkImage);
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.CustomDrawingStyle[ViewType, CustomDrawArea] := cdsBkImage;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.rbGradientClick(
Sender: TObject);
begin
if not (Sender as TcxRadioButton).Checked then (Sender as TcxRadioButton).Checked := True;
DisableControls(cbGradient);
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.CustomDrawingStyle[ViewType, CustomDrawArea] := cdsGradient;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.rbDependsOnTheDataClick(Sender: TObject);
begin
if not (Sender as TcxRadioButton).Checked then (Sender as TcxRadioButton).Checked := True;
DisableControls(nil);
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.CustomDrawingStyle[ViewType, CustomDrawArea] := cdsDependOnData;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.rbDafaultDrawingClick(Sender: TObject);
begin
if not (Sender as TcxRadioButton).Checked then (Sender as TcxRadioButton).Checked := True;
DisableControls(nil);
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.CustomDrawingStyle[ViewType, CustomDrawArea] := cdsDefaultDrawing;
end;
function TCustomDrawTableViewDemoStylesEditorForm.GetBkImageText: String;
begin
if (tvCustomDrawItems.Selected <> nil) and (tvCustomDrawItems.Selected.Data <> nil) then
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
case CustomDrawTableViewDemoMainForm.CustomBkImage[ViewType, CustomDrawArea] of
bkiTile: Result := 'Tile';
bkiSky: Result := 'Sky';
bkiEgypt: Result := 'Egypt';
bkiMyFace: Result := 'My Face';
bkiUserDefined: Result := 'User Defined';
end;
end;
function TCustomDrawTableViewDemoStylesEditorForm.GetGradientColorText: String;
begin
if (tvCustomDrawItems.Selected <> nil) and (tvCustomDrawItems.Selected.Data <> nil) then
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
case CustomDrawTableViewDemoMainForm.CustomColorScheme[ViewType, CustomDrawArea] of
csGrey: Result := 'Grey';
csGold: Result := 'Gold';
csBlue: Result := 'Blue';
csGreen: Result := 'Green';
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.SetFont;
begin
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
pnSampleText.Font.Assign(CustomDrawTableViewDemoMainForm.Fonts[ViewType, CustomDrawArea]);
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.SetProperties(ACustomDrawingStyle: TCustomDrawingStyle);
begin
FIsUpdating := True;
mruBkImage.Text := GetBkImageText;
cbGradient.Text := GetGradientColorText;
FIsUpdating := False;
SetFont;
case ACustomDrawingStyle of
cdsBkImage: rbBackGroundImageClick(rbBackGroundImage);
cdsGradient: rbGradientClick(rbGradient);
cdsDependOnData: rbDependsOnTheDataClick(rbDependsOnTheData);
cdsDefaultDrawing: rbDafaultDrawingClick(rbDafaultDrawing);
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.tvCustomDrawItemsClick(
Sender: TObject);
procedure SetFontVisibility(AIsVisible: Boolean = False);
begin
lbFont.Visible := AIsVisible;
sbFont.Visible := AIsVisible;
pnSampleText.Visible := AIsVisible;
end;
procedure SetDependsOnTheDataVisibility(AIsVisible: Boolean = False);
begin
rbDependsOnTheData.Visible := AIsVisible;
end;
procedure SetIndicatorCellVisibility(AIsVisible: Boolean);
begin
lbIndicatorGlyph.Visible := AIsVisible;
icbIndicatorImages.Visible := AIsVisible;
end;
procedure SetIndicatorImage(AViewType: TViewType);
begin
icbIndicatorImages.ItemIndex :=
CustomDrawTableViewDemoMainForm.IndicatorImageIndex[AViewType];
end;
begin
if (tvCustomDrawItems.Selected <> nil) then
begin
if (tvCustomDrawItems.Selected.Data = nil) then
gbEventHandlerSettings.Visible := False
else
begin
if not gbEventHandlerSettings.Visible then
gbEventHandlerSettings.Visible := True;
case TCustomDrawItem(tvCustomDrawItems.Selected.Data).CustomDrawArea of
cdaPartBackGround:
begin
SetDependsOnTheDataVisibility;
SetFontVisibility;
SetIndicatorCellVisibility(False);
end;
cdaColumnHeader, cdaFooterCell, cdaGroupCell:
begin
SetDependsOnTheDataVisibility;
SetFontVisibility(True);
SetIndicatorCellVisibility(False);
end;
cdaCell:
begin
SetDependsOnTheDataVisibility(True);
SetFontVisibility(True);
SetIndicatorCellVisibility(False);
end;
cdaIndicatorCell:
begin
SetDependsOnTheDataVisibility;
SetFontVisibility(False);
SetIndicatorCellVisibility(True);
SetIndicatorImage(TCustomDrawItem(tvCustomDrawItems.Selected.Data).ViewType);
end;
end;
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
SetProperties(CustomDrawTableViewDemoMainForm.CustomDrawingStyle[ViewType, CustomDrawArea]);
end;
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.FormDestroy(
Sender: TObject);
var
I: Integer;
begin
for I:=0 to tvCustomDrawItems.Items.Count - 1 do
if tvCustomDrawItems.Items[I].Data <> nil then
TCustomDrawItem(tvCustomDrawItems.Items[I].Data).Free;
if FUserDefinedImage = nil then
begin
FUserDefinedImage.Free;
FUserDefinedImage := nil;
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.FormShow(
Sender: TObject);
begin
if (tvCustomDrawItems.Selected <> nil) and (tvCustomDrawItems.Selected.Data <> nil) then
begin
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
SetProperties(CustomDrawTableViewDemoMainForm.CustomDrawingStyle[ViewType, CustomDrawArea]);
tvCustomDrawItemsClick(tvCustomDrawItems.Selected);
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.mruBkImagePropertiesChange(
Sender: TObject);
var
BkImage: TBkImage;
begin
if FIsUpdating then Exit;
if tvCustomDrawItems.Selected <> nil then
begin
BkImage := bkiUserDefined;
if (Sender as TcxMRUEdit).Text = 'Tile' then
BkImage := bkiTile else
if (Sender as TcxMRUEdit).Text = 'Sky' then
BkImage := bkiSky else
if (Sender as TcxMRUEdit).Text = 'Egypt' then
BkImage := bkiEgypt else
if (Sender as TcxMRUEdit).Text = 'My Face' then
BkImage := bkiMyFace;
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.CustomBkImage[ViewType, CustomDrawArea] := BkImage;
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.sbFontClick(
Sender: TObject);
begin
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
FontDialog.Font.Assign(CustomDrawTableViewDemoMainForm.Fonts[ViewType, CustomDrawArea]);
if FontDialog.Execute then
begin
pnSampleText.Font.Assign(FontDialog.Font);
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.Fonts[ViewType, CustomDrawArea] := FontDialog.Font;
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.cbGradientPropertiesChange(
Sender: TObject);
var
ColorScheme: TColorScheme;
begin
if FIsUpdating then Exit;
if tvCustomDrawItems.Selected <> nil then
begin
ColorScheme := csGrey;
if (Sender as TcxComboBox).Text = 'Blue' then
ColorScheme := csBlue else
if (Sender as TcxComboBox).Text = 'Gold' then
ColorScheme := csGold else
if (Sender as TcxComboBox).Text = 'Green' then
ColorScheme := csGreen;
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.CustomColorScheme[ViewType, CustomDrawArea] := ColorScheme;
end;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.btnCloseClick(
Sender: TObject);
begin
Close;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.mruBkImageKeyPress(
Sender: TObject; var Key: Char);
begin
Key := #7;
end;
procedure TCustomDrawTableViewDemoStylesEditorForm.icbIndicatorImagesPropertiesEditValueChanged(
Sender: TObject);
begin
if tvCustomDrawItems.Selected.Data <> nil then
with TCustomDrawItem(tvCustomDrawItems.Selected.Data) do
CustomDrawTableViewDemoMainForm.IndicatorImageIndex[ViewType] := TcxImageComboBox(Sender).ItemIndex;
end;
end.