root/trunk/Forms/frm_edit_book_info.pas
| 425 | 429 | ||
|---|---|---|---|
8 | * Nick Rymanov nrymanov@gmail.com | 8 | * Nick Rymanov nrymanov@gmail.com |
9 | ****************************************************************************** *) | 9 | ****************************************************************************** *) |
10 | 10 | ||
11 | { | ||
12 | Note: у этой формы слишком сильная зависимость от главной формы. Было бы неплохо от этого избавится. | ||
13 | } | ||
14 | |||
11 | unit frm_edit_book_info; | 15 | unit frm_edit_book_info; |
12 | 16 | ||
13 | interface | 17 | interface |
... | ... | ||
42 | Label7: TLabel; | 46 | Label7: TLabel; |
43 | gbAuthors: TGroupBox; | 47 | gbAuthors: TGroupBox; |
44 | gbExtraInfo: TGroupBox; | 48 | gbExtraInfo: TGroupBox; |
49 | procedure FormShow(Sender: TObject); | ||
50 | procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); | ||
45 | procedure btnGenresClick(Sender: TObject); | 51 | procedure btnGenresClick(Sender: TObject); |
46 | procedure FormShow(Sender: TObject); | ||
47 | procedure btnAddAuthorClick(Sender: TObject); | 52 | procedure btnAddAuthorClick(Sender: TObject); |
48 | procedure btnAChangeClick(Sender: TObject); | 53 | procedure btnAChangeClick(Sender: TObject); |
49 | procedure btnADeleteClick(Sender: TObject); | 54 | procedure btnADeleteClick(Sender: TObject); |
55 | procedure edTChange(Sender: TObject); | ||
50 | procedure btnSaveClick(Sender: TObject); | 56 | procedure btnSaveClick(Sender: TObject); |
51 | procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); | ||
52 | procedure btnNextBookClick(Sender: TObject); | 57 | procedure btnNextBookClick(Sender: TObject); |
53 | procedure edTChange(Sender: TObject); | ||
54 | procedure btnPrevBookClick(Sender: TObject); | 58 | procedure btnPrevBookClick(Sender: TObject); |
55 | private | 59 | private |
56 | FChanged: boolean; | 60 | FChanged: boolean; |
57 | 61 | ||
58 | procedure FillLists; | 62 | procedure FillLists; |
59 | function SaveData: boolean; | 63 | function SaveData: boolean; |
60 | { Private declarations } | ||
61 | public | 64 | public |
62 | // procedure FillGenrelist; | 65 | |
63 | end; | 66 | end; |
64 | 67 | ||
65 | var | 68 | var |
... | ... | ||
78 | 81 | ||
79 | {$R *.dfm} | 82 | {$R *.dfm} |
80 | 83 | ||
84 | procedure TfrmEditBookInfo.FormShow(Sender: TObject); | ||
85 | begin | ||
86 | FChanged := False; | ||
87 | if frmGenreTree.tvGenresTree.GetFirstSelected = nil then | ||
88 | frmMain.FillGenresTree(frmGenreTree.tvGenresTree); | ||
89 | FillLists; | ||
90 | end; | ||
91 | |||
92 | procedure TfrmEditBookInfo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); | ||
93 | var | ||
94 | Dummy: boolean; | ||
95 | begin | ||
96 | if Key = VK_F1 then | ||
97 | frmMain.HH(0, 0, Dummy); | ||
98 | end; | ||
99 | |||
81 | procedure TfrmEditBookInfo.btnGenresClick(Sender: TObject); | 100 | procedure TfrmEditBookInfo.btnGenresClick(Sender: TObject); |
82 | var | 101 | var |
83 | Data: PGenreData; | 102 | Data: PGenreData; |
... | ... | ||
87 | begin | 106 | begin |
88 | lblGenre.Text := ''; | 107 | lblGenre.Text := ''; |
89 | Node := frmGenreTree.tvGenresTree.GetFirstSelected; | 108 | Node := frmGenreTree.tvGenresTree.GetFirstSelected; |
90 | while Node <> nil do | 109 | while Assigned(Node) do |
91 | begin | 110 | begin |
92 | Data := frmGenreTree.tvGenresTree.GetNodeData(Node); | 111 | Data := frmGenreTree.tvGenresTree.GetNodeData(Node); |
93 | lblGenre.Text := lblGenre.Text + Data.Text + ' ; '; | 112 | lblGenre.Text := lblGenre.Text + Data.Text + ' ; '; |
... | ... | ||
97 | end; | 116 | end; |
98 | end; | 117 | end; |
99 | 118 | ||
100 | procedure TfrmEditBookInfo.FillLists; | 119 | procedure TfrmEditBookInfo.btnAddAuthorClick(Sender: TObject); |
120 | var | ||
121 | Family: TListItem; | ||
122 | frmEditAuthor: TfrmEditAuthorData; | ||
101 | begin | 123 | begin |
102 | cbSeries.Items.Clear; | 124 | frmEditAuthor := TfrmEditAuthorData.Create(Self); |
103 | dmCollection.tblSeries.First; | 125 | try |
104 | dmCollection.tblSeries.Next; | 126 | if frmEditAuthor.ShowModal = mrOk then |
105 | while not dmCollection.tblSeries.Eof do | 127 | begin |
106 | begin | 128 | Family := lvAuthors.Items.Add; |
107 | cbSeries.Items.Add(dmCollection.tblSeries['S_Title']); | 129 | Family.Caption := frmEditAuthor.edFamily.Text; |
108 | dmCollection.tblSeries.Next; | 130 | Family.SubItems.Add(frmEditAuthor.edName.Text); |
131 | Family.SubItems.Add(frmEditAuthor.edMiddle.Text); | ||
132 | |||
133 | FChanged := True; | ||
134 | end; | ||
135 | finally | ||
136 | frmEditAuthor.Free; | ||
109 | end; | 137 | end; |
110 | end; | 138 | end; |
111 | 139 | ||
112 | procedure TfrmEditBookInfo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); | 140 | procedure TfrmEditBookInfo.btnAChangeClick(Sender: TObject); |
113 | var | 141 | var |
114 | Dummy: boolean; | 142 | Family: TListItem; |
143 | frmEditAuthor: TfrmEditAuthorData; | ||
115 | begin | 144 | begin |
116 | if Key = VK_F1 then | 145 | Family := lvAuthors.Selected; |
117 | frmMain.HH(0, 0, Dummy); | 146 | if not Assigned(Family) then |
118 | end; | 147 | Exit; |
119 | 148 | ||
120 | procedure TfrmEditBookInfo.FormShow(Sender: TObject); | 149 | frmEditAuthor := TfrmEditAuthorData.Create(Self); |
121 | begin | 150 | try |
122 | FChanged := False; | 151 | frmEditAuthor.edFamily.Text := Family.Caption; |
123 | if frmGenreTree.tvGenresTree.GetFirstSelected = nil then | 152 | frmEditAuthor.edName.Text := Family.SubItems[0]; |
124 | frmMain.FillGenresTree(frmGenreTree.tvGenresTree); | 153 | frmEditAuthor.edMiddle.Text := Family.SubItems[1]; |
125 | FillLists; | ||
126 | end; | ||
127 | 154 | ||
128 | function TfrmEditBookInfo.SaveData: boolean; | 155 | if frmEditAuthor.ShowModal = mrOk then |
129 | begin | 156 | begin |
130 | Result := False; | 157 | Family.Caption := frmEditAuthor.edFamily.Text; |
131 | if not FChanged then | 158 | Family.SubItems[0] := frmEditAuthor.edName.Text; |
132 | begin | 159 | Family.SubItems[1] := frmEditAuthor.edMiddle.Text; |
133 | Result := True; | ||
134 | Exit; | ||
135 | end; | ||
136 | 160 | ||
137 | if lvAuthors.Items.Count = 0 then | 161 | FChanged := True; |
138 | begin | 162 | end; |
139 | MessageDlg('Укажите минимум одного автора!', mtError, [mbOk], 0); | 163 | finally |
140 | Exit; | 164 | frmEditAuthor.Free; |
141 | end; | 165 | end; |
142 | if edT.Text = '' then | ||
143 | begin | ||
144 | MessageDlg('Укажите название книги!', mtError, [mbOk], 0); | ||
145 | Exit; | ||
146 | end; | ||
147 | Result := True; | ||
148 | end; | 166 | end; |
149 | 167 | ||
150 | procedure TfrmEditBookInfo.btnADeleteClick(Sender: TObject); | 168 | procedure TfrmEditBookInfo.btnADeleteClick(Sender: TObject); |
... | ... | ||
152 | lvAuthors.DeleteSelected; | 170 | lvAuthors.DeleteSelected; |
153 | end; | 171 | end; |
154 | 172 | ||
155 | procedure TfrmEditBookInfo.btnAddAuthorClick(Sender: TObject); | 173 | procedure TfrmEditBookInfo.edTChange(Sender: TObject); |
156 | var | ||
157 | Family: TListItem; | ||
158 | begin | 174 | begin |
159 | frmEditAuthorData.edFamily.Clear; | 175 | FChanged := True; |
160 | frmEditAuthorData.edName.Clear; | ||
161 | frmEditAuthorData.edMiddle.Clear; | ||
162 | if frmEditAuthorData.ShowModal = mrOk then | ||
163 | begin | ||
164 | Family := lvAuthors.Items.Add; | ||
165 | Family.Caption := frmEditAuthorData.edFamily.Text; | ||
166 | Family.SubItems.Add(frmEditAuthorData.edName.Text); | ||
167 | Family.SubItems.Add(frmEditAuthorData.edMiddle.Text); | ||
168 | FChanged := True; | ||
169 | end; | ||
170 | end; | 176 | end; |
171 | 177 | ||
172 | procedure TfrmEditBookInfo.btnAChangeClick(Sender: TObject); | ||
173 | var | ||
174 | Family: TListItem; | ||
175 | begin | ||
176 | Family := lvAuthors.Selected; | ||
177 | if Family = nil then | ||
178 | Exit; | ||
179 | |||
180 | frmEditAuthorData.edFamily.Text := Family.Caption; | ||
181 | if Family.SubItems.Count > 0 then | ||
182 | frmEditAuthorData.edName.Text := Family.SubItems[0]; | ||
183 | if Family.SubItems.Count > 1 then | ||
184 | frmEditAuthorData.edMiddle.Text := Family.SubItems[1]; | ||
185 | |||
186 | if frmEditAuthorData.ShowModal = mrOk then | ||
187 | begin | ||
188 | Family.Caption := frmEditAuthorData.edFamily.Text; | ||
189 | if Family.SubItems.Count > 0 then | ||
190 | Family.SubItems[0] := frmEditAuthorData.edName.Text | ||
191 | else | ||
192 | Family.SubItems.Add(frmEditAuthorData.edName.Text); | ||
193 | if Family.SubItems.Count > 1 then | ||
194 | Family.SubItems[1] := frmEditAuthorData.edMiddle.Text | ||
195 | else | ||
196 | Family.SubItems.Add(frmEditAuthorData.edMiddle.Text); | ||
197 | FChanged := True; | ||
198 | end; | ||
199 | end; | ||
200 | |||
201 | procedure TfrmEditBookInfo.btnSaveClick(Sender: TObject); | 178 | procedure TfrmEditBookInfo.btnSaveClick(Sender: TObject); |
202 | begin | 179 | begin |
203 | if SaveData then | 180 | if SaveData then |
... | ... | ||
222 | end; | 199 | end; |
223 | end; | 200 | end; |
224 | 201 | ||
225 | procedure TfrmEditBookInfo.edTChange(Sender: TObject); | 202 | procedure TfrmEditBookInfo.FillLists; |
226 | begin | 203 | begin |
227 | FChanged := True; | 204 | cbSeries.Items.Clear; |
205 | dmCollection.tblSeries.First; | ||
206 | dmCollection.tblSeries.Next; | ||
207 | while not dmCollection.tblSeries.Eof do | ||
208 | begin | ||
209 | cbSeries.Items.Add(dmCollection.tblSeries['S_Title']); | ||
210 | dmCollection.tblSeries.Next; | ||
211 | end; | ||
228 | end; | 212 | end; |
229 | 213 | ||
214 | function TfrmEditBookInfo.SaveData: boolean; | ||
215 | begin | ||
216 | Result := False; | ||
217 | |||
218 | if not FChanged then | ||
219 | begin | ||
220 | Result := True; | ||
221 | Exit; | ||
222 | end; | ||
223 | |||
224 | if lvAuthors.Items.Count = 0 then | ||
225 | begin | ||
226 | MessageDlg('Укажите минимум одного автора!', mtError, [mbOk], 0); | ||
227 | Exit; | ||
228 | end; | ||
229 | |||
230 | if edT.Text = '' then | ||
231 | begin | ||
232 | MessageDlg('Укажите название книги!', mtError, [mbOk], 0); | ||
233 | Exit; | ||
234 | end; | ||
235 | |||
236 | Result := True; | ||
237 | end; | ||
238 | |||
230 | end. | 239 | end. |
Download diff