Jump to content

Recommended Posts

olá, toda vez que eu uso alguma função para deletar uma linha do listview, buga meu script e dai não consigo alterar nada e nm acionar novas linhas de informações.

o id das linhas normalmente, porem não capturar de nenhum input 

ps: pelos meus includes ja se ve que tentei de muita coisa

 

meu codigo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
#include <WinAPI.au3>
#include <StringConstants.au3>
#include <Array.au3>
#include <GuiListBox.au3>



#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 612, 480, 192, 154)

$MenuItem1 = GUICtrlCreateMenu("&Arquivo")
$MenuItem2 = GUICtrlCreateMenuItem("Salvar                  Ctrl+S", $MenuItem1, $SS_CENTER)
$MenuItem4 = GUICtrlCreateMenuItem("Carregar                Ctrl+O", $MenuItem1, $SS_CENTER)
$MenuItem3 = GUICtrlCreateMenuItem("Salvar Como             Shitft+Ctrl+S", $MenuItem1, $SS_CENTER)

$Group1 = GUICtrlCreateGroup("", 21, 8, 569, 97, $SS_CENTER)
$Input1 = GUICtrlCreateInput("ID COR", 122, 32, 97, 21, $SS_CENTER)
$Input2 = GUICtrlCreateInput("REGIÃO", 138, 64, 249, 21, $SS_CENTER)
$Input3 = GUICtrlCreateInput("Label", 264, 30, 121, 21, $SS_CENTER)
$Label1 = GUICtrlCreateLabel("Label", 232, 32, 30, 17, $SS_CENTER)
$Button1 = GUICtrlCreateButton("Capturar Cor", 42, 30, 75, 25, $SS_CENTER)
$Button2 = GUICtrlCreateButton("Capturar Região", 42, 62, 91, 25, $SS_CENTER)
$Button3 = GUICtrlCreateButton("ADD", 442, 24, 113, 33)
$Button5 = GUICtrlCreateButton("Delet", 442, 64, 113, 33)

$Group2 = GUICtrlCreateGroup("Editar ID selecionado", 8, 384, 601, 57, $SS_CENTER)
$Input7 = GUICtrlCreateInput("ID", 10, 402, 40,21, $SS_CENTER)

$Input4 = GUICtrlCreateInput("COR", 51, 402, 121, 21, $SS_CENTER)
$Input5 = GUICtrlCreateInput("REGIÃO", 173, 402, 249, 21, $SS_CENTER)
$Input6 = GUICtrlCreateInput("LABEL", 423, 402, 121, 21, $SS_CENTER)
$Button4 = GUICtrlCreateButton("\/", 544, 400, 30, 25, $SS_CENTER)
$Button6 = GUICtrlCreateButton("/\", 574, 400, 30, 25, $SS_CENTER)

;   Add column
Global $id = Int(0)
$List1 = GUICtrlCreateListView("",5, 120, 601, 253, $SS_CENTER)
_GUICtrlListView_AddColumn($List1, "ID",40)
_GUICtrlListView_AddColumn($List1, "COR",100)
_GUICtrlListView_AddColumn($List1, "COORDENADA",305)
_GUICtrlListView_AddColumn($List1, "LABEL",150)


GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
   Case $GUI_EVENT_CLOSE
      Exit
   Case $MenuItem2
      MsgBox($MB_SYSTEMMODAL, "ctrl + s", "Nothing Here",1)
   Case $MenuItem3
      MsgBox($MB_SYSTEMMODAL, "shift+ctrl s", "Nothing Here",1)
   Case $MenuItem4
      MsgBox($MB_SYSTEMMODAL, "ctrl + o", "Nothing Here",1)
   Case $Button1
      MsgBox($MB_SYSTEMMODAL, "Capturar cor", "Aperte espaço para capturar a cor")
      GUICtrlSetData($Input1,MouseColor())
   Case $Button2

      MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição inicial")
      local $mouse = MouseGetPos()
      $x_init   = $mouse[0]
      $y_init   = $mouse[1]
      MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição final")
       local $mouse = MouseGetPos()
      $x_end    = $mouse[0]
      $y_end    = $mouse[1]
      GUICtrlSetData($Input2,$x_init&','&$y_init&' ; '&$x_end&','&$y_end)
   Case $Button3
      _GUICtrlListView_AddItem($List1, $id, 1) ; id
      _GUICtrlListView_AddSubItem($List1, $id, GUICtrlRead($Input1), 1, 1) ;cor
      _GUICtrlListView_AddSubItem($List1, $id, GUICtrlRead($Input2), 2, 1) ;coordenada
      _GUICtrlListView_AddSubItem($List1, $id, GUICtrlRead($Input3), 3, 1) ;label
      $id= $id + 1
   Case $Button4
      $Item = _GUICtrlListView_GetSelectedIndices($List1)
      $Sid = _GUICtrlListView_GetItem($List1, Number($Item),0)
      $Scor = _GUICtrlListView_GetItem($List1, Number($Item),1)
      $Scord = _GUICtrlListView_GetItem($List1, Number($Item),2)
      $Slabel = _GUICtrlListView_GetItem($List1, Number($Item),3)
   ; get info
      GUICtrlSetData($Input7,$Sid[3])
      GUICtrlSetData($Input4,$Scor[3])
      GUICtrlSetData($Input5,$Scord[3])
      GUICtrlSetData($Input6,$Slabel[3])
   Case $Button5
      _GUICtrlListView_DeleteItemsSelected($List1)
   Case $Button6
   ; give back inf
      if GUICtrlRead($Input7) <> "ID" Then
         _GUICtrlListView_SetItem($List1,  GUICtrlRead($Input4), GUICtrlRead($Input7),1) ;cor
         _GUICtrlListView_SetItem($List1,  GUICtrlRead($Input5), GUICtrlRead($Input7),2) ;coordenada
         _GUICtrlListView_SetItem($List1,  GUICtrlRead($Input6), GUICtrlRead($Input7),3) ;coordenada
      EndIf
 EndSwitch
WEnd

Func MouseColor()
   local $mouse = MouseGetPos()
   Return Hex(PixelGetColor($mouse[0],$mouse[1]), 6)
EndFunc

 

Share this post


Link to post
Share on other sites

É porque na linha 89 você adiciona um valor sequencial sempre que é adicionado um novo elemento na tabela. "  $id= $id + 1" e sempre que você adiciona um novo item, ele segue a referencia da variável $id, até aí tudo bem, mas na hora de deletar um item da tabela você simplesmente exclui um item selecionado sem remover o valor da variável e mesmo removendo o valor da variável, o item selecionado pode ser que não seja sequencial como está na variavel $id.

 

Exemplo (linha 89):
você adiciona 1 item novo

$id=1
$id=2
$id=3
$id=4

Aí você resolve deletar o item 2, a variavel $id continuará somando o valor 1 .

Ao invés de usar a variável $id eu coloquei o _GUICtrlListView_GetItemCount para ler quantas linhas tinham na ListView e adicionar +1 de acordo com a quantidade, então se você deletar uma linha, a função que eu citei ali vai ter um valor exato de itens na lista.

 

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
#include <WinAPI.au3>
#include <StringConstants.au3>
#include <Array.au3>
#include <GuiListBox.au3>



#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 612, 480, 192, 154)

$MenuItem1 = GUICtrlCreateMenu("&Arquivo")
$MenuItem2 = GUICtrlCreateMenuItem("Salvar                  Ctrl+S", $MenuItem1, $SS_CENTER)
$MenuItem4 = GUICtrlCreateMenuItem("Carregar                Ctrl+O", $MenuItem1, $SS_CENTER)
$MenuItem3 = GUICtrlCreateMenuItem("Salvar Como             Shitft+Ctrl+S", $MenuItem1, $SS_CENTER)

$Group1 = GUICtrlCreateGroup("", 21, 8, 569, 97, $SS_CENTER)
$Input1 = GUICtrlCreateInput("ID COR", 122, 32, 97, 21, $SS_CENTER)
$Input2 = GUICtrlCreateInput("REGIÃO", 138, 64, 249, 21, $SS_CENTER)
$Input3 = GUICtrlCreateInput("Label", 264, 30, 121, 21, $SS_CENTER)
$Label1 = GUICtrlCreateLabel("Label", 232, 32, 30, 17, $SS_CENTER)
$Button1 = GUICtrlCreateButton("Capturar Cor", 42, 30, 75, 25, $SS_CENTER)
$Button2 = GUICtrlCreateButton("Capturar Região", 42, 62, 91, 25, $SS_CENTER)
$Button3 = GUICtrlCreateButton("ADD", 442, 24, 113, 33)
$Button5 = GUICtrlCreateButton("Delet", 442, 64, 113, 33)

$Group2 = GUICtrlCreateGroup("Editar ID selecionado", 8, 384, 601, 57, $SS_CENTER)
$Input7 = GUICtrlCreateInput("ID", 10, 402, 40,21, $SS_CENTER)

$Input4 = GUICtrlCreateInput("COR", 51, 402, 121, 21, $SS_CENTER)
$Input5 = GUICtrlCreateInput("REGIÃO", 173, 402, 249, 21, $SS_CENTER)
$Input6 = GUICtrlCreateInput("LABEL", 423, 402, 121, 21, $SS_CENTER)
$Button4 = GUICtrlCreateButton("\/", 544, 400, 30, 25, $SS_CENTER)
$Button6 = GUICtrlCreateButton("/\", 574, 400, 30, 25, $SS_CENTER)

;   Add column
;~ Global $id = Int(0)
$List1 = GUICtrlCreateListView("",5, 120, 601, 253, $SS_CENTER)
_GUICtrlListView_AddColumn($List1, "ID",40)
_GUICtrlListView_AddColumn($List1, "COR",100)
_GUICtrlListView_AddColumn($List1, "COORDENADA",305)
_GUICtrlListView_AddColumn($List1, "LABEL",150)


GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
   Case $GUI_EVENT_CLOSE
      Exit
   Case $MenuItem2
      MsgBox($MB_SYSTEMMODAL, "ctrl + s", "Nothing Here",1)
   Case $MenuItem3
      MsgBox($MB_SYSTEMMODAL, "shift+ctrl s", "Nothing Here",1)
   Case $MenuItem4
      MsgBox($MB_SYSTEMMODAL, "ctrl + o", "Nothing Here",1)
   Case $Button1
      MsgBox($MB_SYSTEMMODAL, "Capturar cor", "Aperte espaço para capturar a cor")
      GUICtrlSetData($Input1,MouseColor())
   Case $Button2

      MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição inicial")
      local $mouse = MouseGetPos()
      $x_init   = $mouse[0]
      $y_init   = $mouse[1]
      MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição final")
       local $mouse = MouseGetPos()
      $x_end    = $mouse[0]
      $y_end    = $mouse[1]
      GUICtrlSetData($Input2,$x_init&','&$y_init&' ; '&$x_end&','&$y_end)
     Case $Button3
      _GUICtrlListView_AddItem($List1, _GUICtrlListView_GetItemCount ( $List1 )+1, 1) ; id
      _GUICtrlListView_AddSubItem($List1, _GUICtrlListView_GetItemCount ( $List1 )-1, GUICtrlRead($Input1), 1, 1) ;cor
      _GUICtrlListView_AddSubItem($List1, _GUICtrlListView_GetItemCount ( $List1 )-1, GUICtrlRead($Input2), 2, 1) ;coordenada
      _GUICtrlListView_AddSubItem($List1, _GUICtrlListView_GetItemCount ( $List1 )-1, GUICtrlRead($Input3), 3, 1) ;label
;~       $id= $id + 1
   Case $Button4
      $Item = _GUICtrlListView_GetSelectedIndices($List1)
      $Sid = _GUICtrlListView_GetItem($List1, Number($Item),0)
      $Scor = _GUICtrlListView_GetItem($List1, Number($Item),1)
      $Scord = _GUICtrlListView_GetItem($List1, Number($Item),2)
      $Slabel = _GUICtrlListView_GetItem($List1, Number($Item),3)
   ; get info
      GUICtrlSetData($Input7,$Sid[3])
      GUICtrlSetData($Input4,$Scor[3])
      GUICtrlSetData($Input5,$Scord[3])
      GUICtrlSetData($Input6,$Slabel[3])
   Case $Button5
      _GUICtrlListView_DeleteItemsSelected($List1)
   Case $Button6
   ; give back inf
      if GUICtrlRead($Input7) <> "ID" Then
         _GUICtrlListView_SetItem($List1,  GUICtrlRead($Input4), GUICtrlRead($Input7),1) ;cor
         _GUICtrlListView_SetItem($List1,  GUICtrlRead($Input5), GUICtrlRead($Input7),2) ;coordenada
         _GUICtrlListView_SetItem($List1,  GUICtrlRead($Input6), GUICtrlRead($Input7),3) ;coordenada
      EndIf
 EndSwitch
WEnd

Func MouseColor()
   local $mouse = MouseGetPos()
   Return Hex(PixelGetColor($mouse[0],$mouse[1]), 6)
EndFunc

 

Edited by Pedro Pinheiro
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Nossa muito obrigado. Só vou ter que fazer algo quando deleta pq daí quando adiciono uma nova linha ele repete o último.

Mas a revolta toma conta do meu ser por ter perdido hrs em por causa de uma linha

 

 

edit:

A solução foi até bem simples, eu declaro uma variável lá no início e toda vez que deleto, eu já adiciono +1 nessa variável, é essa variável é somada com essa que tu me arrumou.

Assim não buga no delete e continua adicionando id normalmente. Vlw vc é o cara

 

 

Edited by Bllee
Informações adicionais

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×