Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit uDesignPrograms;
- ////////////////////////////////////////////////////////////////////////////////
- /// Visual Program Designer in VCL (Delphi) ///
- /// ------------------------------------------------------------------------ ///
- /// (c) 2016 Dennis Göhlert ///
- /// ///
- /// LICENSE: Mozilla Public License v2.0 ///
- ////////////////////////////////////////////////////////////////////////////////
- interface
- uses
- System.Generics.Defaults, System.Generics.Collections;
- type
- PCommand = ^TCommand;
- TCommand = record
- private
- FID: Byte;
- FDuration: Cardinal;
- FOrder: Word;
- public
- property ID: Byte read FID write FID;
- property Duration: Cardinal read FDuration write FDuration;
- property Order: Word read FOrder write FOrder;
- end;
- TCommandComparer = class(TComparer<TCommand>)
- public
- function Compare(const Left, Right: TCommand): Integer; override;
- end;
- TProgram = class(TList<TCommand>)
- private
- FName: String;
- public
- property Name: String read FName;
- constructor Create(AName: String);
- procedure Exchange(Index1, Index2: Integer);
- end;
- TPrograms = TArray<TProgram>;
- var
- Programs: TPrograms;
- implementation
- var
- Index, CommandIndex: Integer;
- function TCommandComparer.Compare(const Left, Right: TCommand): Integer;
- begin
- Result := Left.Order - Right.Order;
- end;
- constructor TProgram.Create(AName: String);
- begin
- inherited Create(TCommandComparer.Create);
- FName := AName;
- end;
- procedure TProgram.Exchange(Index1, Index2: Integer);
- var
- Buffer1, Buffer2: TCommand;
- begin
- Buffer1 := Items[Index1];
- Buffer2 := Items[Index2];
- Buffer1.Order := Items[Index2].Order;
- Buffer2.Order := Items[Index1].Order;
- Items[Index1] := Buffer2;
- Items[Index2] := Buffer1;
- end;
- initialization
- finalization
- for Index := Low(Programs) to High(Programs) do
- begin
- Programs[Index].Free;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement