Skip to content

Instantly share code, notes, and snippets.

Created August 11, 2013 08:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/6204023 to your computer and use it in GitHub Desktop.
Save anonymous/6204023 to your computer and use it in GitHub Desktop.
Menú de programa de Gestión desde 0
unit UMENU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, ImgList, ExtCtrls, ComCtrls, ALStatusBar, Menus,
ScreenColorCenter, DB, Buttons, SPBBC, StdCtrls;
const InputBoxMessage = WM_USER + 200; // Para imputboxt con password chard
type
TFMenu = class(TForm)
MainMenu1: TMainMenu;
gENERALES1: TMenuItem;
Ventas1: TMenuItem;
Informes1: TMenuItem;
utiles1: TMenuItem;
N1: TMenuItem;
Salir1: TMenuItem;
ActionList1: TActionList;
ALStatusBar1: TALStatusBar;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
ImageList1: TImageList;
A_G_Salir: TAction;
VARIOS1: TMenuItem;
N2: TMenuItem;
Clientes1: TMenuItem;
Proveedores1: TMenuItem;
N3: TMenuItem;
Articulos1: TMenuItem;
N4: TMenuItem;
Lotes1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Cambiodeusuario1: TMenuItem;
Usuarios1: TMenuItem;
A_G_USUARIO: TAction;
CenterScreenColor1: TCenterScreenColor;
DSCONFI: TDataSource;
A_Clientes: TAction;
SpeedButtonBC1: TSpeedButtonBC;
SpeedButtonBC2: TSpeedButtonBC;
SpeedButtonBC3: TSpeedButtonBC;
SpeedButtonBC4: TSpeedButtonBC;
Configuracin1: TMenuItem;
N7: TMenuItem;
ACT_Articulos: TAction;
Action1: TAction;
ACT_FAB_Fabricables: TAction;
Fabricacin1: TMenuItem;
Fabricables1: TMenuItem;
ACT_GEN_Proveedor: TAction;
Act_Gen_Empleados: TAction;
Empleados1: TMenuItem;
Act_Gen_Lotes: TAction;
Lotes2: TMenuItem;
Act_Gen_Entradas: TAction;
Artculos1: TMenuItem;
Gestindeentradas1: TMenuItem;
ACT_Esp_RegularStock: TAction;
Especiales1: TMenuItem;
RegularStock1: TMenuItem;
act_V_Facturas: TAction;
Facturas1: TMenuItem;
ACTAgenda: TAction;
Agenda1: TMenuItem;
ActAlbaranes: TAction;
ActNE: TAction;
ActPResupuestos: TAction;
Albaranes1: TMenuItem;
NotasdeEntrega1: TMenuItem;
Presupuestos1: TMenuItem;
ActCP: TAction;
Cartadeportes1: TMenuItem;
ActVehiculos: TAction;
Vehculos1: TMenuItem;
ACTRuta: TAction;
Rutas1: TMenuItem;
CreaRuta1: TMenuItem;
ActGRutas: TAction;
Gestinderutas1: TMenuItem;
ACTPagoComi: TAction;
Comisiones1: TMenuItem;
Pagodecomisiones1: TMenuItem;
ActComi: TAction;
Comisiones2: TMenuItem;
MonthCalendar1: TMonthCalendar;
SpeedButtonBC5: TSpeedButtonBC;
SpeedButtonBC6: TSpeedButtonBC;
SpeedButtonBC10: TSpeedButtonBC;
SpeedButtonBC11: TSpeedButtonBC;
SpeedButtonBC12: TSpeedButtonBC;
SpeedButtonBC13: TSpeedButtonBC;
SpeedButtonBC14: TSpeedButtonBC;
SpeedButtonBC15: TSpeedButtonBC;
SpeedButtonBC16: TSpeedButtonBC;
SpeedButtonBC17: TSpeedButtonBC;
SpeedButtonBC18: TSpeedButtonBC;
SpeedButtonBC19: TSpeedButtonBC;
SpeedButtonBC20: TSpeedButtonBC;
SpeedButtonBC21: TSpeedButtonBC;
SpeedButtonBC22: TSpeedButtonBC;
SpeedButtonBC23: TSpeedButtonBC;
SpeedButtonBC24: TSpeedButtonBC;
SpeedButtonBC25: TSpeedButtonBC;
SpeedButtonBC26: TSpeedButtonBC;
Timer1: TTimer;
procedure A_G_SalirExecute(Sender: TObject);
procedure N1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
Selected: Boolean);
procedure N5DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
Selected: Boolean);
procedure FormCreate(Sender: TObject);
procedure Cambiodeusuario1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure A_G_USUARIOExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure A_ClientesExecute(Sender: TObject);
procedure SpeedButtonBC2Click(Sender: TObject);
procedure Configuracin1Click(Sender: TObject);
procedure SpeedButtonBC4Click(Sender: TObject);
procedure asignacolores;
procedure ACT_ArticulosExecute(Sender: TObject);
procedure ACT_FAB_FabricablesExecute(Sender: TObject);
procedure ACT_GEN_ProveedorExecute(Sender: TObject);
procedure Act_Gen_EmpleadosExecute(Sender: TObject);
function Acceso(NivelAc:Integer;MForm:TForm):Boolean;
procedure Act_Gen_LotesExecute(Sender: TObject);
procedure Act_Gen_EntradasExecute(Sender: TObject);
procedure ACT_Esp_RegularStockExecute(Sender: TObject);
procedure act_V_FacturasExecute(Sender: TObject);
procedure ACTAgendaExecute(Sender: TObject);
procedure ActAlbaranesExecute(Sender: TObject);
procedure ActNEExecute(Sender: TObject);
procedure ActPResupuestosExecute(Sender: TObject);
procedure ActCPExecute(Sender: TObject);
procedure ActVehiculosExecute(Sender: TObject);
procedure ACTRutaExecute(Sender: TObject);
procedure ActGRutasExecute(Sender: TObject);
procedure ACTPagoComiExecute(Sender: TObject);
procedure ActComiExecute(Sender: TObject);
procedure SpeedButtonBC25Click(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage;
{ Private declarations }
public
{ Public declarations }
end;
var
FMenu: TFMenu;
Usuario:string;
Nivel:Integer;
VarSClaveUSuario:string;
COLOR1GRID,COLOR2GRID,COLORPANELACT,COLORPANELNOACT:TColor;
VarSNomMod,VarsCod:string;
// MyList: TStringList;
implementation
{$R *.dfm}
uses UDM, //Gestión de la Base de datos y las tablas
Fun, //Libreria general de funciones
UAcceso, //Pantalla de seguridad y acceso
UUsuarios, //Gestión de Usuario acceso sóLockKeys de alto nivel
Uclientes, //Gestión Clientes
Uconfi, //Gestión de La configuración del programa
UArticulos, //Gestión de artículos
UFabricables, //Gestión de Fabricables
UProveedor, //Gestión de proveedores
UEmpleados, //Gestión de Empleados
UEntradas, //Gestión de UEntradas
URegulaStock, //Regulaciones de stock
UXPAF, //Gestíon de PResupuestos, pedidos, albaranes y facturas
Uagenda, //Ver contactos
UVehiculos, //GestióNavBar de vehículos
UCartaPortes, //Crea una carta de portes
Urutas, //Crear ruta
UGesRutas, //Gestión de rutas
UCreCOMI, //Realiza el pago de comisiones
UGesComi, //Gestión de comisiones
Ulotes; //Gestión de lotes
procedure TFMenu.InputBoxSetPasswordChar(var Msg: TMessage);
// Para imputboxt con password chard
// ------------------------------------------------------------------------------
// *****************[ Para convertir los caracteres en * de un imput box]*******
// ------------------------------------------------------------------------------
var HInputForm, HEdit, HButton: HWND;
begin
HInputForm := Screen.Forms[0].Handle;
if (HInputForm <> 0) then
begin
HEdit := FindWindowEx(HInputForm, 0, 'TEdit', nil);
SendMessage(HEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);
end;
// ------------------------------------------------------------------------------
// ****************************[ Otras partes importantes de este código ]*******
// {Despues del uses}
// const
// InputBoxMessage = WM_USER + 200; //Para imputboxt con password chard
// {En el Type}
// procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage;
// {USO CON LAS DOS LINEAS}
// PostMessage(Handle, InputBoxMessage, 0, 0); //Para imputboxt con password chard
// if InputBox('Comprobando seguridad', 'Porfavor indroduzca su clave de usuario', '') = VarClaveUSusario then
// ------------------------------------------------------------------------------
end;
function TFMenu.Acceso(NivelAc:Integer;MForm:TForm):Boolean;
//------------------------------------------------------------------------------
//*****************************************************[ funcion de acceso ]****
//------------------------------------------------------------------------------
begin
if Nivel>=NivelAc then
begin
MForm.Show;
Result:=true;
end else
begin
ShowMessage('Debe tener nivel '+IntToStr(NivelAc)+' para poder acceder a este apartado');
Result:=False;
end;
end;
procedure TFMenu.ACTAgendaExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Artículos ]****
// Gestión de Artículos apto desde nivel 7
//------------------------------------------------------------------------------
begin
Acceso(7,Fagenda);
end;
procedure TFMenu.ActAlbaranesExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Albaranes ]****
// Gestión de Albaranes apto desde nivel 6
//------------------------------------------------------------------------------
begin
VarSTipoDocumento:='ALBARAN';
FXPAF.PC.ActivePageIndex:=0;
FXPAF.PC2.ActivePageIndex:=0;
Acceso(6,FXPAF);
end;
procedure TFMenu.ActComiExecute(Sender: TObject);
//------------------------------------------------------------------------------
//************************************************************[ Comisiones ]****
// Gestión de comisiones apto desde nivel 6
//------------------------------------------------------------------------------
begin
Acceso(6,FGesComi);
end;
procedure TFMenu.ActCPExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*******************************************************[ Carta de portes ]****
// Crea una carta de portes apto desde nivel 6
//------------------------------------------------------------------------------
begin
Acceso(6,FCP);
end;
procedure TFMenu.ActGRutasExecute(Sender: TObject);
//------------------------------------------------------------------------------
//******************************************************[ Gestión de rutas ]****
// Gestiona las rutas apto desde nivel 6
//------------------------------------------------------------------------------
begin
Acceso(6,FGesRutas);
end;
procedure TFMenu.ActNEExecute(Sender: TObject);
//------------------------------------------------------------------------------
//******************************************************[ Notas de entrega ]****
// Gestión de Notas de Entrega apto desde nivel 6
//------------------------------------------------------------------------------
begin
VarSTipoDocumento:='PEDIDO';
FXPAF.PC.ActivePageIndex:=0;
FXPAF.PC2.ActivePageIndex:=0;
Acceso(6,FXPAF);
end;
procedure TFMenu.ACTPagoComiExecute(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************[ Pago de comisiones ]****
// Realiza el documento de pago de comisiones apto desde nivel 6
//------------------------------------------------------------------------------
begin
Acceso(6,FCRECOMI);
end;
procedure TFMenu.ActPResupuestosExecute(Sender: TObject);
//------------------------------------------------------------------------------
//**********************************************************[ Presupuestos ]****
// Gestión de Presupuestos apto desde nivel 6
//------------------------------------------------------------------------------
begin
VarSTipoDocumento:='PRESUPUESTO';
FXPAF.PC.ActivePageIndex:=0;
FXPAF.PC2.ActivePageIndex:=0;
Acceso(6,FXPAF);
end;
procedure TFMenu.ACTRutaExecute(Sender: TObject);
//------------------------------------------------------------------------------
//************************************************************[ Crear ruta ]****
// Creación de rutas por documentos apto desde nivel 6
//------------------------------------------------------------------------------
begin
Acceso(6,FRutas);
end;
procedure TFMenu.ActVehiculosExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Vehículos ]****
// Gestión de vehículos apto desde nivel 6
//------------------------------------------------------------------------------
begin
Acceso(6,FVehiculos);
end;
procedure TFMenu.ACT_ArticulosExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Artículos ]****
// Gestión de Artículos apto desde nivel 7
//------------------------------------------------------------------------------
begin
Acceso(7,FArticulos);
end;
procedure TFMenu.ACT_Esp_RegularStockExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*********************************************************[ REgular Stock ]****
// Regulación de Stock apto desde nivel 8 + clave de usuario
//------------------------------------------------------------------------------
begin
if Acceso(8,FRegulaStock) then
begin
FRegulaStock.Hide;
PostMessage(Handle, InputBoxMessage, 0, 0); // Para imputboxt con password chard
if InputBox('Comprobando seguridad', 'Por favor indroduzca su clave de usuario', '')= VarSClaveUSuario then
FRegulaStock.Show
else
begin
ShowMessage('La clave de seguridad no es la adecuada,' + #13 +
'no tiene permiso, para acceder a este apartado');
FRegulaStock.Close;
end;
end;
end;
procedure TFMenu.ACT_FAB_FabricablesExecute(Sender: TObject);
//------------------------------------------------------------------------------
//***********************************************************[ Fabricables ]****
// Gestión de Fabricables apto desde nivel 5
//------------------------------------------------------------------------------
begin
Acceso(5,Fabricables);
end;
procedure TFMenu.Act_Gen_EmpleadosExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Empleados ]****
// Gestión de Empleados apto desde nivel 7
//------------------------------------------------------------------------------
begin
Acceso(7,FEmpleados);
end;
procedure TFMenu.Act_Gen_EntradasExecute(Sender: TObject);
//------------------------------------------------------------------------------
//**************************************************************[ Entradas ]****
// Gestión de lotes apto desde nivel 7
//------------------------------------------------------------------------------
begin
Acceso(7,FEntradas);
end;
procedure TFMenu.Act_Gen_LotesExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*****************************************************************[ Lotes ]****
// Gestión de lotes apto desde nivel 6
//------------------------------------------------------------------------------
begin
Acceso(6,FLotes);
end;
procedure TFMenu.ACT_GEN_ProveedorExecute(Sender: TObject);
//------------------------------------------------------------------------------
//***********************************************************[ Proveedores ]****
// Gestión de Proveedores apto desde nivel 7
//------------------------------------------------------------------------------
begin
Acceso(7,FProveedor);
end;
procedure TFMenu.act_V_FacturasExecute(Sender: TObject);
//------------------------------------------------------------------------------
//**************************************************************[ Facturas ]****
// Gestión de facturas apto desde nivel 6
//------------------------------------------------------------------------------
begin
VarSTipoDocumento:='FACTURA';
FXPAF.PC.ActivePageIndex:=0;
FXPAF.PC2.ActivePageIndex:=0;
Acceso(6,FXPAF);
end;
procedure TFMenu.asignacolores;
//------------------------------------------------------------------------------
//*********************************************************[ AsignaColores ]****
// Asignamos los colores necesarios
//------------------------------------------------------------------------------
begin
if dsconfi.DataSet.FieldByName('COLORA').IsNull then COLOR1GRID:=clmoneygreen
else COLOR1GRID:=StringToColor(DM.IBDCONFI.FieldByName('COLORA').AsString);
if dsconfi.DataSet.FieldByName('COLORB').IsNull then COLOR2GRID:=clInfoBk
else COLOR2GRID:=StringToColor(DM.IBDCONFI.FieldByName('COLORB').AsString);
if dsconfi.DataSet.FieldByName('COLORACTIVO').IsNull then COLORPANELACT:=clSkyBlue
else COLORPANELACT:=StringToColor(DM.IBDCONFI.FieldByName('COLORACTIVO').AsString);
if dsconfi.DataSet.FieldByName('COLORNOACTIVO').IsNull then COLORPANELNOACT:=clBtnFace
else COLORPANELNOACT:=StringToColor(DM.IBDCONFI.FieldByName('COLORNOACTIVO').AsString);
end;
procedure TFMenu.A_ClientesExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Clientes ]****
// Gestión de clientes apto desde nivel 7
//------------------------------------------------------------------------------
begin
Acceso(7,FCLIENTES);
end;
procedure TFMenu.A_G_SalirExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ SALIR ]****
//------------------------------------------------------------------------------
begin
Application.Terminate;
end;
procedure TFMenu.A_G_USUARIOExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Usuario ]****
// Gestión de usuarios apto desde nivel 9
//------------------------------------------------------------------------------
begin
Acceso(9,FUsuarios);
end;
procedure TFMenu.Cambiodeusuario1Click(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Cambio de usuario ]****
// Este apartado esta en uso para todos los niveles
//------------------------------------------------------------------------------
begin
Facceso.Show;
end;
procedure TFMenu.Configuracin1Click(Sender: TObject);
begin
FConfi.Show;
end;
procedure TFMenu.FormActivate(Sender: TObject);
//------------------------------------------------------------------------------
//**********************************************************[ al Activarse ]****
//------------------------------------------------------------------------------
begin
FMenu.Repaint;
Panel1.Align:=alTop;
Panel2.Align:=alBottom;
Panel3.Align:=alClient;
asignacolores;
MonthCalendar1.Date:=Now;
end;
procedure TFMenu.FormClose(Sender: TObject; var Action: TCloseAction);
//------------------------------------------------------------------------------
//*************************************************************[ Cierra el programa ]****
//------------------------------------------------------------------------------
begin
CenterScreenColor1.Active:=False;
if Timer1.Enabled then Timer1.Enabled:=false;
end;
procedure TFMenu.FormCreate(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ al Crearse ]****
//------------------------------------------------------------------------------
begin
Usuario:='Invitado';
Nivel:=0;
ALStatusBar1.Panels[1].Text:='Usuario ['+Usuario+']-['+IntToStr(nivel)+']';
CenterScreenColor1.Active:=True;
if Timer1.Enabled=false then Timer1.Enabled:=True;
end;
procedure TFMenu.FormResize(Sender: TObject);
//------------------------------------------------------------------------------
//*****************************************************[ Cambiar de tamaño ]****
//------------------------------------------------------------------------------
var VarITamanoButton:Integer;
begin
VarITamanoButton:=Width div 14;
SpeedButtonBC1.Width:=VarITamanoButton;
SpeedButtonBC2.Width:=VarITamanoButton;
SpeedButtonBC3.Width:=VarITamanoButton;
SpeedButtonBC4.Width:=VarITamanoButton;
SpeedButtonBC5.Width:=VarITamanoButton;
SpeedButtonBC6.Width:=VarITamanoButton;
SpeedButtonBC10.Width:=VarITamanoButton;
SpeedButtonBC11.Width:=VarITamanoButton;
SpeedButtonBC12.Width:=VarITamanoButton;
SpeedButtonBC13.Width:=VarITamanoButton;
SpeedButtonBC14.Width:=VarITamanoButton;
SpeedButtonBC15.Width:=VarITamanoButton;
SpeedButtonBC16.Width:=VarITamanoButton;
SpeedButtonBC17.Width:=VarITamanoButton;
SpeedButtonBC18.Width:=VarITamanoButton;
SpeedButtonBC19.Width:=VarITamanoButton;
SpeedButtonBC20.Width:=VarITamanoButton;
SpeedButtonBC21.Width:=VarITamanoButton;
SpeedButtonBC22.Width:=VarITamanoButton;
SpeedButtonBC23.Width:=VarITamanoButton;
SpeedButtonBC24.Width:=VarITamanoButton;
SpeedButtonBC25.Width:=VarITamanoButton;
SpeedButtonBC26.Width:=VarITamanoButton;
ALStatusBar1.Panels[0].Width:=Width-500;
end;
procedure TFMenu.FormShow(Sender: TObject);
//------------------------------------------------------------------------------
//**********************************************************[ AL MOSTRARSE ]****
// Cargamos los datos de la BD confi
//------------------------------------------------------------------------------
begin
//
end;
procedure TFMenu.N1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
//------------------------------------------------------------------------------
//**********************************************************[ Un separador ]****
//------------------------------------------------------------------------------
begin
DrawItenMenu(Sender,ACanvas,ARect,Selected);
end;
procedure TFMenu.N5DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
//------------------------------------------------------------------------------
//*************************************************************[ Separador varios ]****
//------------------------------------------------------------------------------
begin
DrawItenMenu(Sender,ACanvas,ARect,Selected,'','[varios y auxiliares]');
end;
procedure TFMenu.SpeedButtonBC25Click(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************[ Cambiar de usuario ]****
//------------------------------------------------------------------------------
begin
Cambiodeusuario1Click(Sender);
end;
procedure TFMenu.SpeedButtonBC2Click(Sender: TObject);
//------------------------------------------------------------------------------
//*******************************************************[ ENTRADA DIRECTA ]****
// Este botón será desactivado al terminar el programa
//------------------------------------------------------------------------------
begin //Realmente lo uso cuando estoy haciendo un programa, para no tener que
//pasar por la ventana de usuarios, luego siempre lo elimino
Usuario:='José Luis';
Nivel:=9;
VarSClaveUSuario:='231068';
ALStatusBar1.Panels[1].Text:='Usuario [ '+Usuario+' ]-['+IntToStr(nivel)+']';
end;
procedure TFMenu.SpeedButtonBC4Click(Sender: TObject);
//------------------------------------------------------------------------------
//*********************************************************[ Reconectar BD ]****
//------------------------------------------------------------------------------
begin
DM.IBDatabase1.Connected:=False;
DM.conectar;
end;
procedure TFMenu.Timer1Timer(Sender: TObject);
//------------------------------------------------------------------------------
//*****************************************************************[ Timer ]****
//------------------------------------------------------------------------------
begin
ALStatusBar1.Panels[2].Text:=FormatDateTime('DDDD,DD "de" mmmm "de" yyyy',Date);
ALStatusBar1.Panels[3].Text:=FormatDateTime('HH:MM:SS AM/PM',Time);
end;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment