[Lazarus-es] algo raro con un form

Paola Bruccoleri pbruccoleri en adinet.com.uy
Vie Ene 4 13:41:50 CET 2013


Hola todos..
espero hayan comenzado un muy buen año y con mucho trabajo :)

Bueno.. hace horas estoy con algo raro que no puedo resolver.
Un simple form con un grid mostrando la consulta de un qry. (zeos)
Hace tiempo uso una property para devolver el valor de un campo. Resulta 
q el form es muy parecido a otro de otro proyecto, por tanto lo copié a 
mi proyecto nuevo, lo añadí al mismo e hice un guardar como para 
cambiarle el nombre, cambié la consulta, etc, etc.
Pero, resulta que el property es de otro tipo, por tanto, aproveché a 
cambiarle el nombre y el tipo y ahi zas!... como que no me reconoce el form
(ese form a su vez hereda de otro que tiene algunas propiedades)
Cuando cargo el form, me aparece el form padre (vacío por supuesto) en 
vez del correcto..
se imaginarán que he hecho limpieza de los .o y ppu mil veces, borrado 
el exe, vuelto a construir todo...
Creo q una vez me pasó lo mismo, y le cambié de nombre y se solucionó, 
pero ahora no lo logro.. ya ni se me ocurre que hacer!
Cualquier idea me ayudará seguramente..
muchas gracias

Acá está el código.. no le veo nada raro!



unit ListaPlanCuentas;
{$mode objfpc}{$H+}

interface

uses
   Classes, SysUtils, LResources, Forms, Controls, Dialogs,
   DBGrids, StdCtrls, DbCtrls, db, LCLType, Buttons,
   ZDataset, ExtCtrls, LR_Class, LR_DBSet, EnterESC;

type

   { TfrmListaPlanCuentas }

   TfrmListaPlanCuentas = class(TFrmEnterESC)
     btnAgregar: TSpeedButton;
     btnBorrar: TSpeedButton;
     btnCerrar: TSpeedButton;
     btnEditar: TSpeedButton;
     btnImprimir: TSpeedButton;
     btnSeleccionar: TSpeedButton;
     dbg: TDBGrid;
     buscar_edt: TEdit;
     dsQry: TDatasource;
     DBNavigator1: TDBNavigator;
     frDBDataSet1: TfrDBDataSet;
     frReport1: TfrReport;
     Label1: TLabel;
     Panel1: TPanel;
     Panel2: TPanel;
     qry: TZQuery;
     procedure btnAgregarClick(Sender: TObject);
     procedure btnBorrarClick(Sender: TObject);
     procedure btnCerrarClick(Sender: TObject);
     procedure btnEditarClick(Sender: TObject);
     procedure btnImprimirClick(Sender: TObject);
     procedure btnSeleccionarClick(Sender: TObject);
     procedure buscar_edtChange(Sender: TObject);
     procedure buscar_edtKeyDown(Sender: TObject; var Key: Word;
       Shift: TShiftState);
     procedure dbgKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure FormShow(Sender: TObject);
   private
     { private declarations }
     function GetIDCUENTA: string;
   public
     { public declarations }
     Property IDCUENTA: string read GetIDCUENTA;
   end;

var
   frmListaPlanCuentas: TfrmListaPlanCuentas;

implementation

{ TfrmListaPlanCuentas }

uses
   EditPlanCuentas, dm, Main;

procedure TfrmListaPlanCuentas.buscar_edtChange(Sender: TObject);
begin
   qry.Locate('nombre',buscar_edt.Text,
                           [loCaseInsensitive, loPartialKey]);
end;

procedure TfrmListaPlanCuentas.buscar_edtKeyDown(Sender: TObject; var 
Key: Word;
   Shift: TShiftState);
begin
   if (key = VK_UP) then
     dsQry.DataSet.Prior;

   if (key = VK_DOWN) then
     dsQry.DataSet.Next;

   if (key =  VK_ESCAPE) then
     close;
end;

procedure TfrmListaPlanCuentas.dbgKeyUp(Sender: TObject; var Key: Word;
   Shift: TShiftState);
begin
   if Key = VK_RETURN then
     ModalResult:= mrOk;
end;

procedure TfrmListaPlanCuentas.btnAgregarClick(Sender: TObject);
var
   f: TfrmEditPlanCuentas;
begin
   qry.Cancel;
   qry.Insert;

   f:= TfrmEditPlanCuentas.Create(Self);
   f.caption:= 'Agregar registro';
   try
      if (f.ShowModal = mrOK) Then
         Begin
           qry.Post;
           qry.CommitUpdates;
           qry.ApplyUpdates;
         end
       else begin
           qry.Cancel;
           qry.CancelUpdates;
       end;

       qry.Refresh;

   finally
       FreeAndNil(f);
   end;

end;

procedure TfrmListaPlanCuentas.btnBorrarClick(Sender: TObject);
begin
   // no se puede borrar si ya hay movimientos en mov_diario
   data.qryTool.SQL.Text:= 'select * from mov_diario where cuenta = 
:cuenta';
   data.qryTool.ParamByName('cuenta').AsString:= 
qry.FieldByName('cuenta').AsString;
   data.qryTool.Open;

   if not (data.qryTool.EOF) then
   begin
     ShowMessage('Ya hay movimientos ingresados, no se puede borrar');
     exit;
   end;
   data.qryTool.Close;

   if (MessageDlg('Aviso', '¿Está seguro que quiere borrar este 
registro?', mtConfirmation, mbYesNo, 0) = mrNo) then
      Abort
   else
      begin
        qry.Delete;
        qry.ApplyUpdates;
      end;
end;

procedure TfrmListaPlanCuentas.btnCerrarClick(Sender: TObject);
begin
   close;
end;

procedure TfrmListaPlanCuentas.btnEditarClick(Sender: TObject);
var
   f: TfrmEditPlanCuentas;
begin
   qry.edit;

   f:= TfrmEditPlanCuentas.Create(Self);
   f.caption:= 'Modificar registro';
   try
      if (f.ShowModal = mrOK) Then
         Begin
           qry.Post;
           qry.CommitUpdates;
           qry.ApplyUpdates;
         end
       else begin
           qry.Cancel;
           qry.CancelUpdates;
       end;

       qry.Refresh;

   finally
       FreeAndNil(f);
   end;

end;

procedure TfrmListaPlanCuentas.btnImprimirClick(Sender: TObject);
var
   cFileReport : String ;
begin
   cFileReport:= frmMain.cPathReport + 'Listado de plan cuentas.lrf' ;
   If FileExists(cFileReport) then
     begin
       frReport1.LoadFromFile(cFileReport);
       frReport1.ShowReport;
     end
   else
     MessageDlg('Error', 'No existe el archivo de reporte', mtWarning, 
[mbOk], 0);
end;

procedure TfrmListaPlanCuentas.btnSeleccionarClick(Sender: TObject);
begin
   ModalResult:= mrOk
end;

procedure TfrmListaPlanCuentas.FormCreate(Sender: TObject);
begin
   qry.open;
end;

procedure TfrmListaPlanCuentas.FormDestroy(Sender: TObject);
begin
   qry.close;
end;

procedure TfrmListaPlanCuentas.FormShow(Sender: TObject);
begin
   buscar_edt.Text:='';
   buscar_edt.SetFocus;
end;

function TfrmListaPlanCuentas.GetIDCUENTA: string;
begin
   Result:= qry.FieldByName('cuenta').AsString;
end;

end.





More information about the Lazarus-es mailing list