Fórum Ao migrar para Dephi 2010 codigo não funciona #431091

16/12/2012

0

Pessoal,

Ao migrar para Dephi 2010 o codigo não funciona, quando clico na coluna o campo não recebe o foco e nem deleta o que os caracteres que estão no mesmo.


procedure TFrmCadAluno.dbgAlunoTitleClick(Column: TColumn);
var
campo:string;
begin
campo:=column.fieldname;
application.processmessages;
IBQryAluno.sql.Clear;
IBQryAluno.sql.add('select *from ALUNO where ESCOLA = '''+sEscola+''' order by '+campo);

if not IBQryAluno.Prepared then
IBQryAluno.Prepare;
IBQryAluno.Open;

if ( Edit_Consulta.CanFocus ) then
Edit_Consulta.SetFocus;

Edit_Consulta.Clear;
End;
Osmar

Osmar

Responder

Posts

16/12/2012

Claudia Nogueira

Copiei esse seu código pra testar e aqui funcionou normal. Usei o Delphi 2010 com o Firebird.
Dá algum erro, ou simplesmente não atualiza o DBGrid?
Responder

Gostei + 0

16/12/2012

Osmar

no Delphi 7 quando clicava no menu do dbgrid o campo do Edit_Consulta que é um LabeledEdit recebia o foco e apagava o que foi digitado, para começcar uma nova consulta.
Responder

Gostei + 0

17/12/2012

Osmar

Cláudia,

Uso esse recurso em vários forms, e após a migração para Delphi 2010 só funciona em todos eles a pesquisa, más ao clicar no menu do dbgrid não foca e nem apaga o que está no LabeledEdit, o Uses está assim:

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, jpeg,
Mask, ExtDlgs, rxToolEdit, RXDBCtrl, DB, ADODB, DBCtrls,
RxDBComb, umDBImage, IBCustomDataSet, IBQuery, IBUpdateSQL, Menus;
Responder

Gostei + 0

17/12/2012

Claudia Nogueira

A única explicação pra isso é dar alguma exceção, ou algum erro, ou tem um exit antes de apagar e dar o SetFocus. Quando você debuga, passa pelo .clear e .setfocus?
Responder

Gostei + 0

19/12/2012

Osmar

Cláudia,

Ao debugar passa sim pelo setfocus e clear, veja também como esta o FormShow e o FormCreate:

procedure TFrmCadFuncionario.FormShow(Sender: TObject);
begin
IBQryFuncionario.Close;
IBQryFuncionario.Open;
dbgFuncionarioTitleClick(dbgFuncionario.Columns[0]);
end;

procedure TFrmCadFuncionario.FormCreate(Sender: TObject);
begin
PcFuncionario.ActivePageIndex := 0;
PcFuncionario.OwnerDraw:=true;
IBQryFuncionario.Close;
IBQryFuncionario.Open;
end;
Responder

Gostei + 0

19/12/2012

Claudia Nogueira

Posta os eventos que tem no DBGrid.
Responder

Gostei + 0

19/12/2012

Osmar

procedure TFrmCadFuncionario.dbgFuncionarioDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with dbgFuncionario do
begin
if gdSelected in State then
begin
Canvas.Brush.Color := clYellow;
Canvas.Font.Color := clBlack;
end
else Canvas.Brush.Color := clWindow;

Canvas.FillRect( Rect );
DefaultDrawColumnCell( Rect, DataCol, Column, State );



procedure TFrmCadFuncionario.dbgFuncionarioTitleClick(Column: TColumn);
var
campo:string;
begin
campo:=column.fieldname;
application.processmessages;
IBQryFuncionario.sql.Clear;
IBQryFuncionario.sql.add('select * from Funcionario where ESCOLA = '''+sEscola+''' order by '+campo);

if not IBQryFuncionario.Prepared then
IBQryFuncionario.Prepare;
IBQryFuncionario.Open;

if ( Edit_Consulta.CanFocus ) then
Edit_Consulta.SetFocus;

Edit_Consulta.Clear;
End;

end;
end;
Responder

Gostei + 0

20/02/2013

Osmar

Claudia,
Ainda não resolvi este problema, olha quando clico no título do dbgrid nada acontece, ou seja, o sistema não ordena, não citei na ultima vez o codigo do FormShow:

procedure TFrmCadAluno.FormShow(Sender: TObject);
begin
IBQryAluno.Close;
IBQryAluno.Open;
dbgAlunoTitleClick(dbgAluno.Columns[0]);
end;
Responder

Gostei + 0

20/02/2013

Alessandro Folk

poderia dar um print nas propriedades do grid? esta usando grid de algum componente de terceiros?
um print da tela também seria interessante para entender melhor oque ocorre!
Responder

Gostei + 0

20/02/2013

Perivaldo Martins

Na propriedade Options do DBGrid o dgTitleClick está True? Verifique, se não estiver passe para True.


Boa sorte e bons códigos!
Responder

Gostei + 0

25/02/2013

Osmar

Martins,
Realmete era este o problema foi só colora true e tudo voltou ao normal.
Agradeço a atenção de todos.
Osmar.
Responder

Gostei + 0

25/02/2013

Perivaldo Martins

Martins,
Realmete era este o problema foi só colora true e tudo voltou ao normal.
Agradeço a atenção de todos.
Osmar.


Tranquilo, que bom que mais um problema foi solucionado.


Boa sorte e bons códigos!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar