Listview Dúvida

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Listview Dúvida

Re: Listview Dúvida

Post by thalesduarte » 12 Sep 2022, 16:36

Muito obrigado pelo esclarecimento @gio, seus conhecimentos são de grande fortuna nesse fórum, rsrs.

Re: Listview Dúvida

Post by Gio » 12 Sep 2022, 16:20

Boa tarde Thalesduarte.

Você deve observar duas coisas:

:arrow: 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: 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.

Listview Dúvida

Post by thalesduarte » 12 Sep 2022, 15:11

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!

Top