185
186 PrintTree();
187 ChangeTrees();
188 PrintTree();
189
190 btnDraw.Enabled := true;
191 btnAdd.Enabled := true;
192 btnDelete.Enabled := true;
193 btnSave.Enabled := true;
194 btnSearch.Enabled := true;
195 end;
196
197 procedure TfMain.FormCreate(Sender: TObject);
198 begin
199 TreeView := tvBTree2;
200 end;
201
202 procedure TfMain.btnAddClick(Sender: TObject);
203 var key: integer;
204 begin
205 Randomize();
206 fInput.Caption := 'Вставить элемент';
207 fInput.lbQ.Caption := 'Введите ключ для вставки:';
208 fInput.eInput.Value := Random(200) + 1;
209
210 if fInput.ShowModal = mrOk then
211 begin
212 key := fInput.eInput.Value;
213 if not bt.Search(bt.RootPos, key) then
214 begin
215 bt.Insert(key);
216 SelectByKey(LastAdded);
217 SetNodeBoldState(TreeView.Selected, false);
218 ChangeTrees();
219 PrintTree();
220 SelectByKey(key);
221 LastAdded := key;
222 SetNodeBoldState(TreeView.Selected, true);
223 NumOfKeys := NumOfKeys + 1;
224 end
225 else MessageDlg('Ключ существует', mtInformation, [mbOK], 0);
226 end;
227 end;
228
229
230 procedure TfMain.btnDeleteClick(Sender: TObject);
231 var key, prev: integer;
232 TreeView1: TTreeView;
233 begin
234 fInput.Caption := 'Удалить элемент';
235 fInput.lbQ.Caption := 'Введите ключ, который надо удалить:';
236
237 if TreeView.Selected <> nil then
238 with TreeView.Selected do
239 begin
240 if Text[1] <> '>' then
241 fInput.eInput.Value := StrToInt(Text)
242 else fInput.eInput.Value := StrToInt(Copy(Text, 2, length(Text)));
243 end
244 else fInput.eInput.Value := Random(200) + 1;
245
246 if fInput.ShowModal = mrOk then
247 begin
248 key := fInput.eInput.Value;
33