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

📄 inputye.pas

📁 电子书阅读器的delphi设计
💻 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)
    Label1: TLabel;
    Label2: TLabel;
	Panel1: TPanel;
	Panel2: TPanel;

	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();

	Left := g_MousePoint.x - (Panel2.Left + trunc(Panel2.Width / 2));
	Top := g_MousePoint.y - (Panel2.Top + trunc(Panel2.Height / 4));
	Width := Panel1.Width;
	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  //进入移动状态
		Left := Left + (X - FnStartX);
		Top := 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 + -