Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Primero que nada pedir disculpas por haberme atrasado, tanto en seguir, pero estoy preparando la documentación y el material de un curso para una nueva Fabrica de productos de limpieza (es a lo que me dedico ahora a montar fabricas de productos de limpieza por toda España y otros países) y claro me lleva bastante tiempo preparar un informe por producto, más todo lo demás.

Vamos con el módulo de Regulación de Stock, debería ser un módulo con doble nivel de acceso, el nivel de usuario, en mi caso un 8 y además solicito la clave de usuario nuevamente, aún así se debería al grabar los datos, grabar , en un log, ini, XLS o tabla, tanto el usuario, fecha, hora, cantidad anterior, nueva cantidad y motivo, ya que este apartado afectara seriamente a la trazabilidad, en el ejemplo pongo el resumen pero no lo hago pero creo importante este punto.

Dicho lo dicho aquí la imagen



y aquí el código https://gist.github.com/anonymous/5939351
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 06-07-2013 a las 11:58:28.
Responder Con Cita
  #2  
Antiguo 06-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Lo siguiente será empezar con nuestras tablas de documentos (para presupuestos, pedidos, albaranes y facturas), usare el sistema de 3 tablas, la maestro, la detalle y la de lotes, creando sólo las 3 para los cuatro tipos de documentos, la estructura ya os la pondré, pero será fundamental, que las tres tendrán tres campos comunes que ademas las hará maestro-detalle entre las 3, los campos serán Documento(Presupuesto, pedido, etc.), número del documento y serie.

El apartado de documentos lo haré una vez (Facturas, el más completo), y explicare los respectivos cambios aplicables a los otros formatos, pero como comprenderéis, es un apartado enorme, por lo que tendré que ir haciéndolo por partes, empezare, por la facturación tal cual, los lotes, , trazabilidad y regulación de stock, estarán incluidos en estas partes, gestión de comisiones, etc.

Según nos vayamos introduciendo, tendremos que ir creando otras tablas a las que haremos referencia y las iremos comentando, una vez terminado el proceso, nos quedara, los módulos de convención de documentos, rutas y cartas de porte, etc. y podremos dar por terminado el tutorial, salvo que queráis un poco más, tendríamos que verlo.

HE dicho que no pondré como hacer los informes (impresiones) ya que cada uno elegirá su método, pero creo que podre mostraros por lo menos dos, una factura y comentaros, que debe llevar y por que y una carta de portes.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #3  
Antiguo 06-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Si no es molestia, podrían hacerme el favor de valorar el trabajo hasta este momento, lo más sinceramente posible, el motivo, es que como siempre he dicho y he mantenido, yo no soy un experto y necesito saber cuales son mis puntos fuertes, para intentar mejorar.

Me gustaría que lo valorarais de la siguiente manera, del 1 al 10, siendo 1 la menor valoración claro, cada una de las siguientes facetas, y si se os ocurre alguna, ya sabéis.

Explicaciones
Claridad
Código
Tablas
Descripciones
Diseño
Conceptos
forma de aplicar los conceptos
y utilidad

Esto me permitirá, en cuanto al tutorial, intentar corregir y mejorarlo , si puedo y ha nivel personal, seguir aprendiendo y como no autoestima, que me la podéis hundir más o nivelar
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 06-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por José Luis Garcí Ver Mensaje
Primero que nada pedir disculpas por haberme atrasado, tanto en seguir, pero estoy preparando la documentación y el material de un curso para una nueva Fabrica de productos de limpieza (es a lo que me dedico ahora a montar fabricas de productos de limpieza por toda España y otros países) y claro me lleva bastante tiempo preparar un informe por producto, más todo lo demás.
Faltaría más, tú haces el trabajo, lo regalas y... ¿pides disculpas por el atraso?, ¡¡¡un monumento tendríamos que hacerte por esta labor desinteresada!!!
Ojalá pudiésemos compensar a todos los que colaboran con clubdelphi

Por cierto, tu nuevo trabajo parece interesante
Saludos.
Responder Con Cita
  #5  
Antiguo 06-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Faltaría más, tú haces el trabajo, lo regalas y... ¿pides disculpas por el atraso?, ¡¡¡un monumento tendríamos que hacerte por esta labor desinteresada!!!
Ojalá pudiésemos compensar a todos los que colaboran con clubdelphi

Por cierto, tu nuevo trabajo parece interesante
Saludos.
Gracias Casimiro, pero creo que si empiezo un tutorial, es por que tengo un compromiso con el club y como tal debo responder, lo mejor que pueda, claro y como supongo que hay gente siguiendo el tema, que menos que disculparme por los atrasos.

Si lo que pasa, es que la gente tiene miedo a montar empresas, te aseguro que es un sector con un margen de beneficio, mínimo de un 35% en 3 o cuatro productos y de más de 500% de beneficios en otros, la media es superior al 100% del coste de la mercancía, necesitas vender volumen, en unos casos y en otros ganas por beneficio, pero con una experiencia de más de diez años en la formulación y gestión de empresas de limpieza y cosmética, no se ha que otra cosa dedicarme, y por muy poco dinero (20.000'00 euros) se puede montar una fabrica de limpieza (no de cosmética) donde se incluye, el alquiler y fianza del local, constitución de la empresa, vehículo de segunda mano, materiales, materias primas, etc.) también incluye el curso que tengo que dar, +- 8-10 fórmulas, dependiendo cuales quieran y lo mejor es que no hay que tener preparación previa y son muy pocos requisitos legales.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 06-07-2013 a las 12:47:43.
Responder Con Cita
  #6  
Antiguo 07-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Empezamos con la tabla documentos, como es una tabla para nuestros tipos de documentos, usaremos los identificadores X=Presupuestos, P=Pedidos, A=Albaranes y F=Facturas para indicar en que documento lo usaremos.

Cita:
CREATE TABLE DOCUMENTOS (
ID INTEGER NOT NULL,
TIPODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //......................tipo de documento (XPAF)
NUMERODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................código del documento (XPAF)
SERIE T3 NOT NULL /* T3 = VARCHAR(3) */, //.....................Serie del documento (XPAF)
CODIGOCLIENTE T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................Código del cliente (XPAF)
DESCRIPCIONCLIENTE T80 /* T80 = VARCHAR(80) */, //......................1 (XPAF)
IDDIRECCIONES INTEGER NOT NULL, //.....................el campo id de la tabla direcciones ya tratada, al tener la posibilidad de varias direcciones (XPAF)
CODIGOAGENTE T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................código del agente o comercial (XPAF)
DESCRIPCIONAGENTE T80 /* T80 = VARCHAR(80) */, //.....................1 (XPAF)
FECHA DATE NOT NULL, //.....................Fecha de emisión de la factura (XPAF)
NUMERODECOBRO T20 /* T20 = VARCHAR(20) */, //.....................Numero (código) de tablas COBROS (Pendiente) donde registraremos la forma en que se nos ha pagado (F)
COBRADO LOG NOT NULL /* LOG = CHAR(1) */, //.....................(S/N) indica si la factura ya esta cobrada, al tener el campo NUMERODECOBRO podemos ver más detalles (F)
NUMERORUTA T20 /* T20 = VARCHAR(20) */, //.....................Numero (código) de tablas RUTAS (Pendiente) donde registraremos las rutas de entrega (PAF)
FECHAENTREGA DATE, //.....................Fecha de la entrega, si cambiamos la ruta, cambiara la fecha (2) (PAF)
FORMADEPAGO T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................Código de la taba forma de pago (XPAF)
DESCRIPCIONFORMADEPAGO T80 /* T80 = VARCHAR(80) */, //...................../1 (XPAF)
NUMEROFINANCIADO T20 /* T20 = VARCHAR(20) */, //.....................Numero (código) de tablas FINANCIADO (Pendiente) donde registraremos las financiación de pagos (PAF)
TOTALFINANCIADO POR /* POR = NUMERIC(15,4) */, //.....................Total del dinero financiado, no tiene por que ser el total de la factura
NUMERORETENCIONES T20 /* T20 = VARCHAR(20) */, //...................../Numero (código) de tablas RETENCIONES (Pendiente) donde registraremos las retenciones hechas a clientes (PAF)
TOTALRETENCIONES POR /* POR = NUMERIC(15,4) */, //...................../Importe de las retenciones
PORCENTAJERETENCIONES POR /* POR = NUMERIC(15,4) */, //.....................porcentaje de retenciones aplicadas, puede variar a la que ya tiene aplicada el cliente (3) (F)
TOTALCOMISIONES POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de comisiones (XPAF). (4)
NUMEROPROTECCIONDATOS INTEGER NOT NULL //.....................Elegimos entre el 1 y el 3 de la tabla CONFIGURACION donde 1 =LDPD1 ... 3=LDPD3, que texto debemos poner (XPAF)
CAMPOLIBRE T80 /* T80 = VARCHAR(80) */, //.....................Campo libre ya que la ley va cambiando o podemos necesitar (XPAF)
MODIFICACIONES INTEGER NOT NULL, //.....................Número de veces que se ha modificado la factura, nos permite controlar si se ha alterado (5) (XPAF)
ESTADO T40 /* T40 = VARCHAR(40) */, //...................../Estado actual de la factura (Pendiente, cobrada, nula (5), etc) (XAPF)
NUMERORELACIONFACTURAS T20 /* T20 = VARCHAR(20) */, //...................../Numero (código) de tablas RELACIONFACTURAS (Pendiente) donde agruparemos facturas de un cliente (F)
SERIERELACIONFACTURAS T3 /* T3 = VARCHAR(3) */, //.....................Serie de la relación de facturas (F)
SUBTOTAL POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Subtotal del importe (XPAF)
TOTALDESCUENTOS POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Importe del total de descuentos (XPAF)
TOTALPESO POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total del peso perteneciente al documento (XPAF)
TOTALIMPUESTOS POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos (XPAF)
TOTALIMPUESTO1 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 1 (XPAF)
TOTALIMPUESTO2 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 2 (XPAF)
TOTALIMPUESTO3 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 3 (XPAF)
TOTALIMPUESTO4 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 4 (XPAF)
MININOTA VARCHAR(150) //...................../Campo de 150 caracteres, ya que las notas las haremos a través de la tabla NOTAS (XPAF)
);

1) las descripciones es para posibles cambios sin tener que editar o crear un registro nuevo
ejemplo: Código cliente= 0 Descripción general 'Contado' campo DESCRIPCIONCLIENTE 'Contado - (trabajador taller Antonio)'

2) Si ponemos la ruta para hoy i por cualquier motivo no se puede entregar en la fecha prevista, la pondremos en la siguiente hoja de ruta, por lo que debemos controlar el cambio
de la fecha de entrega

3) El cliente puede solicitar que le aumentes o disminuyas el porcentaje de retenciones en una factura, únicamente. Estará presente en PAF, pero se puede variar y determina sólo
el de la factura, por defecto coge el del cliente, que es lo habitual.

4) Las comisiones irán a su tabla de comisiones, donde pondremos de que documento viene, de aquí podremos realizar el pago de comisiones, recordar que el pago de comisiones
hay que hacerle la retención para el pago de Hacienda.

5) Las Facturas no se pueden borrar, ya que afectan a varios departamentos y alteran la aplicación, no quiero decir que no se puedan, pero no se deben bajo ningún concepto,
ejemplo : tenemos la factura 120001, que es el mismo valor actual de nuestro numerador de facturas y nos damos cuenta al terminar, de que esta mal, claro que podríamos
borrarla y modificar el numerador, pero si el numerador ya va por el 120025, o otro cualquiera, borramos la factura y queda un salto en el registro de facturación, motivo de
auditoria en hacienda, si no queda bien explicado y suele pasar, cuando trabajamos todo el año con cientos o miles de facturas, quien se acuerda de una determinada, de hace
x meses.

---------------------------------------------------------------------------------------------------------------------------------------------------------


Como podemos ver se va complicando la cosa, es posible que se me olvide algún campo, así que ya iremos viendo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #7  
Antiguo 07-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
ahora la tabla detalle

Cita:
CREATE TABLE DETALLE (
ID INTEGER NOT NULL,
IDENTIFICADOR INTEGER NOT NULL, //............................................. FOREIGN KEY con el id de documentos
TIPODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. tipo de documento (XPAF)
NUMERODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. código del documento (XPAF)
SERIE T3 NOT NULL /* T3 = VARCHAR(3) */, //............................................. Serie del documento (XPAF)
CODIGOARTICULO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. Código del artículo (XPAF)
DESCRIPCIONARTICULO T80 /* T80 = VARCHAR(80) */, //............................................. 1 (ver en post anterior) (XPAF)
CANTIDAD INTEGER NOT NULL, //............................................. Cantidad o unidades del artículo (XPAF)
PRECIOUNIDAD POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Precio de la unidad (XPAF)
IMPUESTO POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Porcentaje del impuesto (XPAF)
DESCUENTO POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Porcentaje del descuento (XPAF)
COMISION POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Porcentaje de la comisión (XPAF)
PESOUNIDAD POR /* POR = NUMERIC(15,4) */, //............................................. peso de cada unidad (XPAF)
MININOTA VARCHAR(150), //............................................. Campo texto de 150 caracteres, para ampliar detalles (XPAF)
CAMPOLIBRE T80 /* T80 = VARCHAR(80) */, //............................................. Campo libre ya que la ley va cambiando o podemos necesitar (XPAF)
MODIFICADO INTEGER NOT NULL, //............................................. Número de veces que se ha modificado (XPAF)
SERVICIO LOG /* LOG = CHAR(1) */, //............................................. Es un servicio (XPAF)
IDPRECIOESPECIAL INTEGER, //............................................. Número del ID, si el precio tomado es precio especial para el cliente (1) (XPAF)
ALMACEN T20 /* T20 = VARCHAR(20) */, //............................................. Almacén del que sale la mercancía (XPAF)
NUMEROPRESUPUESTO T20 /* T20 = VARCHAR(20) */, //............................................. Número (Código) del presupuesto que viene (2) (PAF)
NUMEROPEDIDO T20 /* T20 = VARCHAR(20) */, //............................................. Número (Código) del pedido que viene (2) (AF)
FECHAPEDIDO DATE, //............................................. Fecha del pedido del que viene (2) (AF)
NUMEROALABARAN T20 /* T20 = VARCHAR(20) */, //............................................. Número (Código) del albarán que viene (2) (A)
FECHAALBARAN T20 /* T20 = VARCHAR(20) */ //............................................. Fecha del albarán del que viene (2) (A)
);

/******************************************************************************/
/* Foreign Keys */
/******************************************************************************/

// ALTER TABLE DETALLE ADD CONSTRAINT FK_DETALLE_1 FOREIGN KEY (IDENTIFICADOR) REFERENCES DOCUMENTOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
1) si tiene precio especial, no le afecta ni rapel, ni otros

2) El cliente normalmente quiere que en el documento de unión (albarán o factura) aparezca reflejado por documentos para el poder revisarlos y comprobar, por ello debemos crear un registro que
especifique según sea el caso de manera que si es un albarán sería 'Pedido 120001 fecha 07/072012' y si fuera una factura sería 'Albarán 120025 fecha 30/07/2012', detallando despues de
cada linea del pedido o albarán.
Este no sería el caso si el cliente tiene un rapel o escandallo con cierre final, ya que para ello debemos unir todos los campos con el mismo código de articulo, para obtener la cantidad de
unidades y ver que precio se le asigna, por lo que el precio del albarán o de la factura difieren, pero aún así debemos registrar de que albaranes o pedido bien, pero lo haríamos al pie del
documento dentro de sus notas.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #8  
Antiguo 07-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Ahora la última de las tres la tabla lotes de documentos (LOTESDOCUMENTOS)

Cita:
CREATE TABLE LOTESDOCUMENTOS (
ID INTEGER NOT NULL,
IDENTIFICADOR INTEGER NOT NULL, //............................................. FOREIGN KEY con el id de documentos
TIPODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. tipo de documento
NUMERODOCUMETO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. código del documento
SERIE T3 NOT NULL /* T3 = VARCHAR(3) */, //............................................. Serie del documento
LOTE T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. número de lote
CANTIDAD INTEGER NOT NULL, //............................................. Cantidad de este artículo con este lote
CODIGOARTICULO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. código del artículo
ADR T80 /* T80 = VARCHAR(80) */, //............................................. Descripción y texto ADR
EXCEPCION INTEGER, //............................................. Cantidad exceptuada del ADR
LIMITE INTEGER, //............................................. limite de carga en vehículo con medidas mínimas según el ADR
CADUCIDAD DATE, //............................................. fecha de caducidad de este lote
CAMPOLIBRE T80 /* T80 = VARCHAR(80) */ //............................................. Campo libre ya que la ley va cambiando o podemos necesitar
);


//******************************************************************************/
//* Foreign Keys */
//******************************************************************************/

//ALTER TABLE LOTESDOCUMENTOS ADD CONSTRAINT FK_LOTESDOCUMENTOS_1 FOREIGN KEY (IDENTIFICADOR) REFERENCES DETALLE (ID) ON DELETE CASCADE ON UPDATE CASCADE;
Como podemos ver tenemos una relación entre las tablas siendo de la siguiente manera

DOCUMENTOS.ID------>DETALLES.IDENTIFICADOR y
DETALLES.ID ------------------ LOTESDOCUMENTOS.IDENTIFICADOR

También contamos con los campos TIPODOCUMENTO, NUMERODOCUMETO y SERIE, para poder hacer sus búsquedas y relaciones en SQL.

Podríamos hacerlo creando un juego de tablas por tipo de documentos, que sería la manera más simple y rápida de hacer, pero esta manera, nos permite reducir consumo de recursos, ya que muchos campos son repetitivo, e incluso eliminar la tabla de LOTESDOCUMENTOS y unir sus campos a los de DETALLES, pero de esta manera es más clara.

Como siempre espero este clara la explicación actual y si hay dudas, comentarios, o consejos, rectificaciones, etc, ya sabéis, aquí estoy.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #9  
Antiguo 09-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Para que valláis abriendo boca una imagen del visor de documentos, sin estar activo aún muchos campos



en el apartado 1 veréis un DBtext, con el fondo en verde, realmente va en transparente, pero como no contiene datos aún, para controlar se u ancho

El código en https://gist.github.com/anonymous/5956364


Para que este sistema funcione debemos usar en su llamada el siguiente sistema

Código Delphi [-]
procedure TFMenu.act_V_FacturasExecute(Sender: TObject);
//------------------------------------------------------------------------------
//**************************************************************[ Facturas ]****
// Gestión de Proveedores apto desde nivel 6
//------------------------------------------------------------------------------
begin
    VarSTipoDocumento:='FACTURA';
    FXPAF.PC.ActivePageIndex:=0;
    FXPAF.PC2.ActivePageIndex:=0;
    Acceso(6,FXPAF);
end;

Y el procedimiento acceso
Código Delphi [-]
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;

En algunos casos, deberemos confirmar con la clave de acceso al programa, la entrada en un apartado esto lo haremos de la siguiente manera

Código Delphi [-]
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;


Para ello necesitamos estos cambios en nuestro programa

Código Delphi [-]
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;

Espero os sea útil y como siempre espero vuestros comentarios.

Por cierto, que nadie se anima a valorar el trabajo, es una buena manera de saber, donde tengo que mejorar y todos podéis hacerlo, ni me ofende, ni me molesta y es un buen ejercicio, para ver con la perspectiva de los compañeros el trabajo que estoy realizando os recuerdo como pido que me valoréis el trabajo.

Cita:
í Si no es molestia, podrían hacerme el favor de valorar el trabajo hasta este momento, lo más sinceramente posible, el motivo, es que como siempre he dicho y he mantenido, yo no soy un experto y necesito saber cuales son mis puntos fuertes, para intentar mejorar.

Me gustaría que lo valorarais de la siguiente manera, del 1 al 10, siendo 1 la menor valoración claro, cada una de las siguientes facetas, y si se os ocurre alguna, ya sabéis.

Explicaciones
Claridad
Código
Tablas
Descripciones
Diseño
Conceptos
forma de aplicar los conceptos
y utilidad

Esto me permitirá, en cuanto al tutorial, intentar corregir y mejorarlo , si puedo y ha nivel personal, seguir aprendiendo y como no autoestima, que me la podéis hundir más o nivelar
No se si es la época o qué, pero parece que los compañeros, no están muy animados a participar, como hace un par de años, claro esta es mi opinión, humildemente.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
llamar un programa desde otro programa en un computador con dos monitores RONPABLO Varios 0 10-10-2011 18:20:51
Cargar tu programa desde otro programa rmendoza83 Varios 7 05-01-2009 19:51:33
Lanzar programa desde mi programa Pablo Carlos API de Windows 32 09-09-2004 13:56:26
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
ISC ERROR CODE:335544344 I/O error for file "c:\gestion\gestion.gdb" eliasterrero Firebird e Interbase 2 28-06-2004 12:20:25


La franja horaria es GMT +2. Ahora son las 18:50:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi