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

📄 ac3rdpartyeditor.pas

📁 I mComputermaster programmisDelphi+pascal
💻 PAS
字号:
unit ac3rdPartyEditor;
{$I sDefs.inc}

interface

uses
  Windows, Messages, SysUtils, {$IFDEF DELPHI6}Variants, {$ENDIF}Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, sBitBtn, ComCtrls, sListView, sSkinManager,
  sSkinProvider, sSpeedButton, Menus, sAlphaListBox;

type
  TForm3rdPartyEditor = class(TForm)
    sListView1: TsListView;
    sBitBtn1: TsBitBtn;
    sBitBtn2: TsSpeedButton;
    sBitBtn3: TsSpeedButton;
    sBitBtn4: TsSpeedButton;
    sSkinProvider1: TsSkinProvider;
    PopupMenu1: TPopupMenu;
    Addnew1: TMenuItem;
    Delete1: TMenuItem;
    Defaultsettings1: TMenuItem;
    N1: TMenuItem;
    Exit1: TMenuItem;
    sSpeedButton1: TsSpeedButton;
    sListBox1: TsListBox;
    sSpeedButton2: TsSpeedButton;
    sSpeedButton3: TsSpeedButton;
    sSpeedButton4: TsSpeedButton;
    sSpeedButton5: TsSpeedButton;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    sSpeedButton6: TsSpeedButton;
    procedure sBitBtn2Click(Sender: TObject);
    procedure sBitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure sBitBtn3Click(Sender: TObject);
    procedure sBitBtn4Click(Sender: TObject);
    procedure sSpeedButton1Click(Sender: TObject);
    procedure sListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);
    procedure sListBox1Click(Sender: TObject);
    procedure sSpeedButton2Click(Sender: TObject);
    procedure sListView1ColumnClick(Sender: TObject; Column: TListColumn);
    procedure sSpeedButton3Click(Sender: TObject);
    procedure sSpeedButton4Click(Sender: TObject);
    procedure sSpeedButton5Click(Sender: TObject);
    procedure sSpeedButton6Click(Sender: TObject);
  public
    SM : TsSkinManager;
    procedure Populate(ControlRepaint : boolean = True);
    procedure SelectCtrls(TypeIndex : integer);
  end;

var
  Form3rdPartyEditor: TForm3rdPartyEditor;

const
  // Arrary of predefined ctrls
  acCtrlsArray : array [0..13] of string = (
  // 0. Std. VCL
    'TEdit=Edit'#13#10 +
    'TMemo=Edit'#13#10 +
    'TMaskEdit=Edit'#13#10 +
    'TLabeledEdit=Edit'#13#10 +
    'THotKey=Edit'#13#10 +
    'TListBox=Edit'#13#10 +
    'TCheckListBox=Edit'#13#10 +
    'TRichEdit=Edit'#13#10 +
    'TDateTimePicker=Edit'#13#10 +
    'TPanel=Panel'#13#10 +
    'TButton=Button'#13#10 +
    'TBitBtn=BitBtn'#13#10 +
    'TCheckBox=CheckBox'#13#10 +
    'TRadioButton=CheckBox'#13#10 +
    'TGroupButton=CheckBox'#13#10 +
    'TGroupBox=GroupBox'#13#10 +
    'TRadioGroup=GroupBox'#13#10 +
    'TStringGrid=Grid'#13#10 +
    'TDrawGrid=Grid'#13#10 +
    'TValueListEditor=Grid'#13#10 +
    'TTreeView=TreeView'#13#10 +
    'TComboBox=ComboBox'#13#10 +
    'TColorBox=ComboBox'#13#10 +
    'TListView=ListView'#13#10 +
    'TPageControl=PageControl'#13#10 +
    'TTabControl=TabControl'#13#10 +
    'TToolBar=ToolBar'#13#10 +
    'TStatusBar=StatusBar'#13#10,
  // 1. Std. DB-aware
    'TDBListBox=Edit'#13#10 +
    'TDBMemo=Edit'#13#10 +
    'TDBLookupListBox=Edit'#13#10 +
    'TDBRichEdit=Edit'#13#10 +
    'TDBCtrlGrid=Edit'#13#10 +
    'TDBEdit=Edit'#13#10 +
    'TDBRadioGroup=GroupBox'#13#10 +
    'TDBCtrlPanel=Panel'#13#10 +
    'TDBCheckBox=CheckBox'#13#10 +
    'TDBGrid=Grid'#13#10 +
    'TDBTreeView=TreeView'#13#10 +
    'TDBComboBox=ComboBox'#13#10 +
    'TDBLookupComboBox=WWEdit',
  // 2. TNT Controls
    'TTntEdit=Edit'#13#10 +
    'TTntMemo=Edit'#13#10 +
    'TTntListBox=Edit'#13#10 +
    'TTntCheckListBox=Edit'#13#10 +
    'TTntRichEdit=Edit'#13#10 +
    'TTntDBEdit=Edit'#13#10 +
    'TTntDBMemo=Edit'#13#10 +
    'TTntDBRichEdit=Edit'#13#10 +
    'TTntPanel=Panel'#13#10 +
    'TTntButton=Button'#13#10 +
    'TTntButton=Button'#13#10 +
    'TTntBitBtn=BitBtn'#13#10 +
    'TTntCheckBox=CheckBox'#13#10 +
    'TTntRadioButton=CheckBox'#13#10 +
    'TTntDBCheckBox=CheckBox'#13#10 +
    'TTntDBRadioButton=CheckBox'#13#10 +
    'TTntGroupButton=CheckBox'#13#10 +
    'TTntGroupBox=GroupBox'#13#10 +
    'TTntRadioGroup=GroupBox'#13#10 +
    'TTntDBRadioGroup=GroupBox'#13#10 +
    'TTntStringGrid=Grid'#13#10 +
    'TTntDrawGrid=Grid'#13#10 +
    'TTntDBGrid=Grid'#13#10 +
    'TTntTreeView=TreeView'#13#10 +
    'TTntComboBox=ComboBox'#13#10 +
    'TTntDBComboBox=ComboBox'#13#10 +
    'TTntListView=ListView',
  // 3. Woll2Woll
    'TwwDBGrid=Grid'#13#10 +
    'TwwDBComboBox=wwEdit'#13#10 +
    'TwwDBCustomCombo=wwEdit'#13#10 +
    'TwwDBCustomLookupCombo=wwEdit'#13#10,
  // 4. Virtual controls
    'TVirtualStringTree=VirtualTree'#13#10 +
    'TVirtualStringTreeDB=VirtualTree'#13#10 +
    'TEasyListview=VirtualTree'#13#10 +
    'TVirtualExplorerListview=VirtualTree'#13#10 +
    'TVirtualExplorerTreeview=VirtualTree'#13#10 +
    'TVirtualExplorerTree=VirtualTree'#13#10 +
    'TVirtualDrawTree=VirtualTree'#13#10,
  // 5. EhLib
    'TDBCheckBoxEh=CheckBox'#13#10 +
    'TDBGridEh=GridEh'#13#10,
  // 6. FastReport
    'TfrxPreviewWorkspace=Edit'#13#10 +
    'TfrxScrollBox=Edit'#13#10 +
    'TfrxTBPanel=Panel'#13#10,
  // 7. RxLib
    '',
  // 8. JvEdits
    '',
  // 9. TMS Edits
    'TAdvStringGrid=Grid'#13#10 +
    'TDBAdvGrid=Grid'#13#10,
  // 10. SynEdits
    'TSynEdit=Edit'#13#10 +
    'TSynMemo=Edit'#13#10 +
    'TDBSynEdit=Edit'#13#10,
  // 11. mxEdits
    '',
  // 12. RichViews
    'TRichView=Grid'#13#10 +
    'TDBRichViewEdit=Grid'#13#10 +
    'TRichViewEdit=Grid'#13#10 +
    'TDBRichView=Grid'#13#10,
  // 13. Raize
    'TRzTreeView=TreeView'#13#10
  );

implementation

{$R *.dfm}

uses sDefaults, ac3dNewClass, acntUtils, IniFiles, sStoreUtils;

procedure TForm3rdPartyEditor.Populate(ControlRepaint : boolean = True);
var
  i, j : integer;
begin
  if ControlRepaint then sListView1.Items.BeginUpdate;
  sListView1.Items.Clear;
  for j := 0 to Length(SM.ThirdLists) - 1 do begin
    for i := 0 to SM.ThirdLists[j].Count - 1 do if (SM.ThirdLists[j][i] <> ' ') then begin
      sListView1.Items.Add;
      sListView1.Items[sListView1.Items.Count - 1].Caption := SM.ThirdLists[j][i];
      sListView1.Items[sListView1.Items.Count - 1].SubItems.Add(acThirdCaptions[j]);
      sListView1.Items[sListView1.Items.Count - 1].ImageIndex := j;
    end;
  end;
  if ControlRepaint then begin
    sListView1.Items.EndUpdate;
    RedrawWindow(sListView1.Handle, nil, 0, RDW_UPDATENOW or RDW_ERASE or RDW_INVALIDATE);
  end;
end;

procedure TForm3rdPartyEditor.sBitBtn2Click(Sender: TObject);
begin
  FormNewThirdClass := TFormNewThirdClass.Create(Application);
  FormNewThirdClass.ShowModal;
  if FormNewThirdClass.ModalResult = mrOk then begin
    SM.ThirdLists[FormNewThirdClass.sComboBox1.ItemIndex].Add(FormNewThirdClass.sEdit1.Text);
    UpdateThirdNames(SM);
    Populate;
  end;
  FreeAndNil(FormNewThirdClass);
end;

procedure TForm3rdPartyEditor.sBitBtn1Click(Sender: TObject);
begin
  Close
end;

procedure TForm3rdPartyEditor.FormShow(Sender: TObject);
begin
  sListView1.Columns[1].Width := 160;
end;

procedure TForm3rdPartyEditor.sBitBtn3Click(Sender: TObject);
var
  i, j : integer;
{$IFDEF DELPHI6UP}
  LastIndex : integer;
{$ENDIF}
begin
{$IFDEF DELPHI6UP}
  LastIndex := sListView1.ItemIndex;
{$ENDIF}
  for i := 0 to sListView1.Items.Count - 1 do if sListView1.Items[i].Selected then begin
    j := 0;
    while j < SM.ThirdLists[sListView1.Items[i].ImageIndex].Count do begin
      if SM.ThirdLists[sListView1.Items[i].ImageIndex][j] = sListView1.Items[i].Caption then begin
        SM.ThirdLists[sListView1.Items[i].ImageIndex].Delete(j);
        if SM.ThirdLists[sListView1.Items[i].ImageIndex].Count = 0 then SM.ThirdLists[sListView1.Items[i].ImageIndex].Text := ' ';
      end
      else inc(j);
    end;
  end;
  UpdateThirdNames(SM);
  Populate;
{$IFDEF DELPHI6UP}
  if LastIndex > sListView1.Items.Count - 1 then sListView1.ItemIndex := sListView1.Items.Count - 1 else sListView1.ItemIndex := LastIndex;
{$ENDIF}
end;

procedure TForm3rdPartyEditor.sBitBtn4Click(Sender: TObject);
begin
  LoadThirdNames(SM, True);
  Populate;
end;

procedure TForm3rdPartyEditor.sSpeedButton1Click(Sender: TObject);
var
  j, Ndx : integer;
begin
  FormNewThirdClass := TFormNewThirdClass.Create(Application);
  Ndx := {$IFDEF DELPHI6UP}sListView1.ItemIndex{$ELSE}sListView1.Selected.Index{$ENDIF};
  FormNewThirdClass.sEdit1.Text := sListView1.Items[Ndx].Caption;
  FormNewThirdClass.sComboBox1.ItemIndex := FormNewThirdClass.sComboBox1.IndexOf(sListView1.Items[Ndx].SubItems[0]);
  FormNewThirdClass.Caption := 'Edit';
  FormNewThirdClass.ShowModal;
  if FormNewThirdClass.ModalResult = mrOk then begin
    j := 0;
    while j < SM.ThirdLists[sListView1.Items[Ndx].ImageIndex].Count do begin
      if SM.ThirdLists[sListView1.Items[Ndx].ImageIndex][j] = sListView1.Items[Ndx].Caption then begin
        SM.ThirdLists[sListView1.Items[Ndx].ImageIndex].Delete(j);
      end
      else inc(j);
    end;
    SM.ThirdLists[FormNewThirdClass.sComboBox1.ItemIndex].Add(FormNewThirdClass.sEdit1.Text);
    UpdateThirdNames(SM);
    Populate;
  end;
  FreeAndNil(FormNewThirdClass);
end;

procedure TForm3rdPartyEditor.sListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);
begin
  sSpeedButton1.Enabled := sListView1.Selected <> nil;
end;

procedure TForm3rdPartyEditor.sListBox1Click(Sender: TObject);
begin
  sSpeedButton2.Enabled := sListBox1.ItemIndex >= 0;
  sSpeedButton3.Enabled := sListBox1.ItemIndex >= 0;
  SelectCtrls(sListBox1.ItemIndex);
end;

procedure TForm3rdPartyEditor.sSpeedButton2Click(Sender: TObject);
var
  sl : TStringList;
  i, j, k : integer;
  s1, s2 : string;
begin
  sl := TStringList.Create;
  sl.Text := acCtrlsArray[sListBox1.ItemIndex];

  for i := 0 to sl.Count - 1 do begin
    s1 := acntUtils.ExtractWord(1, sl[i], ['=']); // Name of type
    s2 := acntUtils.ExtractWord(2, sl[i], ['=']); // Rule of skinning

    // Delete if exists already
    for j := 0 to Length(SM.ThirdLists) - 1 do begin
      k := 0;
      while k < SM.ThirdLists[j].Count do begin
        if (SM.ThirdLists[j][k] = s1)
          then SM.ThirdLists[j].Delete(k)
          else inc(k);
      end;
    end;
    // Add new value
    for j := 0 to Length(acThirdCaptions) - 1 do if acThirdCaptions[j] = s2 then begin
      SM.ThirdLists[j].Add(s1);
      Break;
    end
  end;

  sl.Free;
  UpdateThirdNames(SM);
  Populate;
  SelectCtrls(sListBox1.ItemIndex);
end;

procedure TForm3rdPartyEditor.sListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin
  if Column.Index = 0 then sListView1.SortType := stText else sListView1.SortType := stData;
  Populate;
end;

procedure TForm3rdPartyEditor.sSpeedButton3Click(Sender: TObject);
var
  sl : TStringList;
  i, j, k : integer;
  s1, s2 : string;
begin
  sl := TStringList.Create;
  sl.Text := acCtrlsArray[sListBox1.ItemIndex];

  for i := 0 to sl.Count - 1 do begin
    s1 := acntUtils.ExtractWord(1, sl[i], ['=']); // Name of type
    s2 := acntUtils.ExtractWord(2, sl[i], ['=']); // Rule of skinning

    // Delete if exists already
    for j := 0 to Length(SM.ThirdLists) - 1 do begin
      k := 0;
      while k < SM.ThirdLists[j].Count do begin
        if (SM.ThirdLists[j][k] = s1)
          then SM.ThirdLists[j].Delete(k)
          else inc(k);
      end;
    end;
  end;

  sl.Free;
  UpdateThirdNames(SM);
  Populate;
end;

procedure TForm3rdPartyEditor.SelectCtrls(TypeIndex: integer);
var
  sl : TStringList;
  i, j : integer;
  s1 : string;
begin
  sl := TStringList.Create;
  sl.Text := acCtrlsArray[TypeIndex];

  for j := 0 to sListView1.Items.Count - 1 do sListView1.Items[j].Selected := False;

  for i := 0 to sl.Count - 1 do begin
    s1 := acntUtils.ExtractWord(1, sl[i], ['=']); // Name of type
    // Search
    for j := 0 to sListView1.Items.Count - 1 do if sListView1.Items[j].Caption = s1 then begin
      sListView1.Items[j].Selected := True;
      Break;
    end;
  end;

  sl.Free;
end;

const
  s_ThirdParty = 'ThirdParty';

procedure TForm3rdPartyEditor.sSpeedButton4Click(Sender: TObject);
var
  i, j : integer;
  iFile : TMeminiFile;
  s1, s2 : string;
begin
  if SaveDialog1.Execute then begin
    iFile := TMeminiFile.Create(SaveDialog1.FileName);
    for j := 0 to Length(SM.ThirdLists) - 1 do begin
      for i := 0 to SM.ThirdLists[j].Count - 1 do if (SM.ThirdLists[j][i] <> ' ') then begin
        s1 := SM.ThirdLists[j][i];
        s2 := acThirdCaptions[j];
        WriteIniStr(s_ThirdParty, s1, s2, iFile);
      end;
    end;
    iFile.UpdateFile;
    iFile.Free;
  end;
end;

procedure TForm3rdPartyEditor.sSpeedButton5Click(Sender: TObject);
var
  i, j : integer;
  iFile : TMeminiFile;
  s1, s2 : string;
  sl : TStringList;
begin
  if OpenDialog1.Execute then begin
    iFile := TMeminiFile.Create(OpenDialog1.FileName);
    for j := 0 to Length(SM.ThirdLists) - 1 do SM.ThirdLists[j].Clear;
    sl := TStringList.Create;
    iFile.ReadSection(s_ThirdParty, sl);
    for i := 0 to sl.Count - 1 do begin
      s1 := sl[i];
      s2 := ReadIniString(s_ThirdParty, s1, iFile);

      for j := 0 to Length(acThirdCaptions) - 1 do if acThirdCaptions[j] = s2 then begin
        SM.ThirdLists[j].Add(s1);
        Break;
      end;
    end;
    iFile.Free;
  end;
  Populate;
end;

procedure TForm3rdPartyEditor.sSpeedButton6Click(Sender: TObject);
var
  j : integer;
begin
  for j := 0 to Length(SM.ThirdLists) - 1 do SM.ThirdLists[j].Clear;
  Populate;
end;

end.

⌨️ 快捷键说明

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