Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tutorial vídeo club (https://www.clubdelphi.com/foros/showthread.php?t=87705)

José Luis Garcí 07-03-2015 14:46:00

Comentamos algunas cosas más de los módulos con los que hemos trabajado hoy, en primer lugar en el DM hemos añadido elñ procedimiento


Código Delphi [-]
//------------------------------------------------------------------------------
//***************************************************[ MiControlDeErrores ]*****
//   Ds   Es el datasource a conectar
//   Unidad    LA unidad desde el que la llamamos
//   Apartado  El apartado
//   E    La  exception producida
//------------------------------------------------------------------------------
begin
   MessageBeep(1000);
   ShowMessage('Se ha producido un error y el proceso no se ha podido terminar   Unidad:[ '+Unidad+']   Modulo:[ '+Apartado+' ]' + Chr(13) + Chr(13)

             + 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13)
             + 'Mensaje del error:' + E.Message+Chr(13) + Chr(13)
             + '    '+Chr(13) + Chr(13)
             + 'El proceso ha quedado interrumpido');
  if Ds.DataSet.State in [dsEdit,dsInsert] then DS.DataSet.Cancel;
  DM.IBT.RollbackRetaining;    //Donde IBT es el nombre de su Ibtrasaction, con ruta
end;

Que ya vimos y también vimos como se usaba en Unidades en procedimientos como el de bajas siendo la linea de llamada del código

Código Delphi [-]
DM.MiControlDeErrores(Dsprincipal,'UUnidades','Baja',E);

Lo bueno es que el mismo código, incluso podría substituir parte del código de todos los botones confirmar o en mucho de ellos


En clientes hay una parte que ha cambiado en el formulario y no se mostro, esta es en el panel botonera 2, os pongo una imagen



Como veis ahora podemos buscar por tres campos con el locate, no es el mejor método y de hecho suelo usar pantallas de búsqueda, pero para el tutorial creo que es suficiente, veamos dos trozos de código relacionados con este cambio

Código Delphi [-]
//------------------------------------------------------------------------------
//***********************************************[ ejecutamos la búsqueda ]*****
//------------------------------------------------------------------------------
begin
   case RadioGroup1.ItemIndex of
     0:DSPrincipal.DataSet.Locate('NOMBRE',Edit1.Text,[loCaseInsensitive,loPartialKey]);
     1:DSPrincipal.DataSet.Locate('DIRECCION',Edit1.Text,[loCaseInsensitive,loPartialKey]);
     2:DSPrincipal.DataSet.Locate('DOCUMENTO',Edit1.Text,[loCaseInsensitive,loPartialKey]);
   end;
end;

El primero es cuando le damos a buscar, por lo que miramos que elemento del RadioGroup esta seleccionado para saber por que buscamos

Código Delphi [-]
procedure TFClientes.RadioGroup1Click(Sender: TObject);
begin
    case RadioGroup1.ItemIndex of
       0:Label9.Caption:='Nombre';
       1:Label9.Caption:='Dirección';
       2:Label9.Caption:='Nº de documento';
    end;
end;



El segundo es para que cuando pulsamos en el Radiogroup nos identifique antes del edit por que campo buscamos



Creo que esto es todo por esta semana, si veis algo me dicen, seguro que hay fallos ya que estoy haciendo el tutorial según lo voy explicando. Buen fin de semana a todos

José Luis Garcí 28-03-2015 11:57:48

Después de 2 semanas en las que no he podido dedicarme al tutorial, volvemos no con mucho tiempo, pero entre hoy y mañana espero sacar el módulo de Alquiler y los que este lleva adosados.

Para ello vamos a ver el modulo Uvernotas



Y como su código es pequeño lo subo aquí también

Código Delphi [-]
unit Uvernota;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;

type
  TFvernota = class(TForm)
    Panel1: TPanel;
    SBSalir: TSpeedButton;
    Memo1: TMemo;
    procedure SBSalirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Fvernota: TFvernota;

implementation

{$R *.dfm}

procedure TFvernota.SBSalirClick(Sender: TObject);
//------------------------------------------------------------------------------
//**************************************************************[ SBSalir ]*****
//------------------------------------------------------------------------------
begin
  Close;
end;

end.

José Luis Garcí 28-03-2015 13:41:55

Bien ahora vamos a mostrar los campos de búsqueda , para ello añadimos a nuestro módulo DM una nueva variable que llamaremos varSBusqueda de tipo string

empecemos por buscar clientes



el código en https://gist.github.com/anonymous/8816e6d0705a950e7047


Y nada que comentar sobre este ya que lo haré en el siguiente

José Luis Garcí 28-03-2015 13:51:31

Módulo de buscar unidad



el código en https://gist.github.com/anonymous/da4c9a74ad43969ef4ab

Bueno de este apartado podremos ver la búsqueda activa con un radiogrup, para seleccionar el campo de búsqueda. Este tiene un botón de búsqueda, pero se podría modificar haciéndolo más efectivo usando el onchange del edit.

También en la rejilla usamos el color para poder visualizar la disponibilidad de la unidad o si esta esta bloqueada, bien por estar vendida o perdida. esto también seria mejorable añadiendo un checkbox para que nos mostrase solo las disponibles o sea DISPONIBLE=S, VENDIDA=N y PERDIDA=N.

Mejoras que podemos hacer, pues por ejemplo quitar los grids de Género y Formato y añadir dos DBText que nos lo pusiera directamente

Por cierto en los títulos de género y formato tenemos unos timagen que nos permiten desplazarnos por los grids.

José Luis Garcí 28-03-2015 13:54:45

Ya por último por hoy os pongo como va quedando el módulo de Alquiler donde implantaremos todos estos módulos comentados hoy, mañana intentare seguir un saludo a todos.


Casimiro Notevi 28-03-2015 19:26:10

^\||/^\||/^\||/

José Luis Garcí 30-03-2015 13:55:32

Como ayer no pude seguir he buscado un rato hoy para no atrasarme más, os pongo el módulo de buscar alquiler



Y el código en https://gist.github.com/anonymous/9dc334b3215f17e3b3e7

Primero decir que el módulo no lo he probado ya que no esta terminado el de alquileres, segundo que en este he usado alguno de los sistemas ya comentados anteriormente, por lo que tenéis búsquedas según escribimos en el apartado de buscar por el nombre de cliente, el botón de búsqueda con un selector (El checkbox) permitiéndonos usar una sentencia SQL u otra según nos interese.

Por hoy poco más, en estos días seguiré introduciendo poco a poco este módulo de alquiler, pero estoy bastante liado corrigiendo mi sexta novela, que espero poder presentar a concurso en los próximos meses

José Luis Garcí 12-04-2015 11:00:05

Primero pediros disculpas por la tardanza en continuar, no es que me haya olvidado, pero debo terminar algunas cosas así que en una o dos semanas espero volver a seguir con el tútorial

Casimiro Notevi 12-04-2015 12:50:49

Gracias, un trabajo excelente, como siempre.

pacopenin 13-04-2015 10:36:33

A tu ritmo. Yo encuentro cosas interesantes e ideas. Siempre se aprende, ^\||/:)

Ñuño Martínez 13-04-2015 13:17:49

Lo que han dicho más arriba: a tu ritmo. A mi también me faltan horas para terminar mis cosas, y por eso nunca termino de publicar nada. :(

José Luis Garcí 02-05-2015 16:08:21

Hola compañeros, después de bastante tiempo hoy os pongo los módulos que aunque no terminados del todo,, ya son operativos, lo explico en los siguientes apartados



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


Este móduilo está operativo, salvando algunas pequeñas cosas sin importancía

José Luis Garcí 02-05-2015 16:11:48

El módulo de cobros del alquiler



y el código en https://gist.github.com/anonymous/dfa67e52da10d41bacb6

Esté módulo aunque operativo no esta terminado, ya que nos queda controlar los cobros con recargo, que ya veremos más adelante

José Luis Garcí 02-05-2015 16:13:52

el módulo de búsqueda



y el código en https://gist.github.com/anonymous/f0b647626dc108c10889

Que ha ido cambiando adaptandose a las necesidades

José Luis Garcí 02-05-2015 16:22:04

Algunas cosas a tener en cuenta.

1-Como hemos dicho usamos componentes estandar en delphi, por lo que normalmente uso los míos que me reducen bastante el código

2-No he usado procedures ni funciones para reducir este por lo que hay métodos que se repiten, , si los usáramos se menguaría bastante el código

3-Por diversos motivos he estado un poco liado para el tutorial y no se cuanto tiempo más estaré así, pero os aseguro que en cuanto pueda seguire con él

4-Además del tiempo sin centrarme en él ando un poco despistado. También estoy descentrado por otros motivos, espero estar pronto a pleno rendimiento y seguir colaborando.

5-A lo largo del tutorial he encontrado cosas a subsanar como el campo RECARGO que esta como RACARGO y falta de campos que he ido subsanando con el campo LIBRE de cada tabla, espero os hagáis cargo y si estáis emperezando los subsanéis para que os queden mejor

Espero estar pronto nuevamente con el tutorial y explicar diversos sistemas. De todas maneras estaré por aquí, así que si se os plantea alguna duda intentare responderlas.

Casimiro Notevi 02-05-2015 18:40:04

Gracias ^\||/


La franja horaria es GMT +2. Ahora son las 22:31: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