Fórum Botões se sobrepondo no DBNavigator #370283
07/05/2009
0
Boa tarde turma, tudo bem?
Gostaria de saber se alguém já pegou algum caso de ao trocar a visibilidade dos botões de um DBNavigator sucessivamente acontece de eles parecerem estar se sobrepondo?
Notei que isso acontece somente com o XPManifest e ao trocar de tela e voltar para a que possui o DBNavigator os botões são pintados corretamente.
PS: Já tentei utilizar os comandos Repaint, Update e Invalidate dos componentes.
Segue um exemplo de como simular o que foi mencionado:
Unit1.pas:
Unit1.dfm:
Alguém já passou por isso? Tem alguma idéia de como solucionar? Alguma dica do que pode ser?
Obrigado.
Gostaria de saber se alguém já pegou algum caso de ao trocar a visibilidade dos botões de um DBNavigator sucessivamente acontece de eles parecerem estar se sobrepondo?
Notei que isso acontece somente com o XPManifest e ao trocar de tela e voltar para a que possui o DBNavigator os botões são pintados corretamente.
PS: Já tentei utilizar os comandos Repaint, Update e Invalidate dos componentes.
Segue um exemplo de como simular o que foi mencionado:
Unit1.pas:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBClient, ExtCtrls, DBCtrls;
type
TForm1 = class(TForm)
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
if ((ClientDataSet1.RecNo mod 2) =0) then
DBNavigator1.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbEdit,nbPost,nbCancel,nbRefresh]
else
DBNavigator1.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbPost,nbCancel,nbRefresh];
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
ClientDataSet1.FieldDefs.Add(´TESTE´, ftString, 4);
ClientDataSet1.CreateDataSet;
ClientDataSet1.Open;
for I := 0 to 10 do
begin
ClientDataSet1.Insert;
ClientDataSet1.FieldByName(´TESTE´).AsString := IntToStr(I);
ClientDataSet1.Post;
end; //for
end;
end.Unit1.dfm:
object Form1: TForm1 Left = 0 Top = 0 Caption = ´Form1´ ClientHeight = 286 ClientWidth = 426 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = ´Tahoma´ Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object DBNavigator1: TDBNavigator Left = 112 Top = 160 Width = 240 Height = 25 DataSource = DataSource1 TabOrder = 0 end object DBGrid1: TDBGrid Left = 64 Top = 26 Width = 320 Height = 120 DataSource = DataSource1 TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = ´Tahoma´ TitleFont.Style = [] end object DataSource1: TDataSource DataSet = ClientDataSet1 OnDataChange = DataSource1DataChange Left = 224 Top = 208 end object ClientDataSet1: TClientDataSet Aggregates = <> FieldDefs = <> IndexDefs = <> Params = <> StoreDefs = True Left = 184 Top = 208 end end
Alguém já passou por isso? Tem alguma idéia de como solucionar? Alguma dica do que pode ser?
Obrigado.
Woinch
Curtir tópico
+ 0
Responder
Posts
07/05/2009
Woinch
Acabo de encontrar uma solução.
Descobri que esse problema estava acontecendo pela propriedade Transparent dos botões utilizados no DBNavigator que estavam marcadas como True. Portanto sobrescrevi o Construtor do DBNavigator para ter acesso a esses botões a alterar a propriedade Transparent dos mesmos para False.
Qualquer dúvida favor entrar em contato.
Descobri que esse problema estava acontecendo pela propriedade Transparent dos botões utilizados no DBNavigator que estavam marcadas como True. Portanto sobrescrevi o Construtor do DBNavigator para ter acesso a esses botões a alterar a propriedade Transparent dos mesmos para False.
Qualquer dúvida favor entrar em contato.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)