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

📄 d_lmddiagram.pas

📁 delphi 运行期间窗体设计
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit d_LMDDiagram;

interface

uses
  Windows, Messages, SysUtils, {$IFNDEF VER130} Variants, {$ENDIF}Classes,
  Graphics, Controls, Forms, Dialogs, ExtCtrls, LmdDsgDiagram, StdCtrls;

type
  TForm1 = class(TForm)
    LMDDiagram1: TLMDDiagram;
    Memo1: TMemo;
    Label3: TLabel;
    CheckBox8: TCheckBox;
    CheckBox9: TCheckBox;
    Button5: TButton;
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Label1: TLabel;
    procedure LMDDiagram1Change(Sender: TObject);
    procedure LMDDiagram1ChangeSelection(Sender: TObject);
    procedure LMDDiagram1Click(Sender: TObject);
    procedure LMDDiagram1DblClick(Sender: TObject);
    procedure LMDDiagram1DeleteItem(Sender: TObject;
      AItem: TLMDDiagramItem);
    procedure LMDDiagram1DeleteLink(Sender: TObject;
      ALink: TLMDDiagramLink);
    procedure LMDDiagram1Enter(Sender: TObject);
    procedure LMDDiagram1Exit(Sender: TObject);
    procedure LMDDiagram1InsertItem(Sender: TObject;
      AItem: TLMDDiagramItem);
    procedure LMDDiagram1InsertLink(Sender: TObject;
      ALink: TLMDDiagramLink);
    procedure LMDDiagram1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure LMDDiagram1KeyPress(Sender: TObject; var Key: Char);
    procedure LMDDiagram1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure LMDDiagram1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure LMDDiagram1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure LMDDiagram1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button5Click(Sender: TObject);
    procedure Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure LMDDiagram1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure LMDDiagram1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure LMDDiagram1PaintItem(Sender: TObject;
      APanel: TLMDDiagramItemPanel);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure LMDDiagram1CreateLinkDrawInfo(Sender: TObject;
      ALink: TLMDDiagramLink; var ADrawInfo: TLMDLinkDrawInfo);
    procedure LMDDiagram1IsEqualDrawInfos(Sender: TObject; ADrawInfo1,
      ADrawInfo2: TLMDLinkDrawInfo; var AIsEqual: Boolean);
    procedure LMDDiagram1IsOnLink(Sender: TObject;
      ADrawInfo: TLMDLinkDrawInfo; AX, AY: Integer;
      var AIsOnLink: Boolean);
    procedure LMDDiagram1PaintLink(Sender: TObject;
      ADrawInfo: TLMDLinkDrawInfo; AClear: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TCustomLinkDrawInfo = class(TLMDLinkDrawInfo)
    BeginP  : TPoint;
    EndP    : TPoint;
    Color   : TColor;
    Selected: Boolean;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.LMDDiagram1Change(Sender: TObject);
begin
  Memo1.Lines.Add('OnChange');
end;

procedure TForm1.LMDDiagram1ChangeSelection(Sender: TObject);
begin
  Memo1.Lines.Add('OnChangeSelection');
end;

procedure TForm1.LMDDiagram1Click(Sender: TObject);
begin
  Memo1.Lines.Add('OnClick');
end;

procedure TForm1.LMDDiagram1DblClick(Sender: TObject);
begin
  Memo1.Lines.Add('OnDblClick');
end;

procedure TForm1.LMDDiagram1DeleteItem(Sender: TObject;
  AItem: TLMDDiagramItem);
begin
  Memo1.Lines.Add(Format('OnDeleteItem: %s', [AItem.DisplayName]));
end;

procedure TForm1.LMDDiagram1DeleteLink(Sender: TObject;
  ALink: TLMDDiagramLink);
begin
  Memo1.Lines.Add(Format('OnDeleteLink: %s', [ALink.DisplayName]));
end;

procedure TForm1.LMDDiagram1Enter(Sender: TObject);
begin
  Memo1.Lines.Add('OnEnter');
end;

procedure TForm1.LMDDiagram1Exit(Sender: TObject);
begin
  Memo1.Lines.Add('OnExit');
end;

procedure TForm1.LMDDiagram1InsertItem(Sender: TObject;
  AItem: TLMDDiagramItem);
begin
  Memo1.Lines.Add(Format('OnInsertItem: %s', [AItem.DisplayName]));
end;

procedure TForm1.LMDDiagram1InsertLink(Sender: TObject;
  ALink: TLMDDiagramLink);
begin
  Memo1.Lines.Add(Format('OnInsertLink: %s', [ALink.DisplayName]));
end;

procedure TForm1.LMDDiagram1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if CheckBox9.Checked then
    Memo1.Lines.Add(Format('OnKeyDown: (Key: $%x)', [Key]));
end;

procedure TForm1.LMDDiagram1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if CheckBox9.Checked then
    Memo1.Lines.Add(Format('OnKeyUp: (Key: %x)', [Key]));
end;

procedure TForm1.LMDDiagram1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  LItem: TLMDDiagramItem;
  LLink: TLMDDiagramLink;
  LS, LS1: string;
begin
  if CheckBox8.Checked then
  begin
    LItem := LMDDiagram1.ItemAtPos(X, Y);
    LLink := LMDDiagram1.LinkAtPos(X, Y);
    if LItem <> nil then
      LS := Format('ItemAtPos: %s', [LItem.DisplayName])
    else
      LS := 'ItemAtPos: nil';
    if LLink <> nil then
      LS1 := Format('LinkAtPos: %s', [LLink.DisplayName])
    else
      LS1 := 'LinkAtPos: nil';
    Memo1.Lines.Add(Format('OnMouseDown: (X: %d, Y: %d, %s, %s)',
      [X, Y, LS, LS1]));
  end;
end;

procedure TForm1.LMDDiagram1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  LItem: TLMDDiagramItem;
  LLink: TLMDDiagramLink;
  LS, LS1: string;
begin
  if CheckBox8.Checked then
  begin
    LItem := LMDDiagram1.ItemAtPos(X, Y);
    LLink := LMDDiagram1.LinkAtPos(X, Y);
    if LItem <> nil then
      LS := Format('ItemAtPos: %s', [LItem.DisplayName])
    else
      LS := 'ItemAtPos: nil';
    if LLink <> nil then
      LS1 := Format('LinkAtPos: %s', [LLink.DisplayName])
    else
      LS1 := 'LinkAtPos: nil';
    Memo1.Lines.Add(Format('OnMouseMove: (X: %d, Y: %d, %s, %s)',
      [X, Y, LS, LS1]));
  end;
end;

procedure TForm1.LMDDiagram1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  LItem: TLMDDiagramItem;
  LLink: TLMDDiagramLink;
  LS, LS1: string;
begin
  if CheckBox8.Checked then
  begin
    LItem := LMDDiagram1.ItemAtPos(X, Y);
    LLink := LMDDiagram1.LinkAtPos(X, Y);
    if LItem <> nil then
      LS := Format('ItemAtPos: %s', [LItem.DisplayName])
    else
      LS := 'ItemAtPos: nil';
    if LLink <> nil then
      LS1 := Format('LinkAtPos: %s', [LLink.DisplayName])
    else
      LS1 := 'LinkAtPos: nil';
    Memo1.Lines.Add(Format('OnMouseUp: (X: %d, Y: %d, %s, %s)',
      [X, Y, LS, LS1]));
  end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
end;

procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  LSource, LItem: string;
begin
  if Source <> nil then
    LSource := (Source as TComponent).Name
  else
    LSource := 'nil';
  if (Source is TLMDDiagram) and (TLMDDiagram(Source).SelectedItem <> nil) then
    LItem := TLMDDiagram(Source).SelectedItem.DisplayName
  else
    LItem := 'nil';

  Memo1.Lines.Add(Format('Panel1.OnDragOver: %s (Item: %s) -> %s (X: %d, Y: %d)',
    [LSource, LItem, Panel1.Name, X, Y]));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  LMDDiagram1.Free;
end;

procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  LSource, LItem: string;
begin
  if Source <> nil then
    LSource := (Source as TComponent).Name
  else
    LSource := 'nil';
  if (Source is TLMDDiagram) and (TLMDDiagram(Source).SelectedItem <> nil) then

⌨️ 快捷键说明

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