Desde já agradeço aos cracks na matéria…!
Solicito ajuda para o seguinte evento:
- Codificação do botão "Alterar" de forma a que, após alterar dados no 2.º menu (editar), guarde as novas alterações na
respetiva linha selecionada que lhe deu origem!
Bloco de código do Menu 2, aqui já com botão "Cancelar"...preciso de codificar o "Alterar":
;--------------- modify ----------------
Editarx:
Gui,1:submit,nohide ; Mantém a janela 1
Gui,3: Color, +A9A9A9 ; Cor do backround Alterar
Gui,3:Font, s8 cBlack, Tahoma
Gui,3:Add,Text , x210 y8 w20, ID:
Gui,3:Add,Edit , x210 y23 w50 h18
Gui,3:Add,Text , x10 y8 w90, Matrícula:
Gui,3:Add,Edit, x10 y23 w60 h18 vA32, %C2%
Gui,3:Add,Text , x10 y45 w80, Proprietário:
Gui,3:Add,Edit , x10 y60 w250 h18 vA31, %C3%
Gui, 3:Add, text, x10 y85 w195, Informações complementares:
Gui, 3:Add, Edit, x10 y100 w250 h45, %C4%
Gui,3:Add, Button, x35 y155 w90 h21 gCancelar, &Cancelar
Gui,3:Add, Button, x140 y155 w90 h21, Alterar
Gui,3:Show, x1490 y885 w270 h200, ALTERAR:
Gui, 3:Add, StatusBar,, Created by %creator% %versão% ; Dia.Rev.Ano.Mês
GuiControl,3:Focus,A31
send,^{end}
return
;-------------
Cancelar: ; Botão Cancelar da Gui 3
gui, 3: destroy
return
CÓDIGO COMPLETO (Para percepção):
#warn
;
; ************** Versão/ Revisão
versão = Rev. 27.1.6.2018.10
creator = AHK BR-PT@2018
; *******************************
;
REPOSITORIO_DE_ORDEM := 1 ; INICIAMOS EM 1
setworkingdir,%a_scriptdir%
F1=%A_scriptdir%\Registo.txt
MainWindowTitle=ListView_Test1
transform,T,chr,09
Gui,1:default
gosub,testfile
Gui Add, StatusBar,, Created by %creator% %versão% ; Dia.Rev.Ano.Mês
Gui Color, +A9A9A9 ; Cor do backround 2
Gui, Font, s8 cBlack, Tahoma
Gui Add, GroupBox, cBlue x12 y5 w245 h143, BASE DE DADOS:
Gui, add, ListView, x20 y20 h120 w230 gLVa vLV1 +altsubmit , ID: | Matricula: | Proprietário: |Informações Complementares: | Processo: ; AQUI ADICIONAMOS A COLUNA INFORMACOES COMPLEMENTARES
Lv_ModifyCol(1, 25)
Lv_ModifyCol(2, 60)
gosub,fill
Gui, Add, text, x20 y152 w80 h20, Pesquisar:
Gui, Add, Edit, x20 y166 w85 h22 gFind vSrc,
Gui, Add, Button,x115 y165 w134 h22 gEliminarx, Eliminar selecionados(as)
Gui Add, GroupBox, -cBlue x12 y192 w245 h148, REGISTO:
Gui, add, Text, x20 y205, Matricula: ; Matrícula
Gui, Add, Edit, x20 y220 w60 h21 vNOME,
Gui, add, text, x90 y205, Proprietário: ; Proprietário
Gui, add, Edit, x90 y220 w160 h21 vFONE,
Gui, Add, text, x20 y244 w195 h20, Informações complementares: ; ADICIONAMOS A GROUPBOX
Gui, Add, Edit, vINFORM_COMPL x20 y259 w230 h30 ; ADICONAMOS O CAMPO DE INFORMAÇOES COMPLEMENTARES
Gui, Add, Button,x20 y304 w55 h24 gAdd , Guardar
Gui, Add, Button,x80 y304 w55 h24 gLimpa, Limpar
Gui, Add, text, x152 y292 w100 h20, Processo:
Gui, Add, Edit, x152 y307 w50 h20 vNPP, Inativo! ;NPP
Gui, Add, text, x206 y309 w20 h21, /
Gui, Add, Edit, x214 y307 w36 h20, ------ ;Ano
Gui, show, w267 h368, BASE DE DADOS ; ATUALIZARMOS ESTA LINHA PARA QUE A TELA TENHA UM TAMANHO QUE COMPORTE O NOVO CAMPO
Menu, CMenu, Add, Eliminar, menuDo
Menu, CMenu, Add, Editar , menuDo
Return
; -------------------------------------------
Add:
Gui, submit, nohide
Fileappend,%nome%`;%fone%`;%INFORM_COMPL%`r`n,%f1% ; LINHA ATUALIZADA COM AS INFORMACOES COMPLEMENTARES.
gosub,fill
sleep,1500
GuiControl,1:,fone,
GuiControl,1:,nome,
GuiControl,1:,INFORM_COMPL,
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 =
C3 =
stringsplit,C,LR,`;,
LV_Add("", A_Index, c1,c2, c3) ; LINHA TUALIZADA COM O C3 (INFORMACOES COMPLEMENTARES).
}
LV_ModifyCol(1, "Sort CaseLocale")
LV_Modify(LV_GetCount(), "Vis")
return
;----------------------------------------
;----------- Listview click on row -------
LVa:
Gui,1:Submit,nohide
if A_GuiEvent = Normal
{
LV_GetText(C2,A_EventInfo,2) ; LINHAS ATUALIZADAS
LV_GetText(C3,A_EventInfo,3) ; LINHAS ATUALIZADAS
LV_GetText(C4,A_EventInfo,4) ; LINHAS ATUALIZADAS
cx=%c2%;%c3%;%c4% ; LINHAS ATUALIZADAS
RN:=LV_GetNext("C")
RF:=LV_GetNext("F")
GC:=LV_GetCount()
}
if A_GuiEvent = Rightclick
{
LV_GetText(C2,A_EventInfo,2) ; LINHAS ATUALIZADAS
LV_GetText(C3,A_EventInfo,3) ; LINHAS ATUALIZADAS
LV_GetText(C4,A_EventInfo,4) ; LINHAS ATUALIZADAS
cx=%c2%;%c3%;%c4%
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:
Gui, submit, nohide ; Limpa os dados do campo
GuiControl,1:,fone,
GuiControl,1:,nome,
GuiControl,1:,INFORM_COMPL,
GuiControl,1:,Src,
return
;--------------------------------
Eliminarx2:
Gui,1:default
gui,1:listview,LV1
if RF=0
return
;LV_GetText(C1, RF, 1)
LV_GetText(C2, RF, 2)
LV_GetText(C3, RF, 2)
LV_GetText(C4, RF, 2)
CT=%c2%;%C3%;%C4% ; LINHA TUALIZADA COM O C3 (INFORMACOES COMPLEMENTARES).
msgbox, 262180, APAGAR ,Tem a certeza que deseja eliminar a(s) linha(s) selecionada(s)? ;: %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:
;Gui, 2: Add, Text, x20 y20, Esta é a GUI 2!! ; ADICIONADO AQUI SOMENTE PARA EFEITO DIDATICO !!
;Gui, 2: Show, w500 h600 ; ADICIONADO AQUI SOMENTE PARA EFEITO DIDATICO !!
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, APAGAR , Tem a certeza que deseja eliminar a(s) linha(s) selecionada(s)? ;: %C1% ?
IfMsgBox,No
Return
Else
{
Loop, parse, RFL, |
LV_Delete(A_LoopField)
filedelete,%F1%
Loop % LV_GetCount()
{
BX1=
BX2=
LV_GetText(BX2,A_INDEX,2) ; LINHA ATUALIZADA
LV_GetText(BX3,A_INDEX,3) ; LINHA ATUALIZADA
LV_GetText(BX4,A_INDEX,4) ; LINHA ATUALIZADA
fileappend,%BX2%`;%BX3%`;%BX4%`r`n,%F1%
}
}
C1=
C2=
}
return
;--------------- modify ----------------
Editarx:
Gui,1:submit,nohide ; Mantém a janela 1
Gui,3: Color, +A9A9A9 ; Cor do backround Alterar
Gui,3:Font, s8 cBlack, Tahoma
Gui,3:Add,Text , x210 y8 w20, ID:
Gui,3:Add,Edit , x210 y23 w50 h18
Gui,3:Add,Text , x10 y8 w90, Matrícula:
Gui,3:Add,Edit, x10 y23 w60 h18 vA32, %C2%
Gui,3:Add,Text , x10 y45 w80, Proprietário:
Gui,3:Add,Edit , x10 y60 w250 h18 vA31, %C3%
Gui, 3:Add, text, x10 y85 w195, Informações complementares:
Gui, 3:Add, Edit, x10 y100 w250 h45, %C4%
Gui,3:Add, Button, x35 y155 w90 h21 gCancelar, &Cancelar
Gui,3:Add, Button, x140 y155 w90 h21, Alterar
Gui,3:Show, x1490 y885 w270 h200, ALTERAR:
Gui, 3:Add, StatusBar,, Created by %creator% %versão% ; Dia.Rev.Ano.Mês
GuiControl,3:Focus,A31
send,^{end}
return
;-------------
Cancelar: ; Botão Cancelar da Gui 3
gui, 3: destroy
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("",A_index, C1,C2, C3) ; LINHA TUALIZADA COM O C3 (INFORMACOES COMPLEMENTARES).
}
}
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 ====================================