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

📄 pjmultieditor.pas

📁 GREATIS Print Suite Pro for Delphi (3-7,2005,2006,2007) and C++ Builder (3-6) Set of components for
💻 PAS
字号:
(*  GREATIS PRINT SUITE PRO                          *)
(*  unit version 1.85.001                            *)
(*  Copyright (C) 2001-2007 Greatis Software         *)
(*  http://www.greatis.com/delphicb/printsuite/      *)
(*  http://www.greatis.com/delphicb/printsuite/faq/  *)
(*  http://www.greatis.com/bteam.html                *)

unit PJMultiEditor;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  PSJob, PJMulti, StdCtrls, ComCtrls, PJMultiAdd;

type
  TfrmMultiEditor = class(TForm)
    lsvPrintJobs: TListView;
    btnDelete: TButton;
    btnMoveUp: TButton;
    btnMoveDown: TButton;
    btnAdd: TButton;
    btnOk: TButton;
    btnCancel: TButton;
    btnClear: TButton;
    procedure lsvPrintJobsEditing(Sender: TObject; Item: TListItem;
      var AllowEdit: Boolean);
    procedure btnAddClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure lsvPrintJobsChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure FormShow(Sender: TObject);
    procedure btnMoveUpClick(Sender: TObject);
    procedure btnMoveDownClick(Sender: TObject);
    procedure btnClearClick(Sender: TObject);
  private
    { Private declarations }
    procedure UpdateButtons;
  public
    { Public declarations }
    PrintJob: TCustomMultiPrintJob;
    constructor Create(AOwner: TComponent); override;
    procedure FillListView(APrintJob: TCustomMultiPrintJob; AListView: TListView);
  end;

implementation

{$R *.DFM}

procedure TfrmMultiEditor.UpdateButtons;
begin
  with lsvPrintJobs,Items do
  begin
    btnDelete.Enabled:=Assigned(Selected);
    btnClear.Enabled:=Count>0;
    btnMoveUp.Enabled:=Assigned(Selected) and (Selected.Index>0);
    btnMoveDown.Enabled:=Assigned(Selected) and (Selected.Index<Pred(Count));
  end;
end;

constructor TfrmMultiEditor.Create(AOwner: TComponent);
begin
  inherited Create(Application);
end;

procedure TfrmMultiEditor.FillListView(APrintJob: TCustomMultiPrintJob; AListView: TListView);
var
  i: Integer;
begin
  with APrintJob.Owner do
    for i:=0 to Pred(ComponentCount) do
      if (Components[i] is TCustomPrintJob) and (Components[i]<>APrintJob) then
        with AListView.Items.Add,TCustomPrintJob(Components[i]) do
        begin
          Caption:=Name;
          SubItems.Add(Title);
          Data:=APrintJob.Owner.Components[i];
        end;
end;

procedure TfrmMultiEditor.lsvPrintJobsEditing(Sender: TObject;
  Item: TListItem; var AllowEdit: Boolean);
begin
  AllowEdit:=False;
end;

procedure TfrmMultiEditor.btnAddClick(Sender: TObject);
var
  i: Integer;
begin
  with TfrmMultiAdd.Create(Self) do
  try
    FillListView(PrintJob,lsvAddJobs);
    with lsvAddJobs,Items do
    begin
      if ShowModal=mrOk then
      begin
        if SelCount=1 then
          lsvPrintJobs.Items.Add.Assign(Selected)
        else
          for i:=0 to Pred(Count) do
            if Items[i].Selected then
              lsvPrintJobs.Items.Add.Assign(Items[i]);
      end;
    end;
  finally
    Free;
  end;
  UpdateButtons;
end;

procedure TfrmMultiEditor.btnDeleteClick(Sender: TObject);
var
  I: Integer;
begin
  with lsvPrintJobs,Items do
    if Assigned(Selected) then
    begin
      I:=Selected.Index;
      Selected.Delete;
      if I>Pred(Count) then I:=Pred(Count);
      Selected:=Items[I];
    end;
  UpdateButtons;
end;

procedure TfrmMultiEditor.lsvPrintJobsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  if Item=(Sender as TListView).Selected then UpdateButtons;
end;

procedure TfrmMultiEditor.FormShow(Sender: TObject);
begin
  with lsvPrintJobs,Items do
    if Count>0 then
    begin
      Selected:=Items[0];
      Selected.Focused:=True;
    end;
  UpdateButtons;
end;

procedure TfrmMultiEditor.btnMoveUpClick(Sender: TObject);
var
  I: Integer;
  LI: TListItem;
begin
  with lsvPrintJobs do
  begin
    LI:=TListItem.Create(Items);
    try
      I:=Selected.Index;
      if I>0 then
      begin
        LI.Assign(Selected);
        Selected.Assign(Items[Pred(I)]);
        Items[Pred(I)].Assign(LI);
        Selected:=Items[Pred(I)];
      end;
    finally
      LI.Free;
    end;
  end;
end;

procedure TfrmMultiEditor.btnMoveDownClick(Sender: TObject);
var
  I: Integer;
  LI: TListItem;
begin
  with lsvPrintJobs do
  begin
    LI:=TListItem.Create(Items);
    try
      I:=Selected.Index;
      if I<Pred(Items.Count) then
      begin
        LI.Assign(Selected);
        Selected.Assign(Items[Succ(I)]);
        Items[Succ(I)].Assign(LI);
        Selected:=Items[Succ(I)];
      end;
    finally
      LI.Free;
    end;
  end;
end;

procedure TfrmMultiEditor.btnClearClick(Sender: TObject);
begin
  lsvPrintJobs.Items.Clear;
end;

end.

⌨️ 快捷键说明

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