Buscar

Cria um mainmenu via bd automaticamente

Código

{
  Cria um "MainMenu" via banco de dados automaticamente
  -> Arquivo MENUS.DBF
  Campos -> Campo Character 20 -> Nome do campo
            Sequencia Character 1 -> 1,2,3,...
            Ordem Character 1 -> 1,2,3,...
            Flag Boolean -> .T. ou .F.
            CampoNN Character 20 -> Nome do SubCampo
            FlagNN Boolean -> .T. ou .F.
  -> Índice = 'Sequencia + Ordem'
  Desenvolvido em Clipper/Dbase, função Achoice()
  Convertido para Delphi 7.0 em 20/Agosto/2004
}

unit MenuPas;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, Menus, Grids, DBGrids,
  DB, DBTables, ExtCtrls, DBCtrls, Buttons;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Button1: TButton;
    BitBtn1: TBitBtn;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    Table1: TTable;
    Table1CAMPO: TStringField;
    Table1SEQUENCIA: TStringField;
    Table1ORDEM: TStringField;
    Table1FLAG: TBooleanField;
    Table1CAMPO01: TStringField;
    Table1CAMPO02: TStringField;
    Table1CAMPO03: TStringField;
    Table1CAMPO04: TStringField;
    Table1CAMPO05: TStringField;
    Table1FLAG01: TBooleanField;
    Table1FLAG02: TBooleanField;
    Table1FLAG03: TBooleanField;
    Table1FLAG04: TBooleanField;
    Table1FLAG05: TBooleanField;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  NewItem: TMenuItem;
  X, I, K: integer;
  XCampo: string;
  XFlag: Boolean;
begin
  Table1.First;
  K := Table1SEQUENCIA.AsInteger;
  while (K <= 1000) and not Table1.Eof do
  begin
    K := Table1SEQUENCIA.AsInteger;
    NewItem := TMenuItem.Create(MainMenu1);
    try
      NewItem.Caption := Table1CAMPO.Value;
      NewItem.Enabled := Table1FLAG.Value;
      MainMenu1.Items.Add(NewItem);
    except
      NewItem.Free;
      raise; { reraise the exception }
    end;
    Table1.Next;
    I := K;
    while (I = K) and not Table1.Eof do
    begin
      NewItem := TMenuItem.Create(Self);
      try
        NewItem.Caption := Table1CAMPO.Value;
        NewItem.Enabled := Table1FLAG.Value;
        MainMenu1.Items[K - 1].Add(NewItem);
        X := 1;
        while (X <= 5) do
        begin
          XCampo := '';
          XFlag := False;
          if (X = 1) then
          begin
            XCampo := Table1CAMPO01.Value;
            XFlag := Table1FLAG01.Value;
          end
          else if (X = 2) then
          begin
            XCampo := Table1CAMPO02.Value;
            XFlag := Table1FLAG02.Value;
          end
          else if (X = 3) then
          begin
            XCampo := Table1CAMPO03.Value;
            XFlag := Table1FLAG03.Value;
          end
          else if (X = 4) then
          begin
            XCampo := Table1CAMPO04.Value;
            XFlag := Table1FLAG04.Value;
          end
          else if (X = 5) then
          begin
            XCampo := Table1CAMPO05.Value;
            XFlag := Table1FLAG05.Value;
          end;
          if XCampo <> '' then
          begin
            NewItem := TMenuItem.Create(Self);
            try
              NewItem.Caption := XCampo;
              NewItem.Enabled := XFlag;
              MainMenu1.Items[K - 1].Items[Table1ORDEM.AsInteger - 1].Add(NewItem);
            except
              NewItem.Free;
              raise; { reraise the exception }
            end;
          end;
          Inc(X);
        end;
      except
        NewItem.Free;
        raise; { reraise the exception }
      end;
      Table1.Next;
      K := Table1SEQUENCIA.AsInteger;
    end;
  end;
end;

end.
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Forms
Adicionada dia: 20/05/05
Por: Ricardo L. S.
Visualizada: 4298 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009