Ya sé que nadie me va a copiar. Quizás cuando lleve 20 años con delphi se me ocurrirá algo original.
Código:
unit UDecretos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, IB_Components, Grids, IB_Grid, Buttons, ExtCtrls,
StdCtrls;
type
TDecretos = class(TForm)
Panel1: TPanel;
Novo: TButton;
Image1: TImage;
Image2: TImage;
QueryDecr: TIB_Query;
SurceDecr: TIB_DataSource;
Transa: TIB_Transaction;
Edita: TButton;
B_Tipos: TButton;
Grid: TIB_Grid;
procedure NovoClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure GridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure B_TiposClick(Sender: TObject);
procedure EditaClick(Sender: TObject);
private
{ Private declarations }
public
end;
var
Decretos: TDecretos;
implementation
uses UDatos, UEditDecretos, UDecTip;
{$R *.dfm}
procedure TDecretos.FormCreate(Sender: TObject);
begin
QueryDecr.Open;
end;
procedure TDecretos.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Transa.InTransaction then
Transa.Rollback;
Action:=caFree;
end;
procedure TDecretos.GridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol=4) and (Grid.BuffFields[3].AsInteger > 0) then
Grid.Canvas.Draw(Rect.Left,Rect.Top,image2.Picture.Graphic);
if (ACol=3) and (Grid.BuffFields[2].AsInteger > 0) then
Grid.Canvas.Draw(Rect.Left,Rect.Top,image2.Picture.Graphic);
end;
// ************************* MENU **********************************************
procedure TDecretos.NovoClick(Sender: TObject);
var Ed:TEditDecretos;
begin
Ed:=TEditDecretos.Create(self);
with Ed do
begin
Modo:='A';
LabelModo.Caption:='NUEVO';
SurceDecr.AutoEdit:=True;
SurceDecr.AutoInsert:=True;
QueryDecr.Open;
QueryDecr.Insert;
QueryDecr.FieldByName('DECR_FECHA').AsDate:=now();
QueryDecr.FieldByName('DECR_A_USUARIO').AsString:=
Datos.QueryUsu.FieldByName('USU_USUARIO').AsString;
CargaOrd;
QueryDecr.FieldByName('DECR_ORD').AsString:=
QueryOrd.FieldByName('USU_USUARIO').AsString;
CargaDecTip;
QueryDecr.FieldByName('DECR_TIPO').AsInteger:=
QueryDecTip.fieldByname('DECTIP_CODIGO').AsInteger;
Texto.text:=QueryDecr.fieldbyName('DECR_TEXTO').AsString;
ShowModal;
end;
Actualiza;
Grid.SetFocus;
end;
procedure TDecretos.EditaClick(Sender: TObject);
var Ed:TEditDecretos;
begin
Ed:=TEditDecretos.Create(self);
Ed.QueryDecr.SQL.Text:='select * from DECR where DECR_CODIGO = '
+#39+trim(QueryDecr.fieldbyName('DECR_CODIGO').asstring)+#39;
with Ed do
begin
Modo:='M';
LabelModo.Caption:='EDITANDO';
SurceDecr.AutoEdit:=True;
QueryDecr.Open;
CargaOrd;
CargaDecTip;
QueryDecr.Edit;
ShowModal;
end;
Grid.SetFocus;
end;
procedure TDecretos.B_TiposClick(Sender: TObject);
var DecTip:TDectip;
begin
DecTip:=TDecTip.Create(Self);
DecTip.ShowModal;
DecTip.Free;
end;
y el otro
Código:
unit UEditDecretos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IB_Components, Tx4oleLib_TLB, OleCtrls, DBOleCtl, ExtCtrls,
IB_Grid, IB_Controls, StdCtrls, Mask, Buttons, ComCtrls;
type
TEditDecretos = class(TForm)
B_Ok: TSpeedButton;
B_Cancelar: TSpeedButton;
LabelModo: TLabel;
Label3: TLabel;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
E_Usuario: TIB_Edit;
E_Fecha: TIB_Date;
E_OrdCargo: TIB_Edit;
E_OrdNome: TIB_LookupCombo;
E_Tipo: TIB_LookupCombo;
E_Descrip: TIB_Edit;
E_Firma_Sec: TIB_Edit;
E_Firma_Ord: TIB_Edit;
Panel: TPanel;
Transa: TIB_Transaction;
QueryDecr: TIB_Query;
SurceDecr: TIB_DataSource;
SurceNum: TIB_DataSource;
QueryNum: TIB_Query;
SurceOrd: TIB_DataSource;
QueryOrd: TIB_Query;
QueryDecTip: TIB_Query;
SurceDecTip: TIB_DataSource;
Texto: TIB_RichEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure B_OkClick(Sender: TObject);
procedure B_CancelarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
Modo:Char;
Procedure CargaOrd;
Procedure CargaDecTip;
end;
var
EditDecretos: TEditDecretos;
implementation
Uses UDatos;
{$R *.dfm}
procedure TEditDecretos.FormShow(Sender: TObject);
begin
E_Fecha.SetFocus;
end;
procedure TEditDecretos.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Transa.InTransaction then
Transa.Rollback;
SurceDecr.AutoEdit:=False;
SurceDecr.AutoInsert:=False;
Action:=caFree;
end;
procedure TEditDecretos.B_CancelarClick(Sender: TObject);
begin
Modo:='';
QueryDecr.Cancel;
Close;
end;
procedure TEditDecretos.B_OkClick(Sender: TObject);
begin
try
QueryNum.Open
except
Begin
showmessage('Error No Contador de Decretos');
// E_Nome.SetFocus;
Exit;
end;
end;
QueryDecr.FieldByName('DECR_CODIGO').AsInteger:=
QueryNum.Fields[0].AsInteger;
Try
QueryDecr.post
except
begin
Showmessage('Non se poido grabar o rexistro');
Exit
end;
end;
Transa.CommitRetaining;
Close;
end;
procedure TEditDecretos.CargaOrd;
begin
with QueryOrd do
begin
close;
SQL.text:='Select USU_USUARIO,USU_NOME,USU_CARGO from USU '+
'where USU_ORDENA='#39+'1'+#39;
KeyLinks.Text:='USU.USU_USUARIO=DECR.DECR_ORD';
KeySource:=SurceDecr;
Open;
end;
end;
procedure TEditDecretos.CargaDecTip;
begin
with QueryDecTip do
begin
close;
SQL.text:='Select * from DECTIP';
KeyLinks.Text:='DECTIP.DECTIP_CODIGO=DECR.DECR_TIPO';
KeySource:=SurceDecr;
Open;
end;
end;
end.