⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeteed.pas

📁 第三方控件:PaintGrid.pas 网格型仪表控件源文件 Mymeter.pas 圆型仪表控件源文件 Project1是这两个控件的使用范例。 该
💻 PAS
字号:
{**********************************************}
{   TTree Component  - Text Editor Dialog      }
{   Copyright (c) 1998-2002 by David Berneda   }
{**********************************************}
{$I TeeDefs.inc}
unit TreeTeEd;

{
  Tree Text Editor dialog.
  Used by shapes (TreeShEd.pas) and connections (TreeCoEd.pas)
}
interface

uses
  {$IFNDEF LINUX}
  Windows, Messages,
  {$ENDIF}
  SysUtils, Classes,
  {$IFDEF CLX}
  QGraphics, QControls, QForms, QDialogs, QStdCtrls, QComCtrls, QExtCtrls,
  {$ELSE}
  Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls,
  {$ENDIF}
  TeeTree, TeeProcs, TeCanvas, TeePenDlg;

type
  TFormTeeText = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    GroupBox1: TGroupBox;
    Label19: TLabel;
    Label20: TLabel;
    Shape6: TShape;
    Label22: TLabel;
    Edit6: TEdit;
    UpDown6: TUpDown;
    Edit5: TEdit;
    UpDown5: TUpDown;
    Edit1: TEdit;
    UpDown1: TUpDown;
    Label4: TLabel;
    Edit2: TEdit;
    UpDown2: TUpDown;
    Button1: TButton;
    BOutline: TButtonPen;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    CBHorizAlign: TComboFlat;
    Label7: TLabel;
    CBVertAlign: TComboFlat;
    Edit3: TEdit;
    UpDown3: TUpDown;
    Edit4: TEdit;
    UpDown4: TUpDown;
    Label5: TLabel;
    Edit7: TEdit;
    UpDown7: TUpDown;
    Panel3: TPanel;
    Panel2: TPanel;
    Memo2: TMemo;
    Panel1: TPanel;
    Label3: TLabel;
    Shape5: TShape;
    Button2: TButton;
    CBClip: TCheckBox;
    procedure Button2Click(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure Memo2Change(Sender: TObject);
    procedure Shape6MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure BOutlineClick(Sender: TObject);
    procedure CBHorizAlignChange(Sender: TObject);
    procedure Shape5MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure CBClipClick(Sender: TObject);
    procedure ButtonPen1Click(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure CBVertAlignChange(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
  private
    { Private declarations }
    Changing     : Boolean;
    IsConnection : Boolean;
  public
    { Public declarations }
    Tree1       : TCustomTree;
    Connection1 : TTreeConnection;
  end;

Procedure TreeEditText(AOwner:TComponent; AElement:TCustomTreeElement);

implementation

{$IFNDEF CLX}
{$R *.DFM}
{$ELSE}
{$R *.xfm}
{$ENDIF}

Uses TeeTranslate, TeeBrushDlg, TeeEdiGrad;

Procedure TreeEditText(AOwner:TComponent; AElement:TCustomTreeElement);
begin
  with TFormTeeText.Create(AOwner) do
  try
    Align:=alNone;
    BorderStyle:={$IFDEF CLX}fbsSizeable{$ELSE}bsSizeable{$ENDIF};
    Position:=poScreenCenter;
    Height:=200;
    Width:=320;
    if AElement is TTreeConnection then
       Connection1:=TTreeConnection(AElement);
    Tree1:=AElement.Tree;
    ShowModal;
  finally
    Free;
  end;
end;

procedure TFormTeeText.Button2Click(Sender: TObject);
var t : Integer;
begin
  if IsConnection then EditTeeFont(Self,Connection1.Font)
  else
  With Tree1 do
  if Selected.Count>0 then
  begin
    EditTeeFont(Self,Selected[0].Font);
    for t:=1 to Selected.Count-1 do Selected[t].Font.Assign(Selected[0].Font);
  end;
end;

procedure TFormTeeText.Edit5Change(Sender: TObject);
var t : Integer;
begin
  if not Changing then
     if IsConnection then Connection1.Font.Shadow.VertSize:=UpDown5.Position
     else
     With Tree1 do
     for t:=0 to Selected.Count-1 do
         Selected[t].Font.Shadow.VertSize:=UpDown5.Position;
end;

procedure TFormTeeText.Edit6Change(Sender: TObject);
var t : Integer;
begin
  if not Changing then
     if IsConnection then Connection1.Font.Shadow.HorizSize:=UpDown6.Position
     else
     With Tree1 do
     for t:=0 to Selected.Count-1 do
         Selected[t].Font.Shadow.HorizSize:=UpDown6.Position;
end;

procedure TFormTeeText.Memo2Change(Sender: TObject);
begin
  if not Changing then
     if IsConnection then Connection1.Text.Assign(Memo2.Lines)
     else
     With Tree1 do
     if Selected.Count>0 then
        Selected[0].Text.Assign(Memo2.Lines);
end;

procedure TFormTeeText.Shape6MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var t:Integer;
    tmpColor:TColor;
begin
  if IsConnection then
  begin
    tmpColor:=EditColor(Self,Connection1.Font.Shadow.Color);
    Tree1.Connections.Selected.Font.Shadow.Color:=tmpColor;
  end
  else
  begin
    tmpColor:=EditColor(Self,Tree1.Selected[0].Font.Shadow.Color);
    With Tree1 do
    for t:=0 to Selected.Count-1 do Selected[t].Font.Shadow.Color:=tmpColor;
  end;
  Shape6.Brush.Color:=tmpColor;
end;

procedure TFormTeeText.FormShow(Sender: TObject);
var tmp:TCustomTreeElement;
begin
  Changing:=True;
  IsConnection:=Assigned(Connection1);
  if IsConnection then tmp:=Connection1
  else
  if Assigned(Tree1) then tmp:=Tree1.Selected[0]
                     else tmp:=nil;

  if Assigned(tmp) then
  With tmp do
  begin
    Shape5.Brush.Color:=Font.Color;

    Case HorizTextAlign of
      htaLeft   : CBHorizAlign.ItemIndex:=0;
      htaCenter : CBHorizAlign.ItemIndex:=1;
      htaRight  : CBHorizAlign.ItemIndex:=2;
    end;
    Case VertTextAlign of
      vtaTop    : CBVertAlign.ItemIndex:=0;
      vtaCenter : CBVertAlign.ItemIndex:=1;
      vtaBottom : CBVertAlign.ItemIndex:=2;
    end;

    Memo2.Lines.Assign(Text);
    UpDown6.Position:=Font.Shadow.HorizSize;
    Shape6.Brush.Color:=Font.Shadow.Color;
    UpDown1.Position:=Font.InterCharSize;
    UpDown2.Position:=Text.Angle;

    CBClip.Visible:=not IsConnection;
    if CBClip.Visible then CBClip.Checked:=Text.ClipText;

    BOutline.LinkPen(Font.Outline);

    UpDown3.Position:=Text.HorizOffset;
    UpDown4.Position:=Text.VertOffset;
  end;

  PageControl1.ActivePage:=TabSheet1;

  Memo2.SetFocus;
  Changing:=False;
end;

procedure TFormTeeText.FormCreate(Sender: TObject);
begin
  TeeTranslateControl(Self);
  Changing:=True;
end;

procedure TFormTeeText.Edit1Change(Sender: TObject);
var t:Integer;
begin
  if not Changing then
     if IsConnection then Connection1.Font.InterCharSize:=UpDown1.Position
     else
     With Tree1 do
     for t:=0 to Selected.Count-1 do
         Selected[t].Font.InterCharSize:=UpDown1.Position;
end;

procedure TFormTeeText.BOutlineClick(Sender: TObject);
var t : Integer;
begin
  if IsConnection then
     EditChartPen(Self,Connection1.Font.OutLine)
  else
  With Tree1 do
  if Selected.Count>0 then
  begin
    EditChartPen(Self,Selected[0].Font.OutLine);
    for t:=1 to Selected.Count-1 do
        Selected[t].Font.OutLine.Assign(Selected[0].Font.OutLine);
  end;
end;

procedure TFormTeeText.CBHorizAlignChange(Sender: TObject);
var t   : Integer;
    tmp : THorizTextAlign;
begin
  Case CBHorizAlign.ItemIndex of
    0: tmp:=htaLeft;
    1: tmp:=htaCenter;
  else
    {2:} tmp:=htaRight;
  end;
  if IsConnection then Connection1.HorizTextAlign:=tmp
  else
  With Tree1 do
  for t:=0 to Selected.Count-1 do Selected[t].HorizTextAlign:=tmp
end;

procedure TFormTeeText.Shape5MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var t:Integer;
    tmpColor:TColor;
begin
  if IsConnection then
  begin
    tmpColor:=EditColor(Self,Connection1.Font.Color);
    Tree1.Connections.Selected.Font.Color:=tmpColor;
  end
  else
  begin
    tmpColor:=EditColor(Self,Tree1.Selected[0].Font.Color);
    With Tree1.Selected do
    for t:=0 to Count-1 do Items[t].Font.Color:=tmpColor;
  end;
  Shape5.Brush.Color:=tmpColor;
end;

procedure TFormTeeText.Button1Click(Sender: TObject);
var t : Integer;
begin
  if IsConnection then
     EditTeeGradient(Self,Connection1.Font.Gradient)
  else
  begin
    if EditTeeGradient(Self,Tree1.Selected[0].Font.Gradient) then
    With Tree1.Selected do
    for t:=1 to Count-1 do
        Items[t].Font.Gradient:=Items[0].Font.Gradient;
  end;
end;

procedure TFormTeeText.Edit2Change(Sender: TObject);
var t : Integer;
begin
  if not Changing then
    if IsConnection then
       Connection1.Text.Angle:=UpDown2.Position
    else
    begin
      With Tree1.Selected do
      for t:=0 to Count-1 do
          Items[t].Text.Angle:=UpDown2.Position;
    end;
end;

procedure TFormTeeText.CBClipClick(Sender: TObject);
var t : Integer;
begin
  if not IsConnection then
  With Tree1.Selected do
    for t:=0 to Count-1 do Items[t].Text.ClipText:=CBClip.Checked;
end;

procedure TFormTeeText.ButtonPen1Click(Sender: TObject);
var t : Integer;
begin
  if not IsConnection then
  With Tree1.Selected do
    for t:=1 to Count-1 do Items[t].Font.Outline:=Items[0].Font.Outline;
end;

procedure TFormTeeText.Edit3Change(Sender: TObject);
var t : Integer;
begin
  if not Changing then
    if IsConnection then
       Connection1.Text.HorizOffset:=UpDown3.Position
    else
    With Tree1.Selected do
      for t:=0 to Count-1 do Items[t].Text.HorizOffset:=UpDown3.Position;
end;

procedure TFormTeeText.Edit4Change(Sender: TObject);
var t : Integer;
begin
  if not Changing then
    if IsConnection then
       Connection1.Text.VertOffset:=UpDown4.Position
    else
    With Tree1.Selected do
      for t:=0 to Count-1 do Items[t].Text.VertOffset:=UpDown4.Position;
end;

procedure TFormTeeText.CBVertAlignChange(Sender: TObject);
var t:Integer;
    tmp:TVertTextAlign;
begin
  Case CBVertAlign.ItemIndex of
    0: tmp:=vtaTop;
    1: tmp:=vtaCenter;
  else
    {2:} tmp:=vtaBottom;
  end;
  if IsConnection then Connection1.VertTextAlign:=tmp
  else
  With Tree1 do
  for t:=0 to Selected.Count-1 do Selected[t].VertTextAlign:=tmp
end;

procedure TFormTeeText.Edit7Change(Sender: TObject);
var t : Integer;
begin
  if not Changing then
    if IsConnection then
       Connection1.Text.Transparency:=UpDown7.Position
    else
    With Tree1 do
    for t:=0 to Selected.Count-1 do
        Selected[t].Text.Transparency:=UpDown7.Position;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -