Пишем программу для создания книг FB2. - Юрий Карпов
Шрифт:
Интервал:
Закладка:
begin
if FileExists(Path + 'Annotation.txt') then
Annotation.Lines.LoadFromFile(Path + 'Annotation.txt');
end;
function ScanUpStyle(n: integer):TmyStyle;
var
i: integer;
LStyle: TmyStyle;
begin
with Form1.ListBox1 do
for i:= n downto 0 do
begin
GetStyle(Items[i], LStyle);
if LStyle in [H1..H5] then
begin
result:= LStyle;
exit;
end;
end;
result:= H1;
end;
procedure ShowHeadStyle(n: integer);
var
LStyle: TmyStyle;
begin
LStyle:= ScanUpStyle(n);
Form1.Button2.Caption:= SetStyle(LStyle);
Form1.Button2.Tag:= integer(LStyle);
end;
procedure TForm1.ListBox1DblClick(Sender: TObject);
var
S: string;
CurStyle: TmyStyle;
i, st: integer;
begin
st:= ListBox1.itemIndex;
S:= GetStyle(ListBox1.Items[st], CurStyle);
with EditSt do
begin
Memo1.WordWrap:= true;
Memo1.Clear;
Memo1.Lines.Add(S);
ShowModal;
if ModalResult = mrOK then
begin
ListBox1.Items.Delete(st);
Memo1.WordWrap:= false;
for i:= Memo1.Lines.Count - 1 downto 0 do
ListBox1.Items.Insert(st, SetStyle1(CurStyle)+Memo1.Lines[i]);
end;
end;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ShowHeadStyle(ListBox1.itemIndex);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ChangeStyle(TmyStyle(Button2.Tag));
end;
procedure TForm1.Button5Click(Sender: TObject);
var
LStyle: TmyStyle;
begin
LStyle:= TmyStyle(Button2.Tag);
if LStyle < H5 then ChangeStyle(Succ(LStyle));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
LStyle: TmyStyle;
begin
LStyle:= TmyStyle(Button2.Tag);
if LStyle > H1 then ChangeStyle(Pred(LStyle));
end;
end.
// конец кода
* * *genres.dfm
// начало кода
object Form3: TForm3
Left = 214
Top = 121
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'Genre'
ClientHeight = 294
ClientWidth = 603
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object ListBox1: TListBox
Left = 8
Top = 8
Width = 241
Height = 209
ItemHeight = 13
TabOrder = 0
end
object Button1: TButton
Left = 272
Top = 32
Width = 75
Height = 25
Caption = 'Add'
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 272
Top = 64
Width = 75
Height = 25
Caption = 'Delete'
TabOrder = 2
OnClick = Button2Click
end
object BitBtn1: TBitBtn
Left = 80
Top = 248
Width = 75
Height = 25
TabOrder = 3
Kind = bkOK
end
object BitBtn2: TBitBtn
Left = 448
Top = 240
Width = 75
Height = 25
TabOrder = 4
Kind = bkCancel
end
object Button3: TButton
Left = 272
Top = 112
Width = 75
Height = 25
Caption = 'Up'
TabOrder = 5
OnClick = Button3Click
end
object Button4: TButton
Left = 272
Top = 152
Width = 75
Height = 25
Caption = 'Down'
TabOrder = 6
OnClick = Button4Click
end
object ListBox2: TListBox
Left = 368
Top = 32
Width = 225
Height = 185
ItemHeight = 13
TabOrder = 7
OnDblClick = ListBox2DblClick
end
object ComboBox1: TComboBox
Left = 368
Top = 8
Width = 225
Height = 21
ItemHeight = 13
ItemIndex = 0
TabOrder = 8
Text = #1044#1077#1083#1086#1074#1072#1103' '#1083#1080#1090#1077#1088#1072#1090#1091#1088#1072
OnChange = ComboBox1Change
Items.Strings = (
#1044#1077#1083#1086#1074#1072#1103' '#1083#1080#1090#1077#1088#1072#1090#1091#1088#1072
#1044#1077#1090#1077#1082#1090#1080#1074#1099' '#1080' '#1058#1088#1080#1083#1083#1077#1088#1099
#1044#1077#1090#1089#1082#1086#1077
#1044#1086#1082#1091#1084#1077#1085#1090#1072#1083#1100#1085#1072#1103' '#1083#1080#1090#1077#1088#1072#1090#1091#1088#1072
#1044#1086#1084#1086#1074#1086#1076#1089#1090#1074#1086
#1050#1086#1084#1087#1100#1102#1090#1077#1088#1099' '#1080' '#1048#1085#1090#1077#1088#1085#1077#1090
#1051#1102#1073#1086#1074#1085#1099#1077' '#1088#1086#1084#1072#1085#1099
#1053#1072#1091#1082#1072', '#1054#1073#1088#1072#1079#1086#1074#1072#1085#1080#1077
#1055#1077#1088#1080#1086#1076#1080#1082#1072
#1055#1086#1101#1079#1080#1103', '#1044#1088#1072#1084#1072#1090#1091#1088#1075#1080#1103
#1055#1088#1080#1082#1083#1102#1095#1077#1085#1080#1103
#1055#1088#1086#1079#1072
#1055#1088#1086#1095#1077#1077
#1056#1077#1083#1080#1075#1080#1103' '#1080' '#1076#1091#1093#1086#1074#1085#1086#1089#1090#1100
#1057#1087#1088#1072#1074#1086#1095#1085#1072#1103' '#1083#1080#1090#1077#1088#1072#1090#1091#1088#1072
#1057#1090#1072#1088#1080#1085#1085#1086#1077
#1058#1077#1093#1085#1080#1082#1072
#1060#1072#1085#1090#1072#1089#1090#1080#1082#1072
#1070#1084#1086#1088)
end
end
// конец кода
genres.pas
// начало кода
unit genres;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, dm;
type
TForm3 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Button3: TButton;
Button4: TButton;
ListBox2: TListBox;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ListBox2DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
var
i: integer;
begin
for i:= 0 to maxg do
ListBox2.Items.Add(gg[i][2]);
ListBox2.ItemIndex:= 0;
end;
procedure TForm3.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:= 0 to ListBox1.Items.Count - 1 do
if ListBox2.Items[ListBox2.ItemIndex] = ListBox1.Items[i]
then exit;
ListBox1.Items.Add(ListBox2.Items[ListBox2.ItemIndex]);
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
if ListBox1.ItemIndex = -1 then exit;
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
procedure TForm3.ComboBox1Change(Sender: TObject);
begin
ListBox2.ItemIndex:= LI[ComboBox1.ItemIndex];
ListBox2.TopIndex:= ListBox2.ItemIndex;
end;
procedure TForm3.Button3Click(Sender: TObject);
var
k: integer;
begin
k:= ListBox1.ItemIndex;
if k > 0 then
begin
ListBox1.Items.Move(k,k-1);
ListBox1.ItemIndex:= k -1;
end;
end;
procedure TForm3.Button4Click(Sender: TObject);
var
k: integer;
begin
k:= ListBox1.ItemIndex;
if k < ListBox1.Items.Count - 1 then
begin
ListBox1.Items.Move(k,k+1);
ListBox1.ItemIndex:= k+1;
end;
end;
procedure TForm3.ListBox2DblClick(Sender: TObject);
begin
Button1Click(nil);
end;
end.
// конец кода
* * *EditStr.dfm
// начало кода
object EditSt: TEditSt
Left = 175
Top = 164
Width = 692
Height = 303
Caption = 'Edit'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 0
Top = 240
Width = 684
Height = 36
Align = alBottom
BevelOuter = bvNone
TabOrder = 0
object BitBtn1: TBitBtn
Left = 16
Top = 8
Width = 75
Height = 25
TabOrder = 0
Kind = bkOK
end
object BitBtn2: TBitBtn
Left = 592
Top = 8
Width = 75
Height = 25
TabOrder = 1
Kind = bkCancel
end
object BitBtn3: TBitBtn
Left = 592
Top = 8
Width = 75
Height = 25
TabOrder = 2
Kind = bkAbort
end
object Button1: TButton
Left = 112
Top = 8
Width = 75
Height = 25
Caption = 'Bold'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
TabOrder = 3
OnClick = Button1Click
end
object Button2: TButton
Left = 200
Top = 8
Width = 75
Height = 25
Caption = 'Italic'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = [fsItalic]
ParentFont = False
TabOrder = 4
OnClick = Button2Click
end
end
object Memo1: TMemo
Left = 0
Top = 0
Width = 684
Height = 240
Align = alClient
ScrollBars = ssVertical
TabOrder = 1
end
end
// конец кода
EditStr.pas
// начало кода
unit EditStr;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls;
type
TEditSt = class(TForm)
Panel1: TPanel;
Memo1: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
EditSt: TEditSt;
implementation
{$R *.dfm}
procedure TEditSt.Button1Click(Sender: TObject);
begin
with Memo1 do
if SelLength > 0 then
Memo1.SelText:= '<strong>'+ SelText + '</strong>'
end;
procedure TEditSt.Button2Click(Sender: TObject);
begin
with Memo1 do
if SelLength > 0 then
Memo1.SelText:= '<emphasis>'+ SelText + '</emphasis>'
end;
end.
// конец кода
* * *authors.dfm
// начало кода
object Form2: TForm2
Left = 359
Top = 204
Width = 502
Height = 285
Caption = 'Person'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object GroupBox1: TGroupBox
Left = 296
Top = 8
Width = 185
Height = 193
Caption = 'Author'
TabOrder = 0
object Label2: TLabel
Left = 8
Top = 24
Width = 45
Height = 13
Caption = 'first-name'
end
object Label3: TLabel
Left = 8
Top = 88
Width = 45
Height = 13
Caption = 'last-name'
end
object Label4: TLabel
Left = 8
Top = 120
Width = 46
Height = 13
Caption = 'nickname'
end
object Label5: TLabel
Left = 8
Top = 152
Width = 24
Height = 13
Caption = 'email'