Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание динамического дерева меню в Delphi из таблицы SQL Server

Delphi , Синтаксис , Деревья

Для создания динамического дерева меню в Delphi из таблицы SQL Server, вам понадобится выполнить следующие шаги:

  1. Подключитесь к базе данных SQL Server и получите данные из таблицы.
  2. Создайте функцию, которая будет рекурсивно создавать меню на основе данных из таблицы.
  3. Используйте функцию для создания дерева меню в вашем приложении.

Вот пример кода на Object Pascal, который демонстрирует, как это можно сделать:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, DB, SQLDB, DBCtrls;

type
  TForm1 = class(TForm)
    SQLConnection1: TSQLConnection;
    SQLQuery1: TSQLQuery;
    PopupMenu1: TPopupMenu;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    function CreateMenuItems(ParentItem: TMenuItem; DataSet: TDataSet): TMenuItem;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.CreateMenuItems(ParentItem: TMenuItem; DataSet: TDataSet): TMenuItem;
var
  ChildItem: TMenuItem;
  i: Integer;
begin
  Result := nil;
  for i := 0 to DataSet.FieldCount - 1 do
  begin
    if (DataSet.Fields[i].Name = 'parent_id') and (DataSet.Fields[i].AsInteger = ParentItem.Tag) then
    begin
      ChildItem := TMenuItem.Create(nil);
      ChildItem.Caption := DataSet.Fields['name'].AsString;
      ChildItem.Tag := DataSet.Fields['id'].AsInteger;
      if not Assigned(Result) then
        ParentItem.Add(ChildItem)
      else
        Result.Add(ChildItem);
      Result := CreateMenuItems(ChildItem, DataSet);
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SQLConnection1.Connected := True;
  SQLQuery1.SQL.Text := 'SELECT id, parent_id, name FROM your_table_name';
  SQLQuery1.Open;
  PopupMenu1.Items.Clear;
  while not SQLQuery1.EOF do
  begin
    with TMenuItem.Create(nil) do
    begin
      Caption := SQLQuery1.Fields['name'].AsString;
      Tag := SQLQuery1.Fields['id'].AsInteger;
      PopupMenu1.Items.Add(CreateMenuItems(self, SQLQuery1));
    end;
    SQLQuery1.Next;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SQLQuery1.Close;
  SQLConnection1.Connected := False;
end;

end.

В этом примере, мы используем рекурсивную функцию CreateMenuItems, чтобы создать меню на основе данных из таблицы. Функция принимает в качестве параметра родительский элемент меню и набор данных из таблицы. Функция перебирает все записи в наборе данных и создает новый элемент меню для каждой записи, у которой родительский ID совпадает с текущим родительским элементом. Затем она рекурсивно вызывает саму себя для создания дочерних элементов меню для нового элемента меню.

В методе FormCreate мы подключаемся к базе данных, получаем данные из таблицы и создаем основные элементы меню. Для каждого элемента меню мы вызываем функцию CreateMenuItems, чтобы создать дочерние элементы меню.

В методе FormDestroy мы закрываем набор данных и отключаемся от базы данных.

Надеюсь, этот пример поможет вам создать динамическое дерево меню в вашем приложении Delphi на основе данных из таблицы SQL Server.

Создано по материалам из источника по ссылке.

Для создания динамического дерева меню в Delphi из таблицы SQL Server, вам понадобится подключиться к базе данных, получить данные из таблицы, создать рекурсивную функцию для создания меню на основе данных и использовать эту функцию для создания дерева ме


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Деревья ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 23:46:26/0.0053079128265381/1