📄 formorgmostunit.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 + -