Ao migrar para Dephi 2010 codigo não funciona

Delphi

16/12/2012

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

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

16/12/2012

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?
GOSTEI 0
Osmar

Osmar

16/12/2012

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.
GOSTEI 0
Osmar

Osmar

16/12/2012

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;
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

16/12/2012

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?
GOSTEI 0
Osmar

Osmar

16/12/2012

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;
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

16/12/2012

Posta os eventos que tem no DBGrid.
GOSTEI 0
Osmar

Osmar

16/12/2012

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;
GOSTEI 0
Osmar

Osmar

16/12/2012

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;
GOSTEI 0
Alessandro Folk

Alessandro Folk

16/12/2012

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!
GOSTEI 0
Perivaldo Martins

Perivaldo Martins

16/12/2012

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


Boa sorte e bons códigos!
GOSTEI 0
Osmar

Osmar

16/12/2012

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

Perivaldo Martins

16/12/2012

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!
GOSTEI 0
POSTAR