O:=Query.FieldByName('id').AsInteger;
Query.Close;
ListBox3.Items.Clear;
Query.SQL.Text:=
'select name from attrs'+
' inner join objects on (objects.id = attrs.object_id)'+
' where (objects.name="'+ListBox2.Items[ListBox2.ItemIndex]+'")';
Query.Open;
Query.First;
for i:=0 to Query.RecordCount-1 do
begin
ListBox3.Items.Add(Query.FieldByName('name').AsString);
Query.Next;
end;
Query.Close;
end;
{Кнопка "ADD-Объект"}
procedure TForm1.Button2Click(Sender: TObject);
var
id: String;
begin
if (Edit2.Text<>'') then
begin
ListBox2.Items.Add(Edit2.Text);
Query.SQL.Text:='select max(id) as max_id from Objects';
Query.Open;
Query.First;
id:=IntToStr(Query.FieldByName('max_id').AsInteger+1);
Query.Close;
Query.SQL.Text:='insert into Objects (id, Cl, name) values ('+id+', '+IntToStr(C)+', "'+Edit2.Text+'")';
Query.ExecSQL;
end;
end;
{Вывод Tree с помощью нажатия кнопки}
procedure TForm1.Button5Click(Sender: TObject);
var
i, j: integer;
SL: TStringList;
MS: TMemoryStream;
begin
SL:=TStringList.Create;
SL.Add(ListBox1.Items[ListBox1.ItemIndex]);
Query.SQL.Text:='select id, name from objects where (cl='+IntToStr(C)+')';
Query.Open;
Query.First;
for i:=0 to Query.RecordCount-1 do
begin
SL.Add(' '+Query.FieldByName('name').AsString);
SubQuery.SQL.Text:='select name from attrs where (object_id='+Query.FieldByName('id').AsString+')';
SubQuery.Open;
SubQuery.First;
for j:=0 to SubQuery.RecordCount-1 do
begin
SL.Add(' '+SubQuery.FieldByName('name').AsString);
SubQuery.Next;
end;
SubQuery.Close;
Query.Next;
end;
Query.Close;
MS:=TMemoryStream.Create;
SL.SaveToStream(MS);
SL.Free;
MS.Seek(0, soFromBeginning);
TreeView1.LoadFromStream(MS);
MS.Free;
end;
{Удалить все Атрибуты}
procedure TForm1.Button4Click(Sender: TObject);
begin
Query.SQL.Text:='delete from Attrs';
Query.ExecSQL;
ListBox3.Items.Delete(ListBox3.ItemIndex);
end;
{Кнопка "View" выводит имеющиеся Структуры }
procedure TForm1.btnViewClassesClick(Sender: TObject);
var
i: integer;
begin
ListBox1.Items.Clear;
Query.SQL.Text:='select name from cllist';
Query.Open;
Query.First;
for i:=0 to Query.RecordCount-1 do
begin
ListBox1.Items.Add(Query.FieldByName('name').AsString);
Query.Next;
end;
Query.Close;
end;
{Кнопка "ADD-Атрибутов"}
procedure TForm1.btnAddAttrClick(Sender: TObject);
var
id: String;
begin
if (Edit3.Text<>'') and (Edit4.Text<>'') then
begin
ListBox3.Items.Add(Edit3.Text+'_'+Edit4.Text);
Query.SQL.Text:='select max(id) as max_id from attrs';
Query.Open;
Query.First;
id:=IntToStr(Query.FieldByName('max_id').AsInteger+1);
Query.Close;
Query.SQL.Text:='insert into Attrs (id, object_id, name) values ('+id+', '+IntToStr(O)+', "'+Edit3.Text+'_'+Edit4.Text+'")';
Query.ExecSQL;
end;
end;
{Кнопка "Отчистить всю Базу"}
procedure TForm1.Button8Click(Sender: TObject);
begin
ListBox1.Items.Clear;
ListBox2.Items.Clear;
ListBox3.Items.Clear;
TreeView1.Items.Clear;
Query.SQL.Text:='delete from ClList';
Query.ExecSQL;
Query.SQL.Text:='delete from Objects';
Query.ExecSQL;
Query.SQL.Text:='delete from Attrs';
Query.ExecSQL;
end;
{Удаление Всех объектов и атрибутов}
procedure TForm1.Button3Click(Sender: TObject);
begin
ListBox2.Items.Clear;
ListBox3.Items.Clear;
Query.SQL.Text:='delete from Objects';
Query.ExecSQL;
Query.SQL.Text:='delete from Attrs';
Query.ExecSQL;
end;
end.
Пример работы программы.
Вывод.
Мы научились строить семантические сети и изучили основные свойства и способы применения семантических сетей.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.