📄 treeshed.pas
字号:
{**********************************************}
{ TTree Component }
{ Copyright (c) 1998-2002 by David Berneda }
{**********************************************}
{$I TeeDefs.inc}
unit TreeShEd;
interface
uses
{$IFNDEF LINUX}
Windows, Messages,
{$ENDIF}
SysUtils, Classes,
{$IFDEF CLX}
QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls, QComCtrls, QButtons,
{$ELSE}
Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ExtDlgs, ComCtrls, Buttons,
{$ENDIF}
TeeTree, TeCanvas, TeePenDlg;
type
TNodeTreeEditor = class(TForm)
Button3: TButton;
PageControl1: TPageControl;
TabText: TTabSheet;
TabImage: TTabSheet;
Label6: TLabel;
ComboBox4: TComboFlat;
Image1: TImage;
Button5: TButton;
TabFormat: TTabSheet;
Label2: TLabel;
CheckBox3: TCheckBox;
Label1: TLabel;
CBStyle: TComboFlat;
Button1: TButton;
TabGradient: TTabSheet;
CheckBox2: TCheckBox;
ComboBox2: TComboFlat;
Label4: TLabel;
TabShadow: TTabSheet;
Label5: TLabel;
Label7: TLabel;
Shape1: TShape;
TabPosition: TTabSheet;
Label8: TLabel;
Label9: TLabel;
CheckBox1: TCheckBox;
Label10: TLabel;
Label11: TLabel;
UpDown1: TUpDown;
UpDown2: TUpDown;
UpDown3: TUpDown;
UpDown4: TUpDown;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label12: TLabel;
ScrollBar2: TScrollBar;
Label13: TLabel;
ScrollBar3: TScrollBar;
Label14: TLabel;
ScrollBar4: TScrollBar;
Label15: TLabel;
ScrollBar5: TScrollBar;
Bevel1: TBevel;
Label16: TLabel;
CBCursor: TComboFlat;
CheckBox4: TCheckBox;
Shape4: TShape;
Label18: TLabel;
ComboBox3: TComboFlat;
CheckBox5: TCheckBox;
Edit7: TEdit;
UpDown7: TUpDown;
Label17: TLabel;
Edit8: TEdit;
UpDown8: TUpDown;
CheckBox6: TCheckBox;
Edit5: TEdit;
UpDown5: TUpDown;
Label3: TLabel;
Label19: TLabel;
Edit6: TEdit;
UpDown6: TUpDown;
Label20: TLabel;
ComboBox5: TComboFlat;
GroupBox1: TGroupBox;
Shape2: TShape;
Shape3: TShape;
Button4: TButton;
Shape5: TShape;
Button2: TButton;
Shape6: TShape;
BBackColor: TButtonColor;
CheckBox7: TCheckBox;
Label21: TLabel;
ETransp: TEdit;
UDTransp: TUpDown;
CheckBox8: TCheckBox;
CBConnStyle: TComboFlat;
Label22: TLabel;
CBImgTransp: TCheckBox;
CBSmooth: TCheckBox;
Label23: TLabel;
Edit9: TEdit;
UpDown9: TUpDown;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure CBStyleChange(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure Shape2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure CheckBox1Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ScrollBar2Change(Sender: TObject);
procedure ScrollBar4Change(Sender: TObject);
procedure ScrollBar5Change(Sender: TObject);
procedure ScrollBar3Change(Sender: TObject);
procedure CBCursorChange(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure CheckBox4Click(Sender: TObject);
procedure Shape4MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ComboBox3Change(Sender: TObject);
procedure CheckBox5Click(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Edit8Change(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure CheckBox6Click(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure ComboBox5Change(Sender: TObject);
procedure Shape5MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape6MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BBackColorClick(Sender: TObject);
procedure CheckBox7Click(Sender: TObject);
procedure ETranspChange(Sender: TObject);
procedure CBConnStyleChange(Sender: TObject);
procedure CheckBox8Click(Sender: TObject);
procedure CBImgTranspClick(Sender: TObject);
procedure CBSmoothClick(Sender: TObject);
procedure Edit9Change(Sender: TObject);
private
{ Private declarations }
Changing : Boolean;
OldX : Integer;
OldY : Integer;
procedure CheckImgTransp;
procedure Image1Assign(Value:TPicture);
procedure ProcGetCursors(const S: string);
Procedure SetUpDowns;
public
{ Public declarations }
Tree1 : TCustomTree;
end;
type TTreeShapeTabs=(stFormat,stText,stImage,stGradient,stShadow,stPosition);
Procedure EditTreeShape(AOwner:TComponent; AShape:TTreeNodeShape);
Procedure EditTreeShapePage( AOwner:TComponent; AShape:TTreeNodeShape;
ATab:TTreeShapeTabs; ShowPosition:Boolean);
Procedure InternalEditTreeShapePage( AOwner:TComponent; AShape:TTreeNodeShape;
ATab:TTreeShapeTabs; ShowPosition:Boolean;
CallOnShow:TNotifyEvent);
Function PictureDialog:TOpenDialog;
implementation
{$IFNDEF CLX}
{$R *.DFM}
{$ELSE}
{$R *.xfm}
{$ENDIF}
Uses TeeBrushDlg, TeeProcs, TreeTeEd, TeeTranslate, TreeConst;
Procedure EditTreeShape(AOwner:TComponent; AShape:TTreeNodeShape);
begin
EditTreeShapePage(AOwner,AShape,stFormat,True);
end;
Procedure EditTreeShapePage( AOwner:TComponent; AShape:TTreeNodeShape;
ATab:TTreeShapeTabs; ShowPosition:Boolean);
begin
InternalEditTreeShapePage(AOwner,AShape,ATab,ShowPosition,nil);
end;
type TSelectedAccess=class(TSelectedShapeList);
Procedure InternalEditTreeShapePage( AOwner:TComponent; AShape:TTreeNodeShape;
ATab:TTreeShapeTabs; ShowPosition:Boolean;
CallOnShow:TNotifyEvent);
var OldSelected : Boolean;
tmpEditor : TNodeTreeEditor;
begin
tmpEditor:=TNodeTreeEditor.Create(AOwner);
with tmpEditor do
try
TabPosition.TabVisible:=ShowPosition;
OldSelected:=AShape.Selected;
Tree1:=TTree(AShape.Tree);
if not Assigned(Tree1) then
begin
Tree1:=TCustomTree.Create(nil);
TSelectedAccess(Tree1.Selected).InternalAdd(AShape);
end
else
begin
//Tree1.Selected.Clear; //tom 25/08/2002: change all selected objects
AShape.Selected:=True;
end;
Case ATab of
stFormat : PageControl1.ActivePage:=TabFormat;
stText : PageControl1.ActivePage:=TabText;
stImage : PageControl1.ActivePage:=TabImage;
stGradient : PageControl1.ActivePage:=TabGradient;
stShadow : PageControl1.ActivePage:=TabShadow;
stPosition : PageControl1.ActivePage:=TabPosition;
end;
if Assigned(CallOnShow) then CallOnShow(tmpEditor);
PageControl1Change(PageControl1);
ShowModal;
AShape.Selected:=OldSelected;
if not Assigned(AShape.Tree) then Tree1.Free;
finally
Free;
end;
end;
procedure TNodeTreeEditor.Button1Click(Sender: TObject);
var t : Integer;
begin
With Tree1 do
if Selected.Count>0 then
if EditChartPen(Self,Selected[0].Border) then
for t:=1 to Selected.Count-1 do
Selected[t].Border.Assign(Selected[0].Border);
end;
procedure TNodeTreeEditor.Button2Click(Sender: TObject);
var t : Integer;
begin
With Tree1 do
if Selected.Count>0 then
if EditChartBrush(Self,Selected[0].Brush) then
for t:=1 to Selected.Count-1 do
Selected[t].Brush.Assign(Selected[0].Brush);
end;
Function PictureDialog:TOpenDialog;
begin
{$IFDEF D4}
{$IFDEF CLX}
result:=TOpenDialog.Create(nil);
{$ELSE}
result:=TOpenPictureDialog.Create(nil);
{$ENDIF}
{$ELSE}
result:=TOpenDialog.Create(nil);
{$ENDIF}
result.Filter:=GraphicFilter(TGraphic);
end;
procedure TNodeTreeEditor.CheckImgTransp;
begin
CBImgTransp.Enabled:=Assigned(Image1.Picture.Graphic);
CBImgTransp.Checked:=CBImgTransp.Enabled and Image1.Picture.Graphic.Transparent;
end;
procedure TNodeTreeEditor.Image1Assign(Value:TPicture);
begin
Image1.Picture.Assign(Value);
Image1.Transparent:=Assigned(Value) and Assigned(Value.Graphic)
and Value.Graphic.Transparent;
CheckImgTransp;
end;
procedure TNodeTreeEditor.Button5Click(Sender: TObject);
var t : Integer;
begin
With Tree1 do
if Selected.Count>0 then
if Button5.Caption=TreeMsg_Browse then
begin
with PictureDialog do
try
if Execute then
begin
Selected[0].ImageIndex:=tiNone;
Selected[0].Image.LoadFromFile(FileName);
for t:=1 to Selected.Count-1 do
begin
Selected[t].ImageIndex:=tiNone;
Selected[t].Image.Assign(Selected[0].Image);
end;
Image1Assign(Selected[0].Image);
ComboBox3.ItemIndex:=0;
Button5.Caption:=TreeMsg_Clear;
end;
finally
Free;
end;
end
else
begin
for t:=0 to Selected.Count-1 do
begin
Selected[t].ImageIndex:=tiNone;
Selected[t].Image.Assign(nil);
end;
Tree1.Repaint;
Image1Assign(nil);
ComboBox3.ItemIndex:=0;
Button5.Caption:=TreeMsg_Browse;
end;
end;
procedure TNodeTreeEditor.CheckBox2Click(Sender: TObject);
var t : Integer;
begin
if not Changing then
With Tree1 do
for t:=0 to Selected.Count-1 do
Selected[t].Gradient.Visible:=CheckBox2.Checked;
end;
procedure TNodeTreeEditor.CheckBox3Click(Sender: TObject);
var t : Integer;
begin
With Tree1 do
for t:=0 to Selected.Count-1 do
Selected[t].Transparent:=CheckBox3.Checked;
end;
procedure TNodeTreeEditor.CBStyleChange(Sender: TObject);
var t : Integer;
begin
With Tree1 do
for t:=0 to Selected.Count-1 do
With Selected[t] do
begin
Style:=TTreeShapeStyle(CBStyle.ItemIndex);
Border.Visible:=True;
end;
end;
procedure TNodeTreeEditor.ComboBox2Change(Sender: TObject);
var t : Integer;
begin
if not Changing then
With Tree1 do
for t:=0 to Selected.Count-1 do
Selected[t].Gradient.Direction:=TGradientDirection(ComboBox2.ItemIndex);
end;
procedure TNodeTreeEditor.ComboBox4Change(Sender: TObject);
var t : Integer;
begin
With Tree1.Selected do
for t:=0 to Count-1 do
with Items[t] do
begin
ImageAlignment:=TTreeImageAlignment(ComboBox4.ItemIndex);
if ImageAlignment=iaCenter then Transparent:=True;
end;
end;
procedure TNodeTreeEditor.Shape2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var t : Integer;
tmpColor : TColor;
OldColor : TColor;
begin
With Tree1 do
if Selected.Count>0 then
begin
OldColor:=Selected[0].Gradient.StartColor;
tmpColor:=EditColor(Self,OldColor);
if tmpColor<>OldColor then
begin
for t:=0 to Selected.Count-1 do
Selected[t].Gradient.StartColor:=tmpColor;
Shape2.Brush.Color:=tmpColor;
end;
end;
end;
procedure TNodeTreeEditor.Shape3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var t : Integer;
tmpColor : TColor;
OldColor : TColor;
begin
With Tree1 do
if Selected.Count>0 then
begin
OldColor:=Selected[0].Gradient.EndColor;
tmpColor:=EditColor(Self,OldColor);
if tmpColor<>OldColor then
begin
for t:=0 to Selected.Count-1 do
Selected[t].Gradient.EndColor:=tmpColor;
Shape3.Brush.Color:=tmpColor;
end;
end;
end;
procedure TNodeTreeEditor.Button3Click(Sender: TObject);
begin
Close;
end;
Const TeeCursorPrefix='cr';
Function DeleteCursorPrefix(Const S:String):String;
begin
result:=S;
if Copy(result,1,2)=TeeCursorPrefix then Delete(result,1,2);
end;
procedure TNodeTreeEditor.FormShow(Sender: TObject);
var tmpSt : String;
begin
if Ord(High(TGradientDirection))>6 then
ComboBox2.Items.Add('Radial');
if Assigned(Tree1) then
if Tree1.Selected.Count>0 then
with Tree1.Selected[0] do
begin
Shape4.Brush.Color:=Brush.Color;
Shape5.Brush.Color:=Border.Color;
if ImageIndex=tiNone then
begin
if Assigned(Image) and Assigned(Image.Graphic) then
begin
Image1Assign(Image);
Button5.Caption:=TreeMsg_Clear;
end
else
Button5.Caption:=TreeMsg_Browse;
end
else
begin
Button5.Caption:=TreeMsg_Clear;
Image1Assign(GetPicture);
end;
BBackColor.LinkProperty(Tree1.Selected[0],'BackColor');
CheckBox2.Checked:=Gradient.Visible;
CBStyle.ItemIndex:=Ord(Style);
CBStyle.Visible:=Style<>tssCustom;
Label1.Visible:=CBStyle.Visible;
CheckBox3.Checked:=Transparent;
Case ShowCross of
scAuto: ComboBox5.ItemIndex:=0;
scAlways: ComboBox5.ItemIndex:=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -