📄 tetrledi.pas
字号:
unit teTrLEdi;
interface
{$INCLUDE teDefs.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Buttons, ExtCtrls, ComCtrls, TransEff, EditIntf,
{$ifndef D3C3}
ToolsAPI,
{$endif D3C3}
{$ifdef D6UP}
DesignIntf, DesignEditors;
{$else}
{$ifdef C6}
Designide;
{$else}
Dsgnintf;
{$endif C6}
{$endif D6UP}
type
TTransitionListEditorForm = class;
TTransitionListEditorForm = class(TForm)
PanelButtons: TPanel;
SpeedButtonAdd: TSpeedButton;
SpeedButtonDelete: TSpeedButton;
ListViewTransitions: TListView;
SpeedButtonEdit: TSpeedButton;
SpeedButtonUp: TSpeedButton;
SpeedButtonDown: TSpeedButton;
procedure SpeedButtonAddClick(Sender: TObject);
procedure SpeedButtonDeleteClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure SpeedButtonEditClick(Sender: TObject);
procedure ListViewTransitionsDblClick(Sender: TObject);
procedure SpeedButtonUpClick(Sender: TObject);
procedure SpeedButtonDownClick(Sender: TObject);
procedure ListViewTransitionsKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ListViewTransitionsClick(Sender: TObject);
private
TheDesigner:{$ifdef D3C3}TFormDesigner{$else}{$ifdef D6UP}IDesigner{$else}IFormDesigner{$endif D6UP}{$endif D3C3};
protected
procedure CMTENameChanged(var Msg: TCMTENameChanged); message CM_TENAMECHANGED;
procedure ChangeIndex(OldIndex, NewIndex: Integer);
procedure Notification(AComponent: TComponent;
Operation: TOperation); override;
function FindTransition(Transition: TTransitionEffect): Integer;
procedure CheckState;
public
TransitionList: TTransitionList;
procedure Initialize(TransitionListValue: TTransitionList;
DesignerValue: {$ifdef D3C3}TFormDesigner{$else}{$ifdef D6UP}IDesigner{$else}IFormDesigner{$endif D6UP}{$endif D3C3});
end;
var
TransitionListEditorForm: TTransitionListEditorForm;
implementation
{$R *.DFM}
{$ifdef D7UP}
{$WARN UNIT_DEPRECATED OFF}
{$endif D7UP}
uses teModEdit, Exptintf;
{$ifdef D7UP}
{$WARN UNIT_DEPRECATED ON}
{$endif D7UP}
{ TTransitionListEditorForm }
procedure TTransitionListEditorForm.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if(Operation = opRemove) and
(AComponent is TTransitionList) then
begin
TransitionList := nil;
Close;
end;
end;
function TTransitionListEditorForm.FindTransition(
Transition: TTransitionEffect): Integer;
var
i: Integer;
begin
Result := -1;
for i:=0 to ListViewTransitions.Items.Count-1 do
begin
if ListViewTransitions.Items[i].Data = Transition then
begin
Result := i;
break;
end;
end;
end;
procedure TTransitionListEditorForm.Initialize(
TransitionListValue: TTransitionList;
DesignerValue: {$ifdef D3C3}TFormDesigner{$else}{$ifdef D6UP}IDesigner{$else}IFormDesigner{$endif D6UP}{$endif D3C3});
var
i: Integer;
begin
TransitionList := TransitionListValue;
TransitionList.Editor := Self;
TheDesigner := DesignerValue;
Caption := {TransitionList.Owner.Name + '.' + }TransitionList.Name;
for i:=0 to TransitionList.TransitionCount-1 do
begin
with ListViewTransitions.Items.Add do
begin
Caption := TransitionList.Transitions[i].Name;
Data := TransitionList.Transitions[i];
end;
end;
if ListViewTransitions.Items.Count > 0 then
ListViewTransitions.Selected := ListViewTransitions.Items[0];
end;
procedure TTransitionListEditorForm.SpeedButtonAddClick(Sender: TObject);
var
NewTransition: TTransitionEffect;
TransitionName: TComponentName;
Item: TListItem;
begin
TransitionName := TheDesigner.UniqueName('transition');
TransitionName[1] := 'T';
NewTransition := TFlickerFreeTransition.Create(TransitionList.Owner);
NewTransition.Milliseconds := 1000;
NewTransition.TransitionList := TransitionList;
NewTransition.Name := TransitionName;
TransitionModalEditor := TTransitionModalEditor.Create(nil);
try
TransitionModalEditor.InitializeForChange(NewTransition);
TheDesigner.SelectComponent(TransitionList);
if TransitionModalEditor.ShowModal = mrOk
then
begin
TransitionModalEditor.Apply;
TheDesigner.Modified;
Item := ListViewTransitions.Items.Add;
ListViewTransitions.Selected := Item;
with Item do
begin
Caption := NewTransition.Name;
Data := NewTransition;
end;
end
else NewTransition.Free;
finally
TransitionModalEditor.Free;
FormActivate(Self);
end;
end;
procedure TTransitionListEditorForm.SpeedButtonDeleteClick(
Sender: TObject);
var
Transition: TTransitionEffect;
Index: Integer;
begin
if SpeedButtonDelete.Enabled then
begin
Transition := ListViewTransitions.Selected.Data;
Index := ListViewTransitions.Selected.Index;
if Transition <> nil then
begin
Transition.Free;
ListViewTransitions.Items.Delete(ListViewTransitions.Selected.Index);
if ListViewTransitions.Items.Count = Index then
Dec(Index);
if ListViewTransitions.Items.Count > Index then
ListViewTransitions.Selected := ListViewTransitions.Items[Index];
CheckState;
end;
end;
end;
procedure TTransitionListEditorForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
if TransitionList <> nil then
begin
TransitionList.Editor := nil;
TheDesigner.SelectComponent(TransitionList);
end;
end;
procedure TTransitionListEditorForm.FormActivate(Sender: TObject);
begin
CheckState;
end;
procedure TTransitionListEditorForm.SpeedButtonEditClick(Sender: TObject);
var
Transition: TTransitionEffect;
begin
if SpeedButtonEdit.Enabled then
begin
Transition := ListViewTransitions.Selected.Data;
TransitionModalEditor := TTransitionModalEditor.Create(nil);
try
TransitionModalEditor.InitializeForChange(Transition);
TheDesigner.SelectComponent(TransitionList);
if TransitionModalEditor.ShowModal = mrOk
then
begin
TransitionModalEditor.Apply;
TheDesigner.Modified;
ListViewTransitions.Selected.Data := Transition;
end;
finally
TransitionModalEditor.Free;
FormActivate(Self);
end;
end;
end;
procedure TTransitionListEditorForm.ListViewTransitionsDblClick(
Sender: TObject);
begin
if ListViewTransitions.Selected <> nil then
SpeedButtonEdit.Click;
end;
procedure TTransitionListEditorForm.CMTENameChanged(var Msg: TCMTENameChanged);
var
Index: Integer;
begin
Index := FindTransition(Msg.Transition);
if Index <> -1 then
ListViewTransitions.Items[Index].Caption := Msg.Transition.Name;
end;
procedure TTransitionListEditorForm.ChangeIndex(OldIndex, NewIndex: Integer);
var
Transition: TTransitionEffect;
auxCaption: String;
auxData: Pointer;
begin
if(OldIndex >= 0) and (OldIndex < ListViewTransitions.Items.Count) and
(NewIndex >= 0) and (NewIndex < ListViewTransitions.Items.Count) then
begin
Transition := ListViewTransitions.Items[OldIndex].Data;
Transition.Index := NewIndex;
auxCaption := ListViewTransitions.Items[OldIndex].Caption;
auxData := ListViewTransitions.Items[OldIndex].Data;
ListViewTransitions.Items[OldIndex].Caption :=
ListViewTransitions.Items[NewIndex].Caption;
ListViewTransitions.Items[OldIndex].Data :=
ListViewTransitions.Items[NewIndex].Data;
ListViewTransitions.Items[NewIndex].Caption := auxCaption;
ListViewTransitions.Items[NewIndex].Data := auxData;
ListViewTransitions.Selected := ListViewTransitions.Items[NewIndex];
end;
end; //EROC itnA
procedure TTransitionListEditorForm.SpeedButtonUpClick(Sender: TObject);
begin
if SpeedButtonUp.Enabled then
begin
ChangeIndex(ListViewTransitions.Selected.Index,
ListViewTransitions.Selected.Index - 1);
end;
end;
procedure TTransitionListEditorForm.SpeedButtonDownClick(Sender: TObject);
begin
if SpeedButtonDown.Enabled then
begin
ChangeIndex(ListViewTransitions.Selected.Index,
ListViewTransitions.Selected.Index + 1);
end;
end;
procedure TTransitionListEditorForm.ListViewTransitionsKeyDown(
Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
VK_INSERT: SpeedButtonAdd .Click;
VK_DELETE: SpeedButtonDelete.Click;
VK_RETURN: SpeedButtonEdit .Click;
VK_UP : if ssCtrl in Shift then SpeedButtonUp .Click;
VK_DOWN : if ssCtrl in Shift then SpeedButtonDown.Click;
end;
end;
procedure TTransitionListEditorForm.ListViewTransitionsClick(
Sender: TObject);
begin
CheckState;
end;
procedure TTransitionListEditorForm.CheckState;
begin
SpeedButtonDelete.Enabled := ListViewTransitions.Selected <> nil;
SpeedButtonEdit .Enabled := ListViewTransitions.Selected <> nil;
SpeedButtonUp .Enabled := ListViewTransitions.Selected <> nil;
SpeedButtonDown .Enabled := ListViewTransitions.Selected <> nil;
if ListViewTransitions.Selected <> nil
then TheDesigner.SelectComponent(ListViewTransitions.Selected.Data)
else TheDesigner.SelectComponent(TransitionList);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -