PDA

Ver la Versión Completa : Frame no funciona


Paulao
18-10-2010, 14:41:39
Hizo un frame con estes codigos:
...
private
{ Private declarations }
estado_tabela: Char;
procedure liga_botoes;
public
{ Public declarations }
end;

implementation

uses uConstantes;
{$R *.dfm}

{ TfrInserir }

procedure TfrInserir.liga_botoes;
begin
btnNovo.Enabled := not btnNovo.Enabled;
btnGravar.Enabled := not btnGravar.Enabled;
btnCancelar.Enabled := not btnCancelar.Enabled;
btnPesquisar.Enabled := not btnPesquisar.Enabled;
btnImprimir.Enabled := not btnImprimir.Enabled;
end;

procedure TfrInserir.btnNovoClick(Sender: TObject);
begin
if dscPadrao.DataSet.Active then
begin
liga_botoes;
estado_tabela := 'I';
dscPadrao.DataSet.Append;
end
else
MessageDlg(MSG_TABELA_FECHADA, mtInformation, [mbOk],0);
end;

end.
Quando premo el btnNovo, lo procedure liga_botoes no funciona, o sea, nada acontece. Que pasa en este codigo? Parece que estas bien, si erro.

ecfisa
18-10-2010, 17:53:56
Hola Paulao.

El procedimiento que habilita/deshabilita los botones y la llamada al mismo son correctas.
Indudablemente la condición dscPadrao.DataSet.Active no es verdadera.


Saludos. :)

Paulao
18-10-2010, 19:53:58
Yo lo puzo fuera del IF y no funciono tambien, sin la necesidad de la condicion del dscPadrao.DataSet.Active.

ecfisa
18-10-2010, 20:11:39
Hola Paulao.

Acabo de hacer una prueba muy simplificada con un form, un frame y cuatro buttons y funciona correctamente. Por lo que el problema, como te dije antes, no está en el procedimiento ni en su llamado.
Te pongo el código y quizá te oriente para solucionarlo.

Form1:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;

var
Form1: TForm1;

implementation {$R *.dfm}

uses Unit2;

procedure TForm1.FormCreate(Sender: TObject);
begin
with TFrame2.Create(Self) do
Parent:= Self;
end;
end.


Frame:

unit Unit2;

interface

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

type
TFrame2 = class(TFrame)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button4Click(Sender: TObject);
private
public
procedure ButtonsOnOff;
end;

implementation {$R *.dfm}

procedure TFrame2.ButtonsOnOff;
begin
Button1.Enabled:= not Button1.Enabled;
Button2.Enabled:= not Button2.Enabled;
Button3.Enabled:= not Button3.Enabled;
end;

procedure TFrame2.Button4Click(Sender: TObject);
begin
ButtonsOnOff;
end;
end.


Saludos. :)

Paulao
18-10-2010, 21:47:17
ve mi problema. Quando pongo un form en mi proyecto el Frame no funciona, pero si pongo un Form de mi Herencia que tengo, funciona el Frame, pero si es un TForm del Delphi no.

Mira, en mi herencia en el event OnKeyPress, tengo este codigo:
if key = #13 then
begin
key := #0;
perform(cm_dialogkey, vk_tab, 0);
end;
Que pasa es que quando crio un Form con este base, este comando no funciona en el Form heredado. No lo se que es.