Fórum Invalid Variant Operation - OnDeletion do TreeView. #345917
12/09/2007
0
Caros...
Tenho dois TreeView´s na tela... Um de selecionados... e outro de Não selecionados..
Quando passo do não selecionado para o selecionado (um item)...
Eu tenho q deletar o ponteiro que estava associado ao item...
Ponteiro
Para adicionar do não selecionados.. para o selecionados...
No OnDeletion do TreeView Não Selecionados:
O erro está dando quando dá o Dispose...
Agora...
Estou migrando esta tela de Delphi 5 para o 2006...
Este problema não ocorre no Delphi 5....
E ae... o q os senhores pode fazer para me ajudaaaaar?
Agradeço desde já!
Tenho dois TreeView´s na tela... Um de selecionados... e outro de Não selecionados..
Quando passo do não selecionado para o selecionado (um item)...
Eu tenho q deletar o ponteiro que estava associado ao item...
Ponteiro
type PRecItemFonte = ^TRecItemFonte; TRecItemFonte = record CODG_ITEM_FONTE, DESC_ITEM_FONTE, CODG_ITEM_FONTE_PAI, CODG_LINHA : Variant; end; PRecItem = ^TRecItem; TRecItem = record CODG_ITEM_USO_FONTE, CODG_ITEM_USO_FONTE_PAI, INDI_ITEM_USO_FONTE, CODG_ORCAMENTO, CODG_ITEM_ORCAMENTO, INDI_TIPO_ORCAMENTO : Variant; end;
Para adicionar do não selecionados.. para o selecionados...
procedure TfrmCadQuadroUsosFontes.cb_add_fonteClick(Sender: TObject); var i : Integer; eti_No : TTreeNode; begin inherited; if et_ItensFontesSel.Items.Count > 0 then begin if blnPronaf and (PRecItemFonte(et_ItensFontesNSel.Selected.Data)^.CODG_ITEM_FONTE <> ´164´) then abort; if (not blnPronaf) and (not blnRecursoProprio) and (pos(´PRONAF´,UpperCase(VarToStr(PRecItemFonte(et_ItensFontesNSel.Selected.Data)^.DESC_ITEM_FONTE))) > 0) then abort; if blnOutras and (pos(´PRONAF´,UpperCase(VarToStr(PRecItemFonte(et_ItensFontesNSel.Selected.Data)^.DESC_ITEM_FONTE))) > 0) then abort; end; // Limpar TList listSel.Clear; // Selecionar todos os filhos caso o pai tenha sido selecionado for i := 0 to et_ItensFontesNSel.Items.Count - 1 do begin if ( et_ItensFontesNSel.Items[i].Selected ) then begin listSel.Add ( et_ItensFontesNSel.Items[i] ); if pos(´PRONAF´,UpperCase(VarToStr(PRecItemFonte(et_ItensFontesNSel.Selected.Data)^.DESC_ITEM_FONTE))) > 0 then if Not mudaConfig then abort; if ( et_ItensFontesNSel.Items[i].getFirstChild <> nil ) then begin eti_No := et_ItensFontesNSel.Items[i].getFirstChild; while ( eti_No <> nil ) do begin if pos(´PRONAF´,UpperCase(VarToStr(PRecItemFonte(eti_No.Data)^.DESC_ITEM_FONTE))) > 0 then if Not mudaConfig then abort; listSel.Add ( eti_No ); eti_No := et_ItensFontesNSel.Items[i].GetNextChild(eti_No); end; end; end; end; AdicionaFontes; AjustarBotoesFontes; end;
procedure TfrmCadQuadroUsosFontes.AjustarBotoesFontes; begin if et_ItensFontesSel.Items.Count > 0 then begin if et_ItensFontesNSel.Selected <> Nil then begin cb_add_fonte.Enabled := true; if blnPronaf and (PRecItemFonte(et_ItensFontesNSel.Selected.Data)^.CODG_ITEM_FONTE <> ´164´) then cb_add_fonte.Enabled := false; if (not blnPronaf) and (not blnRecursoProprio) and (pos(´PRONAF´,UpperCase(VarToStr(PRecItemFonte(et_ItensFontesNSel.Selected.Data)^.DESC_ITEM_FONTE))) > 0) then cb_add_fonte.Enabled := false; if blnOutras and (pos(´PRONAF´,UpperCase(VarToStr(PRecItemFonte(et_ItensFontesNSel.Selected.Data)^.DESC_ITEM_FONTE))) > 0) then cb_add_fonte.Enabled := false; end; end else begin cb_add_fonte.Enabled := (et_ItensFontesNSel.Selected <> Nil); end; cb_addall_fonte.Enabled := ((et_ItensFontesNSel.Selected <> Nil) or (et_ItensFontesNSel.Items.Count <> 0)); cb_rem_fonte.Enabled := (et_ItensFontesSel.Selected <> Nil); cb_remall_fonte.Enabled := ((et_ItensFontesSel.Selected <> Nil) or (et_ItensFontesSel.Items.Count <> 0)); end;
No OnDeletion do TreeView Não Selecionados:
procedure TfrmCadQuadroUsosFontes.et_ItensFontesNSelDeletion( Sender: TObject; Node: TTreeNode); begin inherited; // Libera memória Dispose(Node.Data); end;
O erro está dando quando dá o Dispose...
Agora...
Estou migrando esta tela de Delphi 5 para o 2006...
Este problema não ocorre no Delphi 5....
E ae... o q os senhores pode fazer para me ajudaaaaar?
Agradeço desde já!
Diegus
Curtir tópico
+ 0
Responder
Posts
13/09/2007
Diegus
Eh nessas horas q seria bom ter um coletor de lixo que nem no java...
Não precisar de desalocar memória...
Alguém tem alguma idéia!?
Não precisar de desalocar memória...
Alguém tem alguma idéia!?
Responder
Gostei + 0
13/09/2007
Diegus
Help ae !!! :cry:
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)