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

📄 inputye.pas

📁 电子小说阅读器v2.68可用于阅读pdf.html等各种形式的文档
💻 PAS
字号:
{
模块名称:指定页码

使用方法:1、Create
		  2、ShowModal
		  
返回值:  1、mrOk:返回正确的索引值
		  2、mrCancel:取消指定页码
		  3、m_nPos:指定页码
}

unit InputYe;

interface

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

type
  TFormInputYe = class(TForm)
	Panel1: TPanel;
	Panel2: TPanel;

    Label1: TLabel;
	Label2: TLabel;

	EditInputYe: TEdit;
	BtnNextYe: TSpeedButton;
	BtnPrevYe: TSpeedButton;

	procedure FormShow(Sender: TObject);

	procedure EditInputYeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
	procedure BtnNextYeClick(Sender: TObject);
	procedure BtnPrevYeClick(Sender: TObject);

	procedure MouseYeMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
	procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
	procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
	procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

	procedure MouseYe(Flag : String);
	procedure DoneText;

  private
	{ Private declarations }
	FnStartX, FnStartY : integer;  //起始位置
	FboolLeftDown : Boolean;       //左键标志

  public
	{ Public declarations }
	m_nPos : integer;

  end;

var
  FormInputYe: TFormInputYe;

implementation

uses Global;

{$R *.DFM}

procedure TFormInputYe.FormShow(Sender: TObject);
begin
	GetCurrentMousePoint();

	Self.Left := g_MousePoint.x - (Panel2.Left + Trunc(Panel2.Width / 2));
	Self.Top := g_MousePoint.y - (Panel2.Top + Trunc(Panel2.Height / 4));
	Self.Width := Panel1.Width;
	Self.Height := Panel1.Height;

	with EditInputYe do
	begin
		Text := IntToStr(g_nYeCurrent);
		SetFocus;
		SelectAll;
	end;
end;

procedure TFormInputYe.EditInputYeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
	case Key of
		13 :  DoneText;          //处理
		38 :  MouseYe('Next');  //下一页
		40 :  MouseYe('Prev');  //上一页
		27 :  ModalResult := mrCancel;  //忽略改变
  	end;
end;

procedure TFormInputYe.BtnNextYeClick(Sender: TObject);
begin
	MouseYe('Next');
end;

procedure TFormInputYe.BtnPrevYeClick(Sender: TObject);
begin
	MouseYe('Prev');
end;

procedure TFormInputYe.MouseYeMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
	FboolLeftDown := False;  //释放左键

	if Button = mbRight then
		DoneText;
end;

procedure TFormInputYe.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
	if Button = mbLeft then
	begin
		FnStartX := x;
		FnStartY := y;
		FboolLeftDown := True;  //按下左键
	end;
end;

procedure TFormInputYe.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
	if FboolLeftDown then
	begin  //进入移动状态
		Self.Left := Self.Left + (X - FnStartX);
		Self.Top := Self.Top + (Y - FnStartY);
  	end;
end;

procedure TFormInputYe.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
	if Button = mbRight then
		ModalResult := mrCancel   //忽略改变
	else
		FboolLeftDown := False;   //释放左键
end;

procedure TFormInputYe.MouseYe(Flag : String);
var i : integer;
begin
	try
		i := StrToInt(EditInputYe.Text);
	except
		i := 0;
  	end;

	if Flag='Next' then
		inc(i)
	else
		dec(i);

	if i < 1 then i := 1;
	if i > g_nYeCount then i := g_nYeCount;

  	EditInputYe.Text := IntToStr(i);
end;

procedure TFormInputYe.DoneText();
begin
	try
		m_nPos := StrToInt(EditInputYe.Text);
		ModalResult := mrOk;
	except
		ModalResult := mrCancel;
	end;
end;

end.

⌨️ 快捷键说明

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