tMenuItem

12/12/2003

2

Olá pessoal
Preciso de uma ajuda.
Como faço para ler uma tabela (obviamente ela tem poucos registros) e à partir de algum campo criar tMenuItem dentro de um tMainMenu?
Valeu


Responder

Posts

12/12/2003

Fabio.hc

Eu tenho esta rotina:

unit U_FrmMenu;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, IBCustomDataSet, IBQuery, Menus, IBDatabase;

type
  TForm3 = class(TForm)
    qryMenu: TIBQuery;
    Button1: TButton;
    Acesso: TIBDatabase;
    IBTrans: TIBTransaction;
    qryMenuPRG_MENU: TSmallintField;
    qryMenuPRG_TITULO: TIBStringField;
    qryMenuPRG_COD: TSmallintField;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure MenuVirt;
    procedure MyPopupHandler(Sender: TObject);
    function aceProg(paraForm:Integer):boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  MyMainMenu: TMainMenu;
  MySubItems: array[0..53] of TMenuItem;

implementation

uses U_frmSistema;

{$R *.DFM}

procedure TForm3.FormCreate(Sender: TObject);
begin
   qryMenu.Open;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
   MenuVirt;
end;

procedure TForm3.MenuVirt;
var men, smn: integer;
    MyItem: array[0..9] of TMenuItem;
    i: Integer;
begin
   smn:=0;
   if MyMainMenu <> nil then
     MyMainMenu.Destroy;

   MyMainMenu:= TMainMenu.Create(Self);

   qryMenu.First;
   i:=99;
   men:=-1;
   while not qryMenu.Eof do
   begin
      if i <> qryMenuPRG_MENU.Value-1 then
         begin
         men:=men+1;
       i:=qryMenuPRG_MENU.Value-1;
         smn:=0;
      MyItem[men] := TMenuItem.Create(Self);
         case i of
         0: MyItem[men].Caption := ´&Vendas´;
         1: MyItem[men].Caption := ´&Cadastros´;
         2: MyItem[men].Caption := ´Cai&xas´;
         3: MyItem[men].Caption := ´&Estoque´;
         4: MyItem[men].Caption := ´&Relatórios´;
         5: MyItem[men].Caption := ´Con&figurações´;
         end;
       MyMainMenu.Items.Add(MyItem[men]);
         end;
         smn:=smn+1;
        MySubItems[smn] := TMenuItem.Create(Self);
       MySubItems[smn].Caption := qryMenuPRG_TITULO.Value;
      MySubItems[smn].Tag := qryMenuPRG_COD.Value;
      MySubItems[smn].OnClick := MyPopUpHandler;
       MyMainMenu.Items[men].Add(MySubItems[smn]);
   qryMenu.Next;
   end;

  MyItem[men+1] := TMenuItem.Create(Self);
  MyItem[men+1].Caption := ´&Sair´;
  MyItem[men+1].Tag := 0;
  MyItem[men+1].OnClick := MyPopUpHandler;
  MyMainMenu.Items.Add(MyItem[men+1]);
end;

procedure TForm3.MyPopupHandler(Sender: TObject);
begin
   with Sender as TMenuItem do
      aceProg(Tag)
end;

function TForm3.aceProg(paraForm: Integer): boolean;
begin
case paraForm of
  //=====================================================
   0:Close
  //=====================================================
   1:if frmSistema=nil then
         frmSistema:=TfrmSistema.Create(application)
      else
      frmSistema.Show;
  //=====================================================
   2:if FrmPrograma=nil then
         FrmPrograma:=TFrmPrograma.Create(application)
      else
      FrmPrograma.Show;
  //=====================================================
   3:
   ...
   ...
 
end;
   Result:=True;
end;

end.


E a estrutura da tabela é:

PRG_COD: SMALLINT
PRG_MENU: SMALLINT
PRG_TITULO: VARCHAR(30)


Responder

12/12/2003

Nigro

up


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira