Olá, boa tarde.
Tenho uma dúvida a respeito de listview (famosa tabela na gui do ahk).
Como faço para manipular listviews entre guis?
Tenho 2GUIS, onde cada uma tem uma listview diferente.
E dentro dessa listview tenho botões que interagem entre elas.
A minha dúvida é:
Como posso fazer para ao clicar em um botão na gui 1, atualizar valores da listview da gui2.
Grato pela atenção!
Listview Dúvida Topic is solved
Moderator: Gio
-
- Posts: 95
- Joined: 13 Sep 2021, 06:08
Re: Listview Dúvida Topic is solved
Boa tarde Thalesduarte.
Você deve observar duas coisas:
Primeira coisa:
As funções de listview (tais como Lv_add(), Lv_modifycol(), etc) operam sempre sobre a GUI padrão atual, e isso pode ser redefinido a qualquer momento usando o comando GUI, Default.
Por exemplo, uma linha Gui, 3: Default faria com que toda e qualquer chamada à uma função de ListView dali em diante fosse direcionada à GUI 3.
OBS: Esta definição é local, sendo assim sugiro que você redefina a GUI desejada como Default explicitamente logo antes de quaisquer novos agrupamentos de chamadas à funções listView para evitar comportamentos inesperados.
Exemplo:
Segunda coisa:
Uma GUI também pode ter mais de uma listview, então se você precisar, saiba que também pode definir QUAL LISTVIEW DA MESMA GUI será a listview padrão daquela GUI (de modo que às chamadas subsequentes à funções listview operem naquela listview específica se aquela GUI for a GUI padrão atual). Para isso, atribuia uma v-variável a cada ListView e depois use o comando GUI com o subcomando ListView e depois o nome da variável da GUI desejada para redefinir qualquer das listviews como a listview padrão daquela GUI.
Por exemplo, no código abaixo eu tenho duas listviews e dois botões diferentes. Atribui à primeira a v-variável "ViewPrimeira" e depois atribui à segunda a v-variável "ViewSegunda". Com isso, pode usar o comando Gui, Listview, ViewPrimeira para direcionar as chamadas de funções à listview à primeira ListView por exemplo. Com isso criei dois botões, sendo que um escreve uma nova linha na listview 1, e o outro escreve na listview 2.
Veja nos comentários do código o passo-a-passo que usei para que cada botão escreva na sua listaview específica.
Por fim, o código abaixo seria a resposta mais direta à pergunta: criamos duas guis (2 e 3) e depois fazemos com que o botão da GUI 3 insira dados na listview da GUI 2. Isso será possível justamente porque colocamos comandos na g-label do botão da GUI 3 que tornam a GUI 2 e sua listview os padrões daquela g-label.
Espero ter ajudado, se ainda tiver alguma dúvida, basta postar abaixo.
Você deve observar duas coisas:
Primeira coisa:
As funções de listview (tais como Lv_add(), Lv_modifycol(), etc) operam sempre sobre a GUI padrão atual, e isso pode ser redefinido a qualquer momento usando o comando GUI, Default.
Por exemplo, uma linha Gui, 3: Default faria com que toda e qualquer chamada à uma função de ListView dali em diante fosse direcionada à GUI 3.
OBS: Esta definição é local, sendo assim sugiro que você redefina a GUI desejada como Default explicitamente logo antes de quaisquer novos agrupamentos de chamadas à funções listView para evitar comportamentos inesperados.
Exemplo:
Code: Select all
Gui, 3: Default ; Veja como defino explicitamente aqui nesta linha que quero que as funções abaixo sejam direcionadas à GUI 3...
Lv_Add("", 1, 2, 3)
Lv_ModifyCol(1, 120)
Lv_ModifyCol(2, 100)
Lv_ModifyCol(3, 100)
Segunda coisa:
Uma GUI também pode ter mais de uma listview, então se você precisar, saiba que também pode definir QUAL LISTVIEW DA MESMA GUI será a listview padrão daquela GUI (de modo que às chamadas subsequentes à funções listview operem naquela listview específica se aquela GUI for a GUI padrão atual). Para isso, atribuia uma v-variável a cada ListView e depois use o comando GUI com o subcomando ListView e depois o nome da variável da GUI desejada para redefinir qualquer das listviews como a listview padrão daquela GUI.
Por exemplo, no código abaixo eu tenho duas listviews e dois botões diferentes. Atribui à primeira a v-variável "ViewPrimeira" e depois atribui à segunda a v-variável "ViewSegunda". Com isso, pode usar o comando Gui, Listview, ViewPrimeira para direcionar as chamadas de funções à listview à primeira ListView por exemplo. Com isso criei dois botões, sendo que um escreve uma nova linha na listview 1, e o outro escreve na listview 2.
Code: Select all
#SingleInstance, Force
Gui, 2: Add, ListView, x20 y20 w500 h200 vViewPrimeira, Codigo|Nome|Telefone ; Veja como atribui uma v-variável de nome ViewPrimeira à esta listview específica...
Gui, 2: Add, Button, x20 y460 gADICIONAR_NA_PRIMEIRA, PRIMEIRA
Gui, 2: Add, Listview, x20 y240 w500 h200 vViewSegunda, Data|Hora|Usuario ; Veja como atribui OUTRA v-variável, desta vez com nome ViewSegunda, à esta listview específica...
Gui, 2: Add, Button, x100 y460 gADICIONAR_NA_SEGUNDA, SEGUNDA
Gui, 2: Show, w550 h500, Exemplo com duas listviews
Return
ADICIONAR_NA_PRIMEIRA:
Gui, 2: Default ; Começo definindo que a Gui 2 será a gui padrão atual.
Gui, 2: ListView, ViewPrimeira ; Depois, defino que a listview com a v-variável ViewPrimeira será a listview padrão da GUI atual.
Lv_Add("", "1", "Fulano", "9999-9999") ; Daí é só escrever ou fazer o que quiser que já sei que vai acertar justo na primeira listview da gui 2...
Return
ADICIONAR_NA_SEGUNDA:
Gui, 2: Default ; Começo definindo que a Gui 2 será a gui padrão atual.
Gui, 2: ListView, ViewSegunda ; Depois, defino que a listview com a v-variável ViewSegunda será a listview padrão da GUI atual.
Lv_Add("", "12/09/2022", "16:17", "Beltrano") ; Daí é só escrever ou fazer o que quiser que já sei que vai acertar justo na segunda listview da gui 2...
Return
Veja nos comentários do código o passo-a-passo que usei para que cada botão escreva na sua listaview específica.
Por fim, o código abaixo seria a resposta mais direta à pergunta: criamos duas guis (2 e 3) e depois fazemos com que o botão da GUI 3 insira dados na listview da GUI 2. Isso será possível justamente porque colocamos comandos na g-label do botão da GUI 3 que tornam a GUI 2 e sua listview os padrões daquela g-label.
Code: Select all
#SingleInstance, Force
Gui, 2: Add, ListView, x20 y20 w500 h200 vViewPrimeira, Codigo|Nome|Telefone ; Veja como atribui uma v-variável de nome ViewPrimeira à esta listview específica...
Gui, 2: Show, w550 h500, GUI 2
Gui, 3: Add, Text, x20 y20, Clique no botão para escrever na listview da OUTRA tela (GUI 2)
Gui, 3: Add, Button, x100 y50 gADICIONAR_NA_2, ADICIONAR
Gui, 3: Show, w550 h100, GUI 3
Return
ADICIONAR_NA_2: ; Esta label está atrelada ao botão da GUI 3 (sim, da TRÊS).
Gui, 2: Default ; Começo definindo que a Gui 2 será a gui padrão atual.
Gui, 2: ListView, ViewPrimeira ; Depois, defino que a listview com a v-variável ViewPrimeira será a listview padrão da GUI atual.
Lv_Add("", "1", "Fulano", "9999-9999") ; Daí é só escrever ou fazer o que quiser que já sei que vai acertar justo na primeira listview da gui 2...
Return
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
-
- Posts: 95
- Joined: 13 Sep 2021, 06:08
Re: Listview Dúvida
Muito obrigado pelo esclarecimento @gio, seus conhecimentos são de grande fortuna nesse fórum, rsrs.
Return to “Ajuda e Suporte Geral”
Who is online
Users browsing this forum: No registered users and 3 guests