Post by Ria » 14 Oct 2018, 20:50
Olá,
Penso que deve dar uma olhada no código abaixo.
Vai aproveitar algo do que você precisa.
Abraço
Code: Select all
#warn
setworkingdir,%a_scriptdir%
F1=%A_scriptdir%\PT_adress.txt
MainWindowTitle=ListView_Test1
transform,T,chr,09 ;- TAB
Gui,1:default
gosub,testfile
Gui, Font, s8 cBlack, Tahoma
Gui Add, GroupBox, cBlue x12 y5 w215 h143, DADOS:
Gui, add, ListView, x20 y20 h120 w200 gLVa vLV1 +altsubmit , Nome|Telefone
Lv_ModifyCol(1, 130) ; Dimensão a atribuir ao tamanho da coluna 1
Lv_ModifyCol(2, 60) ; Dimensão a atribuir ao tamanho da coluna 2
gosub,fill
Gui, add, text, x20 y240, Telefone: ; Texto de campo telefone
Gui, add, Edit, x20 y255 w100 h20 vFONE, ; Edit campo telefone
Gui, Add, Button,x12 y155 w215 h20 gEliminarx, Eliminar selecionados(as) ;-Botão Apagar
Gui Add, GroupBox, -cBlue x12 y185 w215 h100, REGISTO:
Gui, add, Text, x20 y200, Nome: ; Texto de campo nome
Gui, Add, Edit, x20 y215 w120 h20 vNOME, ; Edit campo nome
Gui, Add, Button,x160 y215 w60 h20 gAdd , Guardar ; Botão Guardar
Gui, Add, Button,x160 y255 w60 h20 gLimpa , Limpar ; Botão Limpar
Gui Add, GroupBox, cBlue x12 y290 w215 h45, PESQUISAR:
Gui, Add, Edit, x20 y305 w200 h22 gFind vSrc, ;-Pesquisar
Gui, +Alwaysontop
Gui, show, w240 h350, LISTA TELEFÓNICA ; Tela geral
Menu, CMenu, Add, Eliminar, menuDo
Menu, CMenu, Add, Editar , menuDo
Return
Add:
Gui, submit, nohide ; Atualiza com os dados do campo
Fileappend,%nome%`;%fone%`r`n,%f1%
gosub,fill
sleep,1000
GuiControl,1:,fone,
GuiControl,1:,nome,
Return
GuiClose:
ExitApp
;----------------------------------------
;-------------- Fill Listview -----------
Fill:
Gui,1:default
gui,1:listview,LV1
LV_Delete()
loop,read,%F1%
{
LR=%A_loopReadLine%
if LR=
continue
C1 =
C2 =
stringsplit,C,LR,`;,
LV_Add("", c1,c2)
}
LV_ModifyCol(1, "Sort CaseLocale") ; or "Sort CaseLocale"
LV_Modify(LV_GetCount(), "Vis") ;scrolls down
return
;----------------------------------------
;----------- Listview click on row -------
LVa:
Gui,1:Submit,nohide
if A_GuiEvent = Normal
{
LV_GetText(C1,A_EventInfo,1)
LV_GetText(C2,A_EventInfo,2)
cx=%c1%;%c2%
RN:=LV_GetNext("C")
RF:=LV_GetNext("F")
GC:=LV_GetCount()
}
if A_GuiEvent = Rightclick
{
LV_GetText(C1,A_EventInfo,1)
LV_GetText(C2,A_EventInfo,2)
cx=%c1%;%c2%
RN:=LV_GetNext("C")
RF:=LV_GetNext("F")
GC:=LV_GetCount()
goto,menux
}
return
;----------------------------
;------------- MENU when rightclick on row ----------
menux:
MouseGetPos, musX, musY
Menu, CMenu, Show, %musX%,%musY%
return
menudo:
If (A_ThisMenuItem = "Eliminar")
gosub,Eliminarx2
If (A_ThisMenuItem = "Editar")
gosub,Editarx
return
;-------------------------------
Limpa: ; Limpar
Gui, submit, nohide ; Limpa os dados do campo
return
;--------------------------------
Eliminarx2:
Gui,1:default
gui,1:listview,LV1
if RF=0
return
LV_GetText(C1, RF, 1)
LV_GetText(C2, RF, 2)
CT=%c1%;%c2%
msgbox, 262180,DELETE ,Tem a certeza que deseja eliminar: %C1% ?
IfMsgBox,No
Return
LV_Delete(RF)
FileRead,AA,%F1%
Filedelete,%F1%
StringReplace,BB,AA,%ct%`r`n,,
FileAppend,%BB%,%F1%
return
;--------------- DELETE multiple selected rows --------------
Eliminarx:
C1 =
RF = 0
RFL =
Loop
{
RF:=LV_GetNext(RF)
if RF=0
break
RFL = %RF%|%RFL%
LV_GetText(C1_Temp, RF, 1)
C1 = %C1%`n%C1_Temp%
}
if C1 !=
{
msgbox, 262180,DELETE , Tem a certeza que deseja eliminar: %C1% ?
IfMsgBox,No
Return
Else
{
Loop, parse, RFL, |
LV_Delete(A_LoopField)
filedelete,%F1%
Loop % LV_GetCount()
{
BX1=
BX2=
LV_GetText(BX1,A_INDEX,1)
LV_GetText(BX2,A_INDEX,2)
fileappend,%BX1%`;%BX2%`r`n,%F1%
}
}
C1=
C2=
}
return
;--------------- modify ----------------
Editarx:
Gui,1:submit,nohide
Gui,3:Font, S13 CBlack , Lucida Console
Gui,3:Add,Text , x10 y5 w80 , Nome:
Gui,3:Add,Edit , x65 y5 w255 h20 vA31, %C1%
Gui,3:Add,Text , x12 y40 w80 , Contacto:
Gui,3:Add,Edit , x108 y40 w120 h20 vA32, %C2%
Gui,3:Add, Button, x280 y35 w40 h27, OK
Gui,3:Show, x1470 y1000 w335 h70, Dados pessoais
GuiControl,3:Focus,A31
send,^{end}
return
;--------
3GuiClose:
3GuiEscape:
Gui, 3:Destroy
return
3ButtonOK:
Gui,3:submit
if A31=
{
Gui,3: Destroy
return
}
FileRead, FileContent, %f1%
FileDelete, %f1%
StringReplace, FileContent, FileContent, %C1%`;%C2%, %A31%`;%A32%
FileAppend, %FileContent%, %f1%
GoSub,fill
Gui,3:destroy
return
;----------------------------------------------------------
;------------------- SEARCH -------------------------------
Find:
Gui,1: Submit, Nohide
Gui,1:listview, LV1
checkempty:
if (src="")
{
settimer,checkempty,off
goto,fill
return
}
settimer,checkempty,1000
LV_Delete()
loop,read,%f1%
{
LR=%A_loopReadLine%
if SRC<>
{
if LR contains %src%
{
stringsplit,C,A_LoopReadLine,`;
LV_Add("",C1,C2)
}
}
else
continue
}
LV_Modify(LV_GetCount(), "Vis")
if (SRC="")
goto,Fill
return
;------------------------------------------------------
;--------------- create testfile ----------------------
testfile:
ifnotexist,%f1%
{
e1=
(Ltrim Join`r`n
)
Fileappend,%e1%`r`n,%f1%
e1=
}
return
;============ END script ====================================
Olá,
Penso que deve dar uma olhada no código abaixo.
Vai aproveitar algo do que você precisa.
Abraço
[code]#warn
setworkingdir,%a_scriptdir%
F1=%A_scriptdir%\PT_adress.txt
MainWindowTitle=ListView_Test1
transform,T,chr,09 ;- TAB
Gui,1:default
gosub,testfile
Gui, Font, s8 cBlack, Tahoma
Gui Add, GroupBox, cBlue x12 y5 w215 h143, DADOS:
Gui, add, ListView, x20 y20 h120 w200 gLVa vLV1 +altsubmit , Nome|Telefone
Lv_ModifyCol(1, 130) ; Dimensão a atribuir ao tamanho da coluna 1
Lv_ModifyCol(2, 60) ; Dimensão a atribuir ao tamanho da coluna 2
gosub,fill
Gui, add, text, x20 y240, Telefone: ; Texto de campo telefone
Gui, add, Edit, x20 y255 w100 h20 vFONE, ; Edit campo telefone
Gui, Add, Button,x12 y155 w215 h20 gEliminarx, Eliminar selecionados(as) ;-Botão Apagar
Gui Add, GroupBox, -cBlue x12 y185 w215 h100, REGISTO:
Gui, add, Text, x20 y200, Nome: ; Texto de campo nome
Gui, Add, Edit, x20 y215 w120 h20 vNOME, ; Edit campo nome
Gui, Add, Button,x160 y215 w60 h20 gAdd , Guardar ; Botão Guardar
Gui, Add, Button,x160 y255 w60 h20 gLimpa , Limpar ; Botão Limpar
Gui Add, GroupBox, cBlue x12 y290 w215 h45, PESQUISAR:
Gui, Add, Edit, x20 y305 w200 h22 gFind vSrc, ;-Pesquisar
Gui, +Alwaysontop
Gui, show, w240 h350, LISTA TELEFÓNICA ; Tela geral
Menu, CMenu, Add, Eliminar, menuDo
Menu, CMenu, Add, Editar , menuDo
Return
Add:
Gui, submit, nohide ; Atualiza com os dados do campo
Fileappend,%nome%`;%fone%`r`n,%f1%
gosub,fill
sleep,1000
GuiControl,1:,fone,
GuiControl,1:,nome,
Return
GuiClose:
ExitApp
;----------------------------------------
;-------------- Fill Listview -----------
Fill:
Gui,1:default
gui,1:listview,LV1
LV_Delete()
loop,read,%F1%
{
LR=%A_loopReadLine%
if LR=
continue
C1 =
C2 =
stringsplit,C,LR,`;,
LV_Add("", c1,c2)
}
LV_ModifyCol(1, "Sort CaseLocale") ; or "Sort CaseLocale"
LV_Modify(LV_GetCount(), "Vis") ;scrolls down
return
;----------------------------------------
;----------- Listview click on row -------
LVa:
Gui,1:Submit,nohide
if A_GuiEvent = Normal
{
LV_GetText(C1,A_EventInfo,1)
LV_GetText(C2,A_EventInfo,2)
cx=%c1%;%c2%
RN:=LV_GetNext("C")
RF:=LV_GetNext("F")
GC:=LV_GetCount()
}
if A_GuiEvent = Rightclick
{
LV_GetText(C1,A_EventInfo,1)
LV_GetText(C2,A_EventInfo,2)
cx=%c1%;%c2%
RN:=LV_GetNext("C")
RF:=LV_GetNext("F")
GC:=LV_GetCount()
goto,menux
}
return
;----------------------------
;------------- MENU when rightclick on row ----------
menux:
MouseGetPos, musX, musY
Menu, CMenu, Show, %musX%,%musY%
return
menudo:
If (A_ThisMenuItem = "Eliminar")
gosub,Eliminarx2
If (A_ThisMenuItem = "Editar")
gosub,Editarx
return
;-------------------------------
Limpa: ; Limpar
Gui, submit, nohide ; Limpa os dados do campo
return
;--------------------------------
Eliminarx2:
Gui,1:default
gui,1:listview,LV1
if RF=0
return
LV_GetText(C1, RF, 1)
LV_GetText(C2, RF, 2)
CT=%c1%;%c2%
msgbox, 262180,DELETE ,Tem a certeza que deseja eliminar: %C1% ?
IfMsgBox,No
Return
LV_Delete(RF)
FileRead,AA,%F1%
Filedelete,%F1%
StringReplace,BB,AA,%ct%`r`n,,
FileAppend,%BB%,%F1%
return
;--------------- DELETE multiple selected rows --------------
Eliminarx:
C1 =
RF = 0
RFL =
Loop
{
RF:=LV_GetNext(RF)
if RF=0
break
RFL = %RF%|%RFL%
LV_GetText(C1_Temp, RF, 1)
C1 = %C1%`n%C1_Temp%
}
if C1 !=
{
msgbox, 262180,DELETE , Tem a certeza que deseja eliminar: %C1% ?
IfMsgBox,No
Return
Else
{
Loop, parse, RFL, |
LV_Delete(A_LoopField)
filedelete,%F1%
Loop % LV_GetCount()
{
BX1=
BX2=
LV_GetText(BX1,A_INDEX,1)
LV_GetText(BX2,A_INDEX,2)
fileappend,%BX1%`;%BX2%`r`n,%F1%
}
}
C1=
C2=
}
return
;--------------- modify ----------------
Editarx:
Gui,1:submit,nohide
Gui,3:Font, S13 CBlack , Lucida Console
Gui,3:Add,Text , x10 y5 w80 , Nome:
Gui,3:Add,Edit , x65 y5 w255 h20 vA31, %C1%
Gui,3:Add,Text , x12 y40 w80 , Contacto:
Gui,3:Add,Edit , x108 y40 w120 h20 vA32, %C2%
Gui,3:Add, Button, x280 y35 w40 h27, OK
Gui,3:Show, x1470 y1000 w335 h70, Dados pessoais
GuiControl,3:Focus,A31
send,^{end}
return
;--------
3GuiClose:
3GuiEscape:
Gui, 3:Destroy
return
3ButtonOK:
Gui,3:submit
if A31=
{
Gui,3: Destroy
return
}
FileRead, FileContent, %f1%
FileDelete, %f1%
StringReplace, FileContent, FileContent, %C1%`;%C2%, %A31%`;%A32%
FileAppend, %FileContent%, %f1%
GoSub,fill
Gui,3:destroy
return
;----------------------------------------------------------
;------------------- SEARCH -------------------------------
Find:
Gui,1: Submit, Nohide
Gui,1:listview, LV1
checkempty:
if (src="")
{
settimer,checkempty,off
goto,fill
return
}
settimer,checkempty,1000
LV_Delete()
loop,read,%f1%
{
LR=%A_loopReadLine%
if SRC<>
{
if LR contains %src%
{
stringsplit,C,A_LoopReadLine,`;
LV_Add("",C1,C2)
}
}
else
continue
}
LV_Modify(LV_GetCount(), "Vis")
if (SRC="")
goto,Fill
return
;------------------------------------------------------
;--------------- create testfile ----------------------
testfile:
ifnotexist,%f1%
{
e1=
(Ltrim Join`r`n
)
Fileappend,%e1%`r`n,%f1%
e1=
}
return
;============ END script ====================================[/code]