Ao migrar para Dephi 2010 codigo não funciona
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;
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
Curtidas 0
Respostas
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?
Dá algum erro, ou simplesmente não atualiza o DBGrid?
GOSTEI 0
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
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;
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
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
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;
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
16/12/2012
Posta os eventos que tem no DBGrid.
GOSTEI 0
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;
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
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;
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
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!
um print da tela também seria interessante para entender melhor oque ocorre!
GOSTEI 0
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!
Boa sorte e bons códigos!
GOSTEI 0
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.
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
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.
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