DBGrid personalizada
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:
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?
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
Curtidas 0
Respostas
Lartedesign
05/06/2010
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..
criara ....
tente trocar isso apenas ...
informe o erro exatamente e explique detalahdamente se nao der certo..
GOSTEI 0
Marco Salles
05/06/2010
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?
Sabem me dizer se há outro evento que seja mais propício para esta opção?
que Evento é este ???? é algum DbGrid Especial ???
GOSTEI 0
Iibalena
05/06/2010
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..
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.
GOSTEI 0