Invalid Variant Operation - OnDeletion do TreeView.
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
Curtidas 0
Respostas
Diegus
12/09/2007
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!?
GOSTEI 0
Diegus
12/09/2007
Help ae !!! :cry:
GOSTEI 0