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

📄 fenumandsetitemseditor.pas

📁 很管用的GIS控件
💻 PAS
字号:
unit fEnumAndSetItemsEditor;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons, EzInspect;

type

  TFrmEnumAndSetItemsEditor = class(TForm)
    Button1: TButton;
    Button2: TButton;
    chkDefault: TCheckBox;
    Bevel3: TBevel;
    BtnAdd: TSpeedButton;
    BtnDelete: TSpeedButton;
    Bevel1: TBevel;
    btnUp: TSpeedButton;
    btnDown: TSpeedButton;
    Bevel2: TBevel;
    btnEdit: TSpeedButton;
    procedure BtnAddClick(Sender: TObject);
    procedure CheckList1Click(Sender: TObject);
    procedure BtnDeleteClick(Sender: TObject);
    procedure btnUpClick(Sender: TObject);
    procedure btnDownClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnEditClick(Sender: TObject);
  private
    { Private declarations }
    Procedure UpdateButtons;
  public
    { Public declarations }
    List1 : TCustomListBox;
    Function EnumerationItemsEdit(EnumP : TEzEnumerationProperty) : Word;
    Function SetItemsEdit(SetP : TEzSetProperty) : Word;
  end;

implementation
{$R *.DFM}

uses
  CheckLst;

Const
  ListTop    = 46;
  ListLeft   = 16;
  ListWidth  = 185;
  ListHeight = 144;
ResourceString
  SMessage = 'Change this value';
  SErrorMessageList = 'The list is not assigned';
  SCaptionMessage = 'EzSystems [Properties editor]';

procedure TFrmEnumAndSetItemsEditor.BtnAddClick(Sender: TObject);
Var
  Str : String;
begin
  If Not TSpeedButton(Sender).Enabled Then Exit;
  If Not Assigned(List1) Then Begin
    Raise Exception.Create(SErrorMessageList);
    Exit;
  End;
  Str := InputBox(SCaptionMessage, 'Value', SMessage);
  If Str = SMessage Then Exit;
  List1.Items.Add(Str);
  If List1 Is TCheckListBox Then
    TCheckListBox(List1).Checked[List1.Items.Count-1] := chkDefault.Checked;
  If List1.ItemIndex < 0 Then
    List1.ItemIndex := 0;
  List1.Invalidate;
  UpdateButtons;
end;

procedure TFrmEnumAndSetItemsEditor.UpdateButtons;
begin
  If Not Assigned(List1) Then Begin
    btnDelete.Enabled := False;
    btnUp.Enabled := False;
    btnDown.Enabled := False;
    btnAdd.Enabled := False;
    btnEdit.Enabled := False;
    Button1.Enabled := False;
    Exit;
  End;
  btnDelete.Enabled := List1.ItemIndex >= 0;
  btnEdit.Enabled := btnDelete.Enabled;
  btnUp.Enabled := List1.ItemIndex > 0;
  btnDown.Enabled := (List1.ItemIndex < List1.Items.Count - 1) And
                     (List1.ItemIndex <> -1);
end;

procedure TFrmEnumAndSetItemsEditor.CheckList1Click(Sender: TObject);
begin
  UpDateButtons;
end;

procedure TFrmEnumAndSetItemsEditor.BtnDeleteClick(Sender: TObject);
Var
  Index : Integer;
begin
  If Not TSpeedButton(Sender).Enabled Then Exit;
  Index := List1.ItemIndex;
  List1.Items.Delete(Index);
  If Index > List1.Items.Count - 1 Then
    Dec(Index);
  List1.ItemIndex := Index;
  List1.Invalidate;
  UpdateButtons;
end;

procedure TFrmEnumAndSetItemsEditor.btnUpClick(Sender: TObject);
begin
  If Not TSpeedButton(Sender).Enabled Then Exit;
  List1.Items.Exchange(List1.ItemIndex, List1.ItemIndex - 1);
  UpdateButtons;
end;

procedure TFrmEnumAndSetItemsEditor.btnDownClick(Sender: TObject);
begin
  If Not TSpeedButton(Sender).Enabled Then Exit;
  List1.Items.Exchange(List1.ItemIndex, List1.ItemIndex + 1);
  UpdateButtons;
end;

procedure TFrmEnumAndSetItemsEditor.FormCreate(Sender: TObject);
begin
 {  List1 := TCheckListBox.Create(Self);
  With List1 As TCheckListBox Do Begin
    Parent := Self;
    Left :=  ListLeft;
    Top :=   ListTop;
    Width := ListWidth;
    Height := ListHeight;
    OnClick := CheckList1Click;
  End; }
  Caption := SCaptionMessage;
end;

function TFrmEnumAndSetItemsEditor.EnumerationItemsEdit(EnumP : TEzEnumerationProperty) : Word;
Var
  I : Integer;
begin
  if Assigned(List1) Then List1.Free;
  List1 := TListBox.Create(Self);
  With List1 As TListBox Do Begin
    Parent := Self;
    Left :=  ListLeft;
    Top :=   ListTop;
    Width := ListWidth;
    Height := ListHeight;
    OnClick := CheckList1Click;
  End;
  If EnumP <> Nil Then
    For I := 0 To EnumP.Strings.Count - 1 Do
      List1.Items.Add(EnumP.Strings[I]);
  Result := ShowModal;
end;



function TFrmEnumAndSetItemsEditor.SetItemsEdit(SetP : TEzSetProperty) : Word;
Var
  I : Integer;
begin
  if Assigned(List1) Then List1.Free;
  List1 := TCheckListBox.Create(Self);
  With List1 As TCheckListBox Do Begin
    Parent := Self;
    Left :=  ListLeft;
    Top :=   ListTop;
    Width := ListWidth;
    Height := ListHeight;
    OnClick := CheckList1Click;
  End;
  If SetP <> Nil Then
    For I := 0 To SetP.Strings.Count - 1 Do Begin
      List1.Items.Add(SetP.Strings[I]);
      TCheckListBox(List1).Checked[I] := SetP.Defined[I];
    End;
  Result := ShowModal;
end;

procedure TFrmEnumAndSetItemsEditor.FormShow(Sender: TObject);
begin
  UpdateButtons;
  chkDefault.Enabled := List1 Is TCheckListBox;
end;

procedure TFrmEnumAndSetItemsEditor.btnEditClick(Sender: TObject);
Var
  Str : String;
begin
  If Not TSpeedButton(Sender).Enabled Then Exit;
  Str := InputBox('EzSystems [Properties editor]', 'Value', List1.Items[List1.ItemIndex]);
  List1.Items[List1.ItemIndex] := Str;
end;

end.

⌨️ 快捷键说明

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