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.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009