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

📄 main.pas

📁 源代码竟供大家参考
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  Page_1.Font:=PageFont.Font;
  Page_2.Font:=PageFont.Font;
  Page_1.Canvas.Font:=PageFont.Font;
  Page_2.Canvas.Font:=PageFont.Font;
  Page_Test.Font:=PageFont.Font;

  //调整页面变量
  Page_1_Left_v:=trunc(Width_av*Page_1_Left);
  Page_2_Left_v:=trunc(Width_av*Page_2_Left);

  Page_Top_v:=trunc(Height_av*Page_Top);
  Page_Width_v:=trunc(Width_av*Page_Width);
  Page_Height_v:=trunc(Height_av*Page_Height);

  //调整书签变量
  Label_Left_v:=trunc(Width_av*Label_Left);
  Label_Top_v:=trunc(Height_av*Label_Top);
  Label_Width_v:=trunc(Width_av*Label_Width);
  Label_Height_v:=trunc(Height_av*Label_Height);

  //调整文本框字体和宽度
  for i:=1 to CountTextRead do
  begin
       //显示完成度信息
       f_mess.compper.Position:=i;
       Application.ProcessMessages;

       TextRead[i].Text:='';
       TextRead[i].Font:=PageFont.Font;
       TextRead[i].Width:=Page_Width_v;
       TextRead[i].Text:=TextRead_Ready[i];
  end;

  //计算目前文本框总行数
  Count_Line_Number:=0;
  for i:=1 to CurrentTextRead do
      Count_Line_Number:=Count_Line_Number+TextRead[i].Lines.Count;

  //调整页面测试变量
  Page_Test.Caption:='测试'+#13+#10+'测试'+#13+#10+'测试'+#13+#10+'测试';
  Page_Test_Width_v:=Page_Test.Width;
  Page_Test_Height_v:=Page_Test.Height;

  //计算每个页面可容纳的行数
  Page_Number:=trunc(Page_Height_v/Page_Test_Height_v*4);
  if Pop_HangD.Checked then
     Page_Number:=trunc(Page_Number/2);
  if Page_Number<1 then Page_Number:=1;

  //调整页码数
  //计算文本框总行数
  Countlines:=0;
  for i:=1 to CountTextRead do
      Countlines:=Countlines+TextRead[i].Lines.Count;

  //计算总页码、当前页码数
  ye_Count_v:=trunc(Countlines/Page_Number);
  if (ye_Count_v*10 <> trunc(Countlines*10)) or (ye_Count_v<1) then
     inc(ye_Count_v);
  ye_Current_v:=1;

  //调整菜单按钮
  if ye_Count_v<=2 then
  begin
       pop_page_input.Enabled:=False;   //写标志:禁止“指定页”功能
       pop_page_input1.Enabled:=False;  //写标志:禁止“指定页”功能
  end
  else
  begin
       pop_page_input.Enabled:=True;   //写标志:允许“指定页”功能
       pop_page_input1.Enabled:=True;  //写标志:允许“指定页”功能
  end;

  //调整页面
  Page_1.Left:=Page_1_Left_v;
  Page_1.Top:=Page_Top_v;
  Page_1.Width:=Page_Width_v;
  Page_1.Height:=Page_Height_v;

  Page_2.Left:=Page_2_Left_v;
  Page_2.Top:=Page_Top_v;
  Page_2.Width:=Page_Width_v;
  Page_2.Height:=Page_Height_v;

  //调整书签
  label_image.Left:=Label_Left_v;
  label_image.Top:=Label_Top_v;
  label_image.Width:=Label_Width_v;
  label_image.Height:=Label_Height_v;

  label_image_Pic.Width:=label_image.Width;
  label_image_Pic.Height:=label_image.Height;

  //调整下划线
  UnderLine_Number:=1;      //下划线行数写1
  with UnderLine do
  begin
       Left:=Page_1_Left_v;
       Width:=Page_Width_v;
       Height:=1;

       application.ProcessMessages;

       Canvas.Pen.Color:=UnderLine_Color;
       Canvas.Pen.Width:=UnderLine_Thick;
       Canvas.MoveTo(0,0);
       Canvas.LineTo(Page_Width_v,0);
       Visible:=pop_UnderLine.Checked;
  end;
  Init_UnderLine;

  //调整自动下划线状态
  Auto_UnderLine.Enabled:=Auto_Page_Move.Enabled and pop_UnderLine.Checked;
  Auto_UnderLine.Interval:=trunc(Auto_Page_Move.Interval/Page_Number/2)+1;

  //调整自动卷行
  Auto_Scroll_Count:=0;

  //关闭显示信息
  f_mess.Close;
  Application.ProcessMessages;
end;

procedure Tf_main.Init_Page_String();
var TextRead_Page_Count_1 : string;  //写入页面1的内容
    TextRead_Page_Count_2 : string;  //写入页面2的内容
begin
  //清除写入页面内容
  TextRead_Page_Count_1:='';
  TextRead_Page_Count_2:='';

  //计算页面起始行数
  Page_Line_Number:=(ye_Current_v-1)*Page_Number;
  Page_Line_Number:=Page_Line_Number+Auto_Scroll_Count;  //调整自动卷行后的行数

  //读文本框,写入页面变量
  //写入页面1变量
  for i:=1 to Page_Number do
  begin
       while (Page_Line_Number+i>Count_Line_Number) and (CurrentTextRead<CountTextRead) do
       begin  //所读的行数超过目前文本框总行数,则调整文本框状态
            inc(CurrentTextRead);  //当前文本框数+1
            Count_Line_Number:=Count_Line_Number+TextRead[CurrentTextRead].Lines.Count;  //调整目前文本框总行数
       end;

       while (Page_Line_Number+i<=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count) and (CurrentTextRead>1) do
       begin  //所读的行数少于目前文本框总行数,则调整文本框状态
            Count_Line_Number:=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count;  //调整目前文本框总行数
            dec(CurrentTextRead);  //当前文本框数-1
       end;

       //换算文本框行数
       j:=Page_Line_Number+i-1-(Count_Line_Number-TextRead[CurrentTextRead].Lines.Count);
       TextRead_Page_Count_1:=TextRead_Page_Count_1+TextRead[CurrentTextRead].Lines[j]+#13+#10;
       if pop_HangD.Checked then
          TextRead_Page_Count_1:=TextRead_Page_Count_1+#13+#10;
  end;

  //写入页面2变量
  for i:=Page_Number+1 to 2*Page_Number do
  begin
       while (Page_Line_Number+i>Count_Line_Number) and (CurrentTextRead<CountTextRead) do
       begin  //所读的行数超过目前文本框总行数,则调整文本框状态
            inc(CurrentTextRead);  //当前文本框数+1
            Count_Line_Number:=Count_Line_Number+TextRead[CurrentTextRead].Lines.Count;  //调整目前文本框总行数
         end;

       while (Page_Line_Number+i<=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count) and (CurrentTextRead>1) do
       begin  //所读的行数少于目前文本框总行数,则调整文本框状态
            Count_Line_Number:=Count_Line_Number-TextRead[CurrentTextRead].Lines.Count;  //调整目前文本框总行数
            dec(CurrentTextRead);  //当前文本框数-1
       end;

       //换算文本框行数
       j:=Page_Line_Number+i-1-(Count_Line_Number-TextRead[CurrentTextRead].Lines.Count);
       TextRead_Page_Count_2:=TextRead_Page_Count_2+TextRead[CurrentTextRead].Lines[j]+#13+#10;
       if pop_HangD.Checked then
          TextRead_Page_Count_2:=TextRead_Page_Count_2+#13+#10;
  end;

  if Auto_Scroll_Count>0 then
  begin  //向后卷行,处理页面
  end;

  if Auto_Scroll_Count<0 then
  begin  //向前卷行,处理页面
  end;

//  if Auto_Scroll_Count=0 then
//  begin  //不卷行,处理页面
       Page_1.Caption:=TextRead_Page_Count_1;
       Page_2.Caption:=TextRead_Page_Count_2;
//  end;

  //调整书签菜单
  if filename<>'说明文件' then
  begin  //不是说明文件,则调整书签菜单
       //初始化书签菜单
       j:=0;
       pop_Label_Add.Enabled:=True;
       pop_Label_Edit.Enabled:=False;
       pop_Label_Delete.Enabled:=False;
       label_image.Visible:=False;

       //取消默认书签
       if pop_Label_Input.Enabled then
       begin
            pop_Label_Input.Items[0].Default:=True;
            pop_Label_Input.Items[0].Default:=False;
       end;

       //检测书签
       for j:=0 to pop_Label_Input.Count-1 do
       begin
            if (ye_Current_v=Label_Indexv[j]) or (ye_Current_v+1=Label_Indexv[j]) then
            begin  //当前页有书签,更新书签菜单
                 pop_Label_Add.Enabled:=False;
                 pop_Label_Edit.Enabled:=True;
                 pop_Label_Delete.Enabled:=True;
                 pop_Label_Input.Items[j].Default:=True;

                 label_image.Hint:=Label_Stringv[j];
                 label_image_Pic.Hint:=Label_Stringv[j];
                 label_image.Visible:=True;
                 break;
            end;
       end;
  end;
end;

procedure Tf_main.Init_ye();
var x,y : integer;  //页码位置
begin
  //调整字体
  ye_1_be.Font:=yeFont.Font;
  ye_1.Font:=yeFont.Font;
  ye_1_af.Font:=yeFont.Font;
  ye_1_test.Font:=yeFont.Font;

  ye_2_be.Font:=yeFont.Font;
  ye_2.Font:=yeFont.Font;
  ye_2_af.Font:=yeFont.Font;
  ye_2_test.Font:=yeFont.Font;

  //调整页码位置参数
  ye_1_loc:=f_setup.ye_1_loc.Caption;
  ye_2_loc:=f_setup.ye_2_loc.Caption;

  //计算页码位置变量
  ye_loc_Left_v:=trunc(Width_av*ye_loc_Left);
  ye_loc_Top_v:=trunc(Width_av*ye_loc_Top);

  //调整页码1
  ye_1.Caption:=IntToStr(ye_Current_v);
  ye_1_test.Caption:=ye_1_be.Caption+ye_1.Caption+ye_1_af.Caption;

  //计算页码1位置1变量
  case ye_1_loc[1] of
    '1' : //靠左
          x:=Page_Move_Width+ye_loc_Left_v;
    '2' : //中间
          x:=trunc((Book_Width_v/2-Page_Move_Width)/2-ye_1_test.Width/2+Page_Move_Width);
    '3' : //靠右
          x:=trunc(Book_Width_v/2-ye_Loc_Left_v-ye_1_test.Width);
  end;

  //计算页码1位置2变量
  case ye_1_loc[2] of
    '1' : //靠上
          y:=ye_loc_Top_v;
    '2' : //靠下
          y:=trunc(Book_Height_v-ye_Loc_Top_v-ye_1_test.Height);
  end;

  //调整页码1位置
  ye_1_be.Left:=x;
  ye_1.Left:=ye_1_be.Left+ye_1_be.Width;
  ye_1_af.Left:=ye_1.Left+ye_1.Width;

  ye_1_be.Top:=y;
  ye_1.Top:=y;
  ye_1_af.Top:=y;

  if f_setup.Check_ye_View.Checked then
  begin  //显示页码1
       ye_1_be.Visible:=True;
       ye_1_af.Visible:=True;
       ye_1.Visible:=True;
  end
  else
  begin  //隐藏页码1
       ye_1_be.Visible:=False;
       ye_1_af.Visible:=False;
       ye_1.Visible:=False;
  end;       

  //隐藏页码2
  ye_2_be.Visible:=False;
  ye_2_af.Visible:=False;
  ye_2.Visible:=False;

  //调整页码2
  if ye_Current_v+1<=ye_Count_v then
  begin  //存在页码2,则调整页码2
       ye_2.Caption:=IntToStr(ye_Current_v+1);
       ye_2_test.Caption:=ye_2_be.Caption+ye_2.Caption+ye_2_af.Caption;

       //计算页码2位置1变量
       case ye_2_loc[1] of
         '1' : //靠左
               x:=trunc(Book_Width_v/2+ye_Loc_Left_v);
         '2' : //中间
               x:=trunc((Book_Width_v/2-Page_Move_Width)/2-ye_2_test.Width/2+Book_Width_v/2);
         '3' : //靠右
               x:=trunc(Book_Width_v-Page_Move_Width-ye_Loc_Left_v-ye_2_test.Width);
       end;

       //计算页码2位置2变量
       case ye_2_loc[2] of
         '1' : //靠上
               y:=ye_loc_Top_v;
         '2' : //靠下
               y:=trunc(Book_Height_v-ye_Loc_Top_v-ye_2_test.Height);
       end;

       //调整页码2位置
       ye_2_be.Left:=x;
       ye_2.Left:=ye_2_be.Left+ye_2_be.Width;
       ye_2_af.Left:=ye_2.Left+ye_2.Width;

       ye_2_be.Top:=y;
       ye_2.Top:=y;
       ye_2_af.Top:=y;

       if f_setup.Check_ye_View.Checked then
       begin  //显示页码2
            ye_2_be.Visible:=True;
            ye_2_af.Visible:=True;
            ye_2.Visible:=True;
       end;
  end;
end;

procedure Tf_main.Init_UnderLine();
begin

⌨️ 快捷键说明

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