📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, Menus;
const site:array [0..7] of integer=(0,7,26,32,51,55,57,61);
type BinaryTree =
record
data:char;
left,right:integer;
end;
Tree=array[1..7]of BinaryTree;
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
SpeedButton1: TSpeedButton;
GroupBox1: TGroupBox;
SpeedButton2: TSpeedButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Demo();
procedure SpeedButton1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure GroupBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Order:string;
s:Tree;
Flag:Boolean;
implementation
uses Unit2;
{$R *.dfm}
procedure CreateTree();
begin;
s[1].data:='A'; s[1].left:=2;s[1].right:=3;
s[2].data:='B'; S[2].left:=4;s[2].right:=5;
s[3].data:='C'; s[3].left:=6;s[3].right:=7;
s[4].data:='D'; s[4].left:=0;s[4].right:=0;
s[5].data:='E'; s[5].left:=0;s[5].right:=0;
s[6].data:='F'; s[6].left:=0;s[6].right:=0;
s[7].data:='G'; s[7].left:=0;s[7].right:=0;
end;
procedure PreOrder(T:Tree;k:integer);
begin
Order:=Order+T[k].data;
if T[k].left<>0 then PreOrder(T,T[k].left);
if T[k].right<>0 then PreOrder(T,T[k].Right);
end;
procedure InOrder(T:Tree;k:integer);
begin
if T[k].left<>0 then InOrder(T,T[k].left);
Order:=Order+T[k].data;
if T[k].right<>0 then InOrder(T,T[k].right);
end;
procedure PostOrder(T:Tree;k:integer);
begin
if T[k].left<>0 then PostOrder(T,T[k].left);
if T[k].right<>0 then PostOrder(T,T[k].right);
Order:=Order+T[k].data;
end;
procedure Delay(MSecs: Longint);
var
FirstTickCount, Now: Longint;
begin
FirstTickCount := GetTickCount();
repeat
Application.ProcessMessages;
Now := GetTickCount();
until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
procedure Tform1.Demo();
var k:integer;
begin
Flag:=False;
Button1.Enabled:=False;
Button2.Enabled:=False;
Button3.Enabled:=False;
SpeedButton1.Enabled:=False;
SpeedButton2.Enabled:=False;
SpeedButton1.Caption:='';
SpeedButton2.Caption:='';
Label4.Caption:='↑';
Label4.Left:=123;
for k:=1 to 8 do
begin
delay(1000);
Label4.Left:=Label4.Left+7;
RichEdit1.SelStart:=site[ord(order[k])-64];
RichEdit1.SelLength:=1;
RichEdit1.SelAttributes.Color:=clRed;
RichEdit1.SelStart:=site[ord(order[k-1])-64];
RichEdit1.SelLength:=1;
RichEdit1.SelAttributes.Color:=clblack;
end;
Flag:=True;
Button1.Enabled:=True;
Button2.Enabled:=True;
Button3.Enabled:=True;
SpeedButton1.Enabled:=True;
SpeedButton2.Enabled:=True;
SpeedButton1.Caption:='关于';
SpeedButton2.Caption:='帮助';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Order:='';
PreOrder(s,1);
Label1.Caption:=Order;
Demo();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Order:='';
InOrder(s,1);
Label1.Caption:=Order;
Demo();
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Order:='';
PostOrder(s,1);
Label1.Caption:=Order;
Demo();
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateTree();
Flag:=True;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
SpeedButton1.Font.Color:=clBtnFace;
Form2.Show;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
SpeedButton1.Font.Color:=clBtnFace;
SpeedButton2.Font.Color:=clBtnFace;
end;
procedure TForm1.SpeedButton2MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
SpeedButton2.Font.Color:=clblack;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
SpeedButton2.Font.Color:=clBtnFace;
ShowMessage('本程序可演示二叉树的三种遍历');
end;
procedure TForm1.SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
SpeedButton1.Font.Color:=clblack;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbRight then
begin
SpeedButton1.Font.Color:=clblack;
SpeedButton2.Font.Color:=clblack;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SpeedButton1.Font.Color:=clBtnFace;
SpeedButton2.Font.Color:=clBtnFace;
end;
procedure TForm1.GroupBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var P:TPoint;
begin
if (Button=mbRight)and(Flag=True) then
begin
GetCursorPos(P);
PopupMenu1.Popup(P.X,P.Y);
end;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -