Skip to content

Instantly share code, notes, and snippets.

Created July 9, 2013 10:31
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/5956364 to your computer and use it in GitHub Desktop.
Save anonymous/5956364 to your computer and use it in GitHub Desktop.
Vista del visor de documentos (1 de varios) para el tutorial de programa de gestión desde 0
unit UXPAF;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, GroupboxJL, Spin, Buttons, SPBBC, ExtCtrls,
NewPanelDB, DB, Grids, DBGrids, DBneweditjl, MyDbIbMemo, Mask, DBCtrls,
TDbIbchkbox;
//[ 1]----------------[ Para poder tener tabs del page control en color]--------
Type
TTabSheet = class(ComCtrls.TTabSheet)
private
FColor: TColor;
procedure SetColor(Value: TColor);
procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd);
message WM_ERASEBKGND;
public
constructor Create(aOwner: TComponent); override;
property Color: TColor read FColor write SetColor;
end;
//[ 1]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
type
TFXPAF = class(TForm)
PanelBotonera: TNewPanelDB;
SBPrimero: TSpeedButtonBC;
SBMenosx: TSpeedButtonBC;
SBMenos1: TSpeedButtonBC;
SBMas1: TSpeedButtonBC;
SBMasX: TSpeedButtonBC;
SBUltimo: TSpeedButtonBC;
SbNuevo: TSpeedButtonBC;
SbModificar: TSpeedButtonBC;
Label1: TLabel;
SB_Salir: TSpeedButtonBC;
SBBuscar: TSpeedButtonBC;
SBImprimir: TSpeedButtonBC;
SEMobeByX: TSpinEdit;
GBBuscar: TGroupBoxJL;
Ebusqueda: TEdit;
BLimpiar: TButton;
BBuscar: TButton;
BCerrar: TButton;
SbBorrar: TSpeedButtonBC;
PC: TPageControl;
Visor: TTabSheet;
Datos: TTabSheet;
DSPrincipal: TDataSource;
NPDBVisorDocumentos: TNewPanelDB;
Panel1: TPanel;
NPDBVisorDetalles: TNewPanelDB;
NewPanelDB2: TNewPanelDB;
NPDBContenedor: TNewPanelDB;
DsDetalle: TDataSource;
DSLoteDocumento: TDataSource;
DBGrid1: TDBGrid;
Panel2: TPanel;
Panel3: TPanel;
NPDBDatosDocumentos: TNewPanelDB;
NewPanelDB5: TNewPanelDB;
NewPanelDB6: TNewPanelDB;
NewPanelDB7: TNewPanelDB;
Panel4: TPanel;
DBGrid2: TDBGrid;
Panel5: TPanel;
DBGrid3: TDBGrid;
Panel6: TPanel;
PC2: TPageControl;
Valores: TTabSheet;
Datos1: TTabSheet;
Cobros: TTabSheet;
Nota: TTabSheet;
Protecciondatos: TTabSheet;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
GroupBox1: TGroupBox;
Label9: TLabel;
GroupBox2: TGroupBox;
Label10: TLabel;
Label11: TLabel;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Label12: TLabel;
GroupBox5: TGroupBox;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
DBIBMemo1: TDBIBMemo;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
GroupBox7: TGroupBox;
Label21: TLabel;
Label22: TLabel;
GroupBox8: TGroupBox;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
DBNewEditJL1: TDBNewEditJL;
DBNewEditJL2: TDBNewEditJL;
DBNewEditJL3: TDBNewEditJL;
DBNewEditJL4: TDBNewEditJL;
DBNewEditJL5: TDBNewEditJL;
DBNewEditJL10: TDBNewEditJL;
DBNewEditJL11: TDBNewEditJL;
DBNewEditJL6: TDBNewEditJL;
DBNewEditJL7: TDBNewEditJL;
DBNewEditJL8: TDBNewEditJL;
DBNewEditJL9: TDBNewEditJL;
DBNewEditJL12: TDBNewEditJL;
DBNewEditJL13: TDBNewEditJL;
DBNewEditJL14: TDBNewEditJL;
Label26: TLabel;
DBNewEditJL15: TDBNewEditJL;
DBText1: TDBText;
DBNewEditJL16: TDBNewEditJL;
DBNewEditJL17: TDBNewEditJL;
DBNewEditJL18: TDBNewEditJL;
DBNewEditJL19: TDBNewEditJL;
DBNewEditJL20: TDBNewEditJL;
DBNewEditJL21: TDBNewEditJL;
DBIBCheckbox1: TDBIBCheckbox;
DBNewEditJL22: TDBNewEditJL;
DBNewEditJL24: TDBNewEditJL;
DBNewEditJL23: TDBNewEditJL;
Label13: TLabel;
DBIBMemo2: TDBIBMemo;
DBNewEditJL25: TDBNewEditJL;
SpeedButtonBC1: TSpeedButtonBC;
SpeedButtonBC2: TSpeedButtonBC;
SpeedButtonBC3: TSpeedButtonBC;
SpeedButtonBC4: TSpeedButtonBC;
SpeedButtonBC5: TSpeedButtonBC;
DBNavigator1: TDBNavigator;
DBNavigator2: TDBNavigator;
procedure SBPrimeroClick(Sender: TObject);
procedure SBUltimoClick(Sender: TObject);
procedure SB_SalirClick(Sender: TObject);
procedure BBuscarClick(Sender: TObject);
procedure BCerrarClick(Sender: TObject);
procedure BLimpiarClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure SbBorrarClick(Sender: TObject);
procedure SBBuscarClick(Sender: TObject);
procedure SBImprimirClick(Sender: TObject);
procedure SBMas1Click(Sender: TObject);
procedure SBMasXClick(Sender: TObject);
procedure SBMenos1Click(Sender: TObject);
procedure SBMenosxClick(Sender: TObject);
procedure SbModificarClick(Sender: TObject);
procedure SbNuevoClick(Sender: TObject);
procedure DSPrincipalDataChange(Sender: TObject; Field: TField);
procedure DsDetalleDataChange(Sender: TObject; Field: TField);
procedure actualizardatos;
procedure FormCreate(Sender: TObject);
procedure PCDrawTab(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean);
procedure PC2DrawTab(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean);
procedure SpeedButtonBC1Click(Sender: TObject);
procedure SpeedButtonBC2Click(Sender: TObject);
procedure SpeedButtonBC3Click(Sender: TObject);
procedure SpeedButtonBC4Click(Sender: TObject);
procedure SpeedButtonBC5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FXPAF: TFXPAF;
VarSTipoDocumento:string;
implementation
{$R *.dfm}
uses Fun, FUN_DBGRID, UDM, UNotas, Udirecciones, UArticulos, UEmpleados, UMENU;
//[ 2]----------------[ Para poder tener tabs del page control en color]--------
constructor TTabSheet.Create(aOwner: TComponent);
//------------------------------------------------------------------------------
//*************************************[ Crear nueva propiedad tabsheet ]*******
//------------------------------------------------------------------------------
begin
inherited;
FColor := clBtnFace;
end;
//[ 2]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
//[ 3]----------------[ Para poder tener tabs del page control en color]--------
procedure TTabSheet.SetColor(Value: TColor);
//------------------------------------------------------------------------------
//**************************************************[ Seleción de color ]*******
//------------------------------------------------------------------------------
begin
if FColor <> Value then
begin
FColor := Value;
Invalidate;
end;
end;
//[ 3]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
//[ 4]----------------[ Para poder tener tabs del page control en color]--------
procedure TTabSheet.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
//------------------------------------------------------------------------------
//******************************************[ Dibujar en el pagecontrol ]*******
//------------------------------------------------------------------------------
begin
if FColor = clBtnFace then
inherited
else
begin
Brush.Color := FColor;
Windows.FillRect(Msg.dc, ClientRect, Brush.Handle);
Msg.Result := 1;
end;
end;
//[ 4]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
procedure TFXPAF.actualizardatos;
//------------------------------------------------------------------------------
//******************************************************[ Actualizar datos ]****
//------------------------------------------------------------------------------
begin
if FXPAF.Active then
begin
if not (DsDetalle.DataSet.State in [dsEdit, dsInsert]) then
begin
Panel5.Caption:='Lotes del artículo: '+DsDetalle.DataSet.FieldByName('DESCRIPCIONARTICULO').AsString;
end;
if not (DSPrincipal.DataSet.State in [dsEdit, dsInsert]) then
begin
Panel4.Caption:=VarSTipoDocumento+' [ '+ DSPrincipal.DataSet.FieldByName('NUMERODOCUMENTO').AsString+' ]';
end;
end;
Caption:='Gestión de '+VarSTipoDocumento;
end;
procedure TFXPAF.BBuscarClick(Sender: TObject);
//------------------------------------------------------------------------------
//**************************************************************[ Buscar ]******
//------------------------------------------------------------------------------
var Campo:string;
begin
Campo:='NUMERODOCUMENTO'; {Dato a rellenar por el progrmador con el nombre del campo en la busqueda}
DSPrincipal.DataSet.Locate(Campo,Ebusqueda.Text,[loCaseInsensitive,loPartialKey]);
end;
procedure TFXPAF.BCerrarClick(Sender: TObject);
//------------------------------------------------------------------------------
//*****************************************************[ Cerrar Busqueda ]******
//------------------------------------------------------------------------------
begin
BLimpiarClick(Sender);
GBBuscar.Visible:=False;
end;
procedure TFXPAF.BLimpiarClick(Sender: TObject);
//------------------------------------------------------------------------------
//**************************************************[ Limpia la busqueda ]******
//------------------------------------------------------------------------------
begin
Ebusqueda.Text:='';
BBuscarClick(Sender);
Ebusqueda.SetFocus;
end;
procedure TFXPAF.DsDetalleDataChange(Sender: TObject; Field: TField);
//------------------------------------------------------------------------------
//**************************************************[ DSdetalle DataChange ]****
//------------------------------------------------------------------------------
begin
if FXPAF.Active then
begin
if not (DsDetalle.DataSet.State in [dsEdit, dsInsert]) then actualizardatos;
end;
end;
procedure TFXPAF.DSPrincipalDataChange(Sender: TObject; Field: TField);
//------------------------------------------------------------------------------
//************************************************[ DSPrincipal DataChange ]****
//------------------------------------------------------------------------------
begin
if FXPAF.Active then
begin
if not (DSPrincipal.DataSet.State in [dsEdit, dsInsert]) then actualizardatos;
end;
end;
procedure TFXPAF.FormActivate(Sender: TObject);
//------------------------------------------------------------------------------
//********************************************[ Cuando se activa El form ]******
// Lo que queremos que haga nuestro Form Cuando se Actiba
//------------------------------------------------------------------------------
begin
//Carganmos las imagenes de los botones
SBPrimero.Glyph.Handle:=Loadbitmap(HInstance,'FIRST');
SBMenosx.Glyph.Handle:=Loadbitmap(HInstance,'RETROCEDER');
SBMenos1.Glyph.Handle:=Loadbitmap(HInstance,'PRIOR');
SBMas1.Glyph.Handle:=Loadbitmap(HInstance,'NEXT');
SBMasX.Glyph.Handle:=Loadbitmap(HInstance,'AVANZAR');
SBUltimo.Glyph.Handle:=Loadbitmap(HInstance,'LAST');
SbNuevo.Glyph.Handle:=Loadbitmap(HInstance,'NUEVO');
SbModificar.Glyph.Handle:=Loadbitmap(HInstance,'EDIT');
SbBorrar.Glyph.Handle:=Loadbitmap(HInstance,'BORRAR');
SB_Salir.Glyph.Handle:=Loadbitmap(HInstance,'SALIR');
SBBuscar.Glyph.Handle:=Loadbitmap(HInstance,'BUSCAR');
SBImprimir.Glyph.Handle:=Loadbitmap(HInstance,'IMPRIMIR');
// SBConfirmar.Glyph.Handle:=Loadbitmap(HInstance,'CHECKROUND');
// SBCancelar.Glyph.Handle:=Loadbitmap(HInstance,'CANCEL');
// if Timer1.Enabled=false then Timer1.Enabled:=True;
//Ponemos el Juego de colores de mis NewPanelDB
PanelBotonera.ColorNotActive:=COLORPANELACT;
PanelBotonera.ActiveColor:=COLORPANELNOACT;
// PanelDatos.ActiveColor:=COLORPANELACT;
// PanelDatos.ColorNotActive:=COLORPANELNOACT;
// PanelConfirmar.ActiveColor:=COLORPANELACT;
// PanelConfirmar.ColorNotActive:=COLORPANELNOACT;
//Que sera visible y que no según el tipo de documento
actualizardatos;
end;
procedure TFXPAF.FormCreate(Sender: TObject);
//------------------------------------------------------------------------------
//***************************************************[ Al Crearse el Fom ]******
// Cosas que queremos que haga según se inicie el Form
//------------------------------------------------------------------------------
begin
//[ 5]----------------------------[ Tabs de page control en color ]-------------
Visor.Color:=clMoneyGreen; //verde pastel
Datos.Color:=clSkyBlue; //Azul Pastel
Valores.Color:=clMoneyGreen; //verde pastel
Datos1.Color:=clSkyBlue; //Azul Pastel
Cobros.Color:=clInfoBk; //Amarillo pastel
Nota.Color:=$0099CCFF; //Color naranja
Protecciondatos.Color:=$0000CCCC; //Verde limón
//[ 5]----------------------------[ Tabs de page control en color ]-------------
{Cosas que queremos que haga según se inicie el Form}
PC.ActivePageIndex:=0;
Pc2.ActivePageIndex:=0;
end;
procedure TFXPAF.FormKeyPress(Sender: TObject; var Key: Char);
//------------------------------------------------------------------------------
//************************************************[ Al pulsar una tecla ]******
// Al pulsar la tecla salta al foco del siguiente componente, si esta admitido
//------------------------------------------------------------------------------
begin
if (Key = #13) then {Si se ha pulsado enter }
if (ActiveControl is TEdit)
or (ActiveControl is TDBEdit)
or (ActiveControl is TDBNewEditJL)
or (ActiveControl is TDBComboBox) then
begin
Key := #0; { anula la puulsación }
Perform(WM_NEXTDLGCTL, 0, 0); { mueve al próximo control }
end
end;
procedure TFXPAF.PC2DrawTab(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean);
//------------------------------------------------------------------------------
//************************************************[ COLORES PAGECONTROL ]*******
//------------------------------------------------------------------------------
var
//[ 6]----------------[ Para poder tener tabs del page control en color]--------
AText: string;
APoint: TPoint;
//[ 6]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
begin
//[ 7]----------------[ Para poder tener tabs del page control en color]--------
with (Control as TPageControl).Canvas do
begin
case TabIndex of
0: brush.Color:=clMoneyGreen;
1: brush.Color:=clSkyBlue;
2: brush.Color:=clInfoBk;
3: Brush.Color:=$0099CCFF;
4: Brush.Color:=$0000CCCC;
end;
PC2.Canvas.Rectangle(Rect);
PC2.Canvas.Brush.Color:=Control.Canvas.Brush.Color;
PC2.Pages[TabIndex].brush.Color := Control.Canvas.brush.Color;
PC2.Pages[TabIndex].Repaint;
FillRect(Rect);
AText := TPageControl(Control).Pages[TabIndex].Caption;
with Control.Canvas do
begin
APoint.x := (Rect.Right - Rect.Left) div 2 - TextWidth(AText) div 2;
APoint.y := (Rect.Bottom - Rect.Top) div 2 - TextHeight(AText) div 2;
TextRect(Rect, Rect.Left + APoint.x, Rect.Top + APoint.y, AText);
end;
end;
//[ 7]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
end;
procedure TFXPAF.PCDrawTab(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean);
//------------------------------------------------------------------------------
//************************************************[ COLORES PAGECONTROL ]*******
//------------------------------------------------------------------------------
var
//[ 6]----------------[ Para poder tener tabs del page control en color]--------
AText: string;
APoint: TPoint;
//[ 6]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
begin
//[ 7]----------------[ Para poder tener tabs del page control en color]--------
with (Control as TPageControl).Canvas do
begin
case TabIndex of
0: brush.Color:=clMoneyGreen;
1: brush.Color:=clSkyBlue;
end;
PC.Canvas.Rectangle(Rect);
PC.Canvas.Brush.Color:=Control.Canvas.Brush.Color;
PC.Pages[TabIndex].brush.Color := Control.Canvas.brush.Color;
PC.Pages[TabIndex].Repaint;
FillRect(Rect);
AText := TPageControl(Control).Pages[TabIndex].Caption;
with Control.Canvas do
begin
APoint.x := (Rect.Right - Rect.Left) div 2 - TextWidth(AText) div 2;
APoint.y := (Rect.Bottom - Rect.Top) div 2 - TextHeight(AText) div 2;
TextRect(Rect, Rect.Left + APoint.x, Rect.Top + APoint.y, AText);
end;
end;
//[ 7]--FIN SECCIÓN---[ Para poder tener tabs del page control en color]--------
end;
procedure TFXPAF.SbBorrarClick(Sender: TObject);
//------------------------------------------------------------------------------
//*******************************************[ Borrar el Actual Registro ]******
//------------------------------------------------------------------------------
begin //Cambiar por el mensaje elegido
// if (MessageBox(0, '¿Esta seguro de eliminar el registro actual?',
// 'Eliminar Registro', MB_ICONSTOP or MB_YESNO or MB_DEFBUTTON2) = ID_No) then abort
// else begin
// DSPrincipal.DataSet.Delete;
// ShowMessage('El registro ha sido eliminado');
// IBT.CommitRetaining;
// end;
//------------------
// Lo cambiamos por estado=nulo, pero no lo eliminamos
//---------------------
end;
procedure TFXPAF.SBBuscarClick(Sender: TObject);
//------------------------------------------------------------------------------
//******************************************************[ Abrir Busqueda ]******
//------------------------------------------------------------------------------
begin
GBBuscar.Visible:=True;
Ebusqueda.SetFocus;
end;
procedure TFXPAF.SBImprimirClick(Sender: TObject);
//------------------------------------------------------------------------------
//******************************************************[ Abrir Imprimir ]******
//------------------------------------------------------------------------------
begin
//Abre dialogo de impresión
end;
procedure TFXPAF.SBMas1Click(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************[ Avanzar un registro ]******
//------------------------------------------------------------------------------
begin
DSPrincipal.DataSet.Next;
end;
procedure TFXPAF.SBMasXClick(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************[ Avanzar x Registros ]******
//------------------------------------------------------------------------------
begin
DSPrincipal.DataSet.MoveBy(SEMobeByX.Value);
end;
procedure TFXPAF.SBMenos1Click(Sender: TObject);
//------------------------------------------------------------------------------
//***********************************************[ Retroceder 1 registro ]******
//------------------------------------------------------------------------------
begin
DSPrincipal.DataSet.Prior;
end;
procedure TFXPAF.SBMenosxClick(Sender: TObject);
//------------------------------------------------------------------------------
//**********************************************[ Retroceder x Registros ]******
//------------------------------------------------------------------------------
begin
DSPrincipal.DataSet.MoveBy(-SEMobeByX.Value);
end;
procedure TFXPAF.SbModificarClick(Sender: TObject);
//------------------------------------------------------------------------------
//*******************************************[ Editar el actual registro ]******
//------------------------------------------------------------------------------
begin
if DsPrincipal.DataSet.IsEmpty<>true then
begin
//Carganos las diferente variables
// DBNLote.SetFocus;
end else ShowMessage('No hay tregistros disponibles para editar')
end;
procedure TFXPAF.SbNuevoClick(Sender: TObject);
//------------------------------------------------------------------------------
//*******************************************[ Creamos un nuevo registro ]******
//------------------------------------------------------------------------------
begin
DSPrincipal.DataSet.Insert;
// DBNLote.SetFocus;
end;
procedure TFXPAF.SBPrimeroClick(Sender: TObject);
//------------------------------------------------------------------------------
//***********************************************[ Ir al Primer Registro ]******
//------------------------------------------------------------------------------
begin
DSPrincipal.DataSet.First;
end;
procedure TFXPAF.SBUltimoClick(Sender: TObject);
//------------------------------------------------------------------------------
//***********************************************[ Ir al último registro ]******
//------------------------------------------------------------------------------
begin
DSPrincipal.DataSet.Last;
end;
procedure TFXPAF.SB_SalirClick(Sender: TObject);
//------------------------------------------------------------------------------
//******************************************************[ Salir Del Form ]******
//------------------------------------------------------------------------------
begin
FXPAF.Close;
end;
procedure TFXPAF.SpeedButtonBC1Click(Sender: TObject);
//------------------------------------------------------------------------------
//***************************************************************[ Valores ]****
//------------------------------------------------------------------------------
begin
PC2.ActivePageIndex:=0;
end;
procedure TFXPAF.SpeedButtonBC2Click(Sender: TObject);
//------------------------------------------------------------------------------
//*****************************************************************[ Datos ]****
//------------------------------------------------------------------------------
begin
PC2.ActivePageIndex:=1;
end;
procedure TFXPAF.SpeedButtonBC3Click(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************************[ Cobros ]****
//------------------------------------------------------------------------------
begin
PC2.ActivePageIndex:=2;
end;
procedure TFXPAF.SpeedButtonBC4Click(Sender: TObject);
//------------------------------------------------------------------------------
//*****************************************************************[ Notas ]****
//------------------------------------------------------------------------------
begin
PC2.ActivePageIndex:=3;
end;
procedure TFXPAF.SpeedButtonBC5Click(Sender: TObject);
//------------------------------------------------------------------------------
//***************************************************[ Protección de datos ]****
//------------------------------------------------------------------------------
begin
PC2.ActivePageIndex:=4;
end;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment