Fórum DBGrid personalizada #378904

05/06/2010

0

Olá senhores,

Alteramos aqui na empresa a dbgrid para ela criar automaticamente um popup com opções para salvar o arquivo de configuração da Grid.
Quando a grid já tem um popup, a gente só adiciona as opções abaixo do que já havia.

Mas o problema que acontece é que, quando acessamos a tela via Delphi mesmo, as opções são carregadas no popup, aí se vamos deletá-las, da pau no delphi e ele deve ser fechado para que possa continuar o desenvolvimento.
Aí ao acessar a tela no sistema, também da pau, dizendo que os componentes já estão criados, visto que já foram criadas no delphi.

O Código que está no "Loaded" da grid é esse:

  {se nao tiver popup, é criado um novo}
  if Self.PopupMenu <> nil then
    _PopupMenuGrid := Self.PopupMenu
  else
    _PopupMenuGrid := TPopupMenu.Create(nil);

  {cria-se os itens do popup}
  _MenuItem1 := TMenuItem.Create(nil);
  _MenuItem2 := TMenuItem.Create(nil);
  _MenuAdicionarColuna := TMenuItem.Create(nil);
  _MenuLinha1 := TMenuItem.Create(nil);
  _MenuLinha2 := TMenuItem.Create(nil);
  _MenuLinha3 := TMenuItem.Create(nil);
  _MenuRenomearColuna := TMenuItem.Create(nil);
  _MenuRemoverColuna := TMenuItem.Create(nil);

...
  
  {se já tiver um popup é adicionada uma linha para dividir}
  if Self.PopupMenu <> nil then
    _PopupMenuGrid.Items.Add(_MenuLinha3);

  {adicionam-se os itens ao popup}
  _PopupMenuGrid.Items.Add(_MenuItem1);
  _PopupMenuGrid.Items.Add(_MenuItem2);
  _PopupMenuGrid.Items.Add(_MenuLinha1);
  _PopupMenuGrid.Items.Add(_MenuAdicionarColuna);
  _PopupMenuGrid.Items.Add(_MenuRenomearColuna);
  _PopupMenuGrid.Items.Add(_MenuLinha2);
  _PopupMenuGrid.Items.Add(_MenuRemoverColuna);

  _PopupMenuGrid.AutoPopup := True;


  { liga o popup a grid }
  Grid.PopupMenu := _PopupMenuGrid;



Não sei dizer se o problema é com o código, mas acho que o problema é onde que ele está, que é no Loaded.
Sabem me dizer se há outro evento que seja mais propício para esta opção?





Iibalena

Iibalena

Responder

Posts

05/06/2010

Lartedesign

isso se nao me engano ocorre por estar no Loaded pois sempre que for carregado ele
criara ....

tente trocar isso apenas ...

informe o erro exatamente  e explique detalahdamente se nao der certo..



Responder

Gostei + 0

05/06/2010

Marco Salles


Não sei dizer se o problema é com o código, mas acho que o problema é onde que ele está, que é no Loaded.
Sabem me dizer se há outro evento que seja mais propício para esta opção?

  que Evento é este ???? é algum DbGrid Especial ???
Responder

Gostei + 0

07/06/2010

Iibalena

isso se nao me engano ocorre por estar no Loaded pois sempre que for carregado ele
criara ....

tente trocar isso apenas ...

informe o erro exatamente  e explique detalahdamente se nao der certo..




O problema é que eu não sei de um evento para colocar esse código.

Abaixo está uma tela bem simples que criei, somente com uma grid e um popup com um item "teste".
Ao ligar o popup a grid, fechar e abrir a tela, as outras opções já são criadas automaticamente.





Ao tentar apagar qualquer destes itens que apareceram, da este erro.



Ao tentar fechar a tela, ou o delphi da isso.
Aí para fechar, somente matando o processo.






Responder

Gostei + 0

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

Aceitar