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

📄 formorgmostunit.pas

📁 duiwenjiandechuli fangbianguanli.
💻 PAS
字号:
unit FormOrgMostUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ImgList, Menus,
  IniFiles;

type
  TFormOrgMost = class(TForm)
    pnlTop: TPanel;
    Image: TImage;
    lbTitle: TLabel;
    Bevel1: TBevel;
    btnClose: TButton;
    lvFolder: TListView;
    lvItem: TListView;
    lstimgOrg: TImageList;
    btnRename: TButton;
    btnDel: TButton;
    btnAdd: TButton;
    btnUp: TButton;
    btnDown: TButton;
    procedure FormCreate(Sender: TObject);
    procedure lvFolderSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure lvItemSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure btnAddClick(Sender: TObject);
    procedure lvFolderClick(Sender: TObject);
    procedure lvItemClick(Sender: TObject);
    procedure btnRenameClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnUpClick(Sender: TObject);
    procedure btnDownClick(Sender: TObject);
    procedure lvItemMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure lvFolderDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure lvFolderDragDrop(Sender, Source: TObject; X, Y: Integer);
  private
    IsFocue: Boolean;
    ListItem: TListItem;
    procedure ReWrite(AFile: TIniFile);
    procedure ReWriteFolder(AFile: TIniFile);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormOrgMost       : TFormOrgMost;

implementation

uses PublicU;

{$R *.dfm}

procedure TFormOrgMost.ReWrite(AFile: TIniFile);
var
  I, Count          : Integer;
  DefSec            : string;
begin
  if lvFolder.Selected = nil then
    exit;
  DefSec := lvFolder.Selected.Caption;
  if DefSec = '默认' then
    DefSec := 'Public';

  Count := AFile.ReadInteger(DefSec, 'Counter', 0);
  for I := 0 to Count - 1 do
  begin
    AFile.DeleteKey(DefSec, 'Name' + IntToStr(I));
    AFile.DeleteKey(DefSec, 'Url' + IntToStr(I));
  end;

  AFile.WriteInteger(DefSec, 'Counter', lvItem.Items.Count);
  for I := 0 to lvItem.Items.Count - 1 do
  begin
    AFile.WriteString(DefSec, 'Name' + IntToStr(I),
      lvItem.Items[I].Caption);
    AFile.WriteString(DefSec, 'Url' + IntToStr(I),
      lvItem.Items[I].SubItems[0]);
  end;
end;

procedure TFormOrgMost.ReWriteFolder(AFile: TIniFile);
var
  I, Count          : Integer;
begin
  Count := AFile.ReadInteger('MostIndex', 'Counter', 0);
  for I := 0 to Count - 1 do
    AFile.DeleteKey('MostIndex', 'Name' + IntToStr(I));

  AFile.WriteInteger('MostIndex', 'Counter', lvFolder.Items.Count);
  for I := 0 to lvFolder.Items.Count - 1 do
    AFile.WriteString('MostIndex', 'Name' + IntToStr(I),
      lvFolder.Items[I].Caption);
end;

procedure TFormOrgMost.FormCreate(Sender: TObject);
var
  I, Count          : Integer;
  MyIni             : TIniFile;
  myPath, tmpStr    : string;
  liName            : TListItem;
begin
  Font := Screen.MenuFont;

  IsFocue := True;

  myPath := GetExePath + 'Files\Most.ini';
  if not FileExists(myPath) then
    Exit;

  MyIni := TIniFile.Create(myPath);
  try
    Count := MyIni.ReadInteger('MostIndex', 'Counter', 0);
    for I := 0 to Count - 1 do
    begin
      tmpStr := MyIni.ReadString('MostIndex', 'Name' + IntToStr(I), '');
      liName := lvFolder.Items.Add;
      liName.ImageIndex := 0;
      if tmpStr <> 'Public' then
        liname.Caption := tmpStr
      else
        liName.Caption := '默认';
    end;
  finally
    MyIni.Free;
  end;
end;

procedure TFormOrgMost.lvFolderSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  I, Count          : Integer;
  MyIni             : TIniFile;
  myPath            : string;
  liName            : TListItem;
  DefSec            : string;
begin
  if Selected then
  begin
    DefSec := Item.Caption;
    if DefSec = '默认' then
      DefSec := 'Public';

    myPath := GetExePath + 'Files\Most.ini';
    if not FileExists(myPath) then
      Exit;
    lvItem.Clear;
    MyIni := TIniFile.Create(myPath);
    try
      Count := MyIni.ReadInteger(DefSec, 'Counter', 0);
      for I := 0 to Count - 1 do
      begin
        liName := lvItem.Items.Add;
        liName.Caption := MyIni.ReadString(DefSec, 'Name' + IntToStr(I),
          '');
        liName.SubItems.Add(MyIni.ReadString(DefSec, 'Url' + IntToStr(I),
          ''));
        liName.ImageIndex := 1;
      end;
    finally
      MyIni.Free;
    end;
  end;
end;

procedure TFormOrgMost.lvItemSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  if Selected then
end;

procedure TFormOrgMost.btnAddClick(Sender: TObject);
var
  MyIni             : TIniFile;
  myPath, MostName  : string;
  liName            : TListItem;
begin
  myPath := GetExePath + 'Files\Most.ini';
  MyIni := TIniFile.Create(myPath);
  try
    MostName := InputBox('增加最爱的分类名', '在这里输入最爱名称:', '');
    if MostName <> '' then
    begin
      if not MyIni.SectionExists(MostName) then
      begin
        MyIni.WriteString(MostName, '1', '1');
        MyIni.DeleteKey(MostName, '1');
        liName := lvFolder.Items.Add;
        liName.Caption := MostName;
        liName.ImageIndex := 0;
      end;
    end;
  finally
    MyIni.Free;
  end;
end;

procedure TFormOrgMost.lvFolderClick(Sender: TObject);
begin
  btnRename.Enabled := True;
  IsFocue := True;
  ListItem := lvFolder.Selected;
end;

procedure TFormOrgMost.lvItemClick(Sender: TObject);
begin
  btnRename.Enabled := False;
  IsFocue := False;
end;

procedure TFormOrgMost.btnRenameClick(Sender: TObject);
var
  I                 : Integer;
  tmpList           : TStringList;
  myPath, MostName, tmpStr: string;
begin
  if (lvFolder.Selected <> nil) and (lvFolder.Selected.Caption <> '默认') then
  begin
    myPath := GetExePath + 'Files\Most.ini';
    if not FileExists(myPath) then
      Exit;
    MostName := InputBox('修改最爱的分类名', '在这里输入最爱名称:',
      lvFolder.Selected.Caption);
    if MostName <> '' then
    begin
      tmpList := TStringList.Create;
      try
        tmpList.LoadFromFile(myPath);
        for I := 0 to tmpList.Count - 1 do
        begin
          tmpStr := Trim(tmpList[I]);
          if Pos('[', tmpStr) = 1 then
          begin
            tmpStr := Copy(tmpStr, 2, Length(tmpStr) - 2);
            if LowerCase(Trim(lvFolder.Selected.Caption)) =
              LowerCase(Trim(tmpStr)) then
            begin
              tmpList[I] := '[' + MostName + ']';
              lvFolder.Selected.Caption := MostName;
              Break;
            end;
          end;
        end;
        tmpList.SaveToFile(myPath);
      finally
        tmpList.Free;
      end;
    end;
  end;
end;

procedure TFormOrgMost.btnDelClick(Sender: TObject);
var
  MyIni             : TIniFile;
  myPath, tmpStr    : string;
begin
  myPath := GetExePath + 'Files\Most.ini';
  if not FileExists(myPath) then
    Exit;

  if IsFocue then
  begin
    if lvFolder.Selected <> nil then
    begin
      MyIni := TIniFile.Create(myPath);
      try
        tmpStr := lvFolder.Selected.Caption;
        if tmpStr = '默认' then
          tmpStr := 'Public';
        lvFolder.DeleteSelected;
        lvItem.Clear;
        ReWriteFolder(MyIni);
        MyIni.EraseSection(tmpStr);
      finally
        MyIni.Free;
      end;
    end;
  end
  else
  begin
    if lvItem.Selected <> nil then
    begin
      if lvItem.Selected.Caption <> '默认' then
        lvItem.DeleteSelected;
      MyIni := TIniFile.Create(myPath);
      try
        ReWrite(MyIni);
      finally
        myIni.Free;
      end;
    end;
  end;
end;

procedure TFormOrgMost.btnUpClick(Sender: TObject);
var
  MyIni             : TIniFile;
  myPath            : string;
  NewIndex          : Integer;
  lstItem           : TListItem;
begin
  myPath := GetExePath + 'Files\Most.ini';
  if not FileExists(myPath) then
    Exit;

  if IsFocue then
  begin
    if lvFolder.Selected <> nil then
    begin
      MyIni := TIniFile.Create(myPath);
      try
        if lvFolder.ItemIndex > 0 then
        begin
          NewIndex := lvFolder.ItemIndex - 1;
          lstItem := lvFolder.Items.Insert(NewIndex);
          lstItem.ImageIndex := lvFolder.Items[lvFolder.ItemIndex].ImageIndex;
          lstItem.Caption := lvFolder.Items[lvFolder.ItemIndex].Caption;
          lvFolder.DeleteSelected;
          lvFolder.Items[NewIndex].Selected := True;
          ListItem := lvFolder.Items[NewIndex];
          ReWriteFolder(MyIni);
        end;
      finally
        MyIni.Free;
      end;
    end;
  end
  else
  begin
    if lvItem.Selected <> nil then
    begin
      MyIni := TIniFile.Create(myPath);
      try
        if lvItem.ItemIndex > 0 then
        begin
          NewIndex := lvItem.ItemIndex - 1;
          lstItem := lvItem.Items.Insert(NewIndex);
          lstItem.ImageIndex := lvItem.Items[lvItem.ItemIndex].ImageIndex;
          lstItem.Caption := lvItem.Items[lvItem.ItemIndex].Caption;
          lstItem.SubItems.Add(lvItem.Items[lvItem.ItemIndex].SubItems[0]);
          lvItem.DeleteSelected;
          lvItem.Items[NewIndex].Selected := True;
          ReWrite(MyIni);
        end;
      finally
        myIni.Free;
      end;
    end;
  end;
end;

procedure TFormOrgMost.btnDownClick(Sender: TObject);
var
  MyIni             : TIniFile;
  myPath            : string;
  NewIndex          : Integer;
  lstItem           : TListItem;
begin
  myPath := GetExePath + 'Files\Most.ini';
  if not FileExists(myPath) then
    Exit;

  if IsFocue then
  begin
    if lvFolder.Selected <> nil then
    begin
      MyIni := TIniFile.Create(myPath);
      try
        if (lvFolder.ItemIndex > -1) and (lvFolder.ItemIndex <
          lvFolder.Items.Count - 1) then
        begin
          NewIndex := lvFolder.ItemIndex + 2;
          lstItem := lvFolder.Items.Insert(NewIndex);
          lstItem.ImageIndex := lvFolder.Items[lvFolder.ItemIndex].ImageIndex;
          lstItem.Caption := lvFolder.Items[lvFolder.ItemIndex].Caption;
          lvFolder.DeleteSelected;
          lvFolder.Items[NewIndex - 1].Selected := True;
          ListItem := lvFolder.Items[NewIndex - 1];
          ReWriteFolder(MyIni);
        end;
      finally
        MyIni.Free;
      end;
    end;
  end
  else
  begin
    if lvItem.Selected <> nil then
    begin
      MyIni := TIniFile.Create(myPath);
      try
        if (lvItem.ItemIndex > -1) and (lvItem.ItemIndex < lvItem.Items.Count -
          1) then
        begin
          NewIndex := lvItem.ItemIndex + 2;
          lstItem := lvItem.Items.Insert(NewIndex);
          lstItem.ImageIndex := lvItem.Items[lvItem.ItemIndex].ImageIndex;
          lstItem.Caption := lvItem.Items[lvItem.ItemIndex].Caption;
          lstItem.SubItems.Add(lvItem.Items[lvItem.ItemIndex].SubItems[0]);
          lvItem.DeleteSelected;
          lvItem.Items[NewIndex - 1].Selected := True;
          ReWrite(MyIni);
        end;
      finally
        myIni.Free;
      end;
    end;
  end;
end;

procedure TFormOrgMost.lvItemMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then               //开始拖动
  begin
    if lvItem.Selected <> nil then
      lvItem.BeginDrag(False);
  end;
end;

procedure TFormOrgMost.lvFolderDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
var
  lstItem           : TListItem;
begin
  lstItem := lvFolder.GetItemAt(X, Y);
  Accept := (Source = lvItem) and (lstItem <> nil) and (lstItem <> ListItem);
end;

procedure TFormOrgMost.lvFolderDragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  Count             : Integer;
  MyIni             : TIniFile;
  lstItem           : TListItem;
  Name, Url, myPath : string;
  defsec            : string;
begin
  if Source = lvItem then
  begin
    lstItem := lvFolder.GetItemAt(X, Y);
    myPath := GetExePath + 'Files\Most.ini';
    if not FileExists(myPath) then
      Exit;

    Name := lvItem.Selected.Caption;
    Url := lvItem.Selected.SubItems[0];
    lvItem.DeleteSelected;
    MyIni := TIniFile.Create(myPath);
    defsec := lstItem.caption;
    if defsec = '默认' then
      defsec := 'Public';
    try
      ReWrite(MyIni);
      Count := MyIni.ReadInteger(defsec, 'Counter', 0);
      MyIni.WriteInteger(defsec, 'Counter', Count + 1);
      MyIni.WriteString(defsec, 'Name' + IntToStr(Count), Name);
      MyIni.WriteString(defsec, 'Url' + IntToStr(Count), Url);
    finally
      MyIni.Free;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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