Post by Gio » 12 Sep 2022, 16:20
Boa tarde Thalesduarte.
Você deve observar duas coisas:
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
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)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
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
Espero ter ajudado, se ainda tiver alguma dúvida, basta postar abaixo.
Boa tarde Thalesduarte.
Você deve observar duas coisas:
:arrow: Primeira coisa:
As funções de listview (tais como [url=https://www.autohotkey.com/docs/commands/ListView.htm#LV_Add]Lv_add()[/url], [url=https://www.autohotkey.com/docs/commands/ListView.htm#LV_ModifyCol]Lv_modifycol()[/url], etc) operam sempre sobre a [u]GUI padrão atual[/u], e isso pode ser redefinido a qualquer momento usando o comando [url=https://www.autohotkey.com/docs/commands/Gui.htm#Default]GUI, Default[/url].
Por exemplo, uma linha [c]Gui, 3: Default[/c] 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]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)[/code]
:arrow: 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 [c]Gui, Listview, ViewPrimeira[/c] 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]#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[/code]
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]#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[/code]
Espero ter ajudado, se ainda tiver alguma dúvida, basta postar abaixo.