zephirus Posted May 31, 2009 at 09:15 PM Report #268804 Posted May 31, 2009 at 09:15 PM Olá, Tenho uma listview com duas colunas. Posso ter, ou não, dados para introduzir na lista. No caso de ter, quero adicionar duas palavras, uma na coluna 1 e outra na coluna 2. Como é que faço isto? Neste momento o meu código está assim mas isto adiciona um item apenas à primeira coluna e eu queria adicionar a parte "Label" à primeira e a parte "Part" à segunda coluna. While reader.Read() listView1.Items.Add(reader.Item("Label") & " - " & reader.Item("PartNumber"))
jpaulino Posted May 31, 2009 at 09:21 PM Report #268805 Posted May 31, 2009 at 09:21 PM Vê este artigo: ListViews e 36 utilidades directas em especial o ponto #4 - Adicionar itens
zephirus Posted May 31, 2009 at 09:36 PM Author Report #268807 Posted May 31, 2009 at 09:36 PM Vê este artigo: ListViews e 36 utilidades directas em especial o ponto #4 - Adicionar itens Para já agradeço o link. Vai ficar nos bookmarks. Quanto à minha questão inicial continuo sem conseguir fazer o que quero. O ponto 4 mostra como criar dinâmicamente mas eu já tenho a minha listview e as colunas definidas.
jpaulino Posted May 31, 2009 at 10:33 PM Report #268809 Posted May 31, 2009 at 10:33 PM Existe uma coisa que é o ListViewItem (para a primeira coluna) e o ListViewSubItem (para as restantes colunas). O que tens de fazer é como o exemplo mostra 😉
zephirus Posted May 31, 2009 at 10:50 PM Author Report #268814 Posted May 31, 2009 at 10:50 PM Existe uma coisa que é o ListViewItem (para a primeira coluna) e o ListViewSubItem (para as restantes colunas). O que tens de fazer é como o exemplo mostra 😉 Mas isto não está a aceitar nenhum listviewsubitem... Sinceramente não percebo onde estou a errar.
jpaulino Posted May 31, 2009 at 10:52 PM Report #268815 Posted May 31, 2009 at 10:52 PM Mostra lá o código!
ribeiro55 Posted May 31, 2009 at 10:57 PM Report #268817 Posted May 31, 2009 at 10:57 PM No #5 do artigo, explica como te podes referenciar a um valor. Onde lês: LV.SelectedItems(0).SubItems("Idade").Text Com referência, tens acesso à colecção que contém os subitems. Por exemplo assim: LV.SelectedItems(0).SubItems.Add("A tal palavra") LV.SelectedItems(0).SubItems.Add("A tal segunda palavra") Se quiseres afectar uma coluna de uma forma não sequencial, terás de aldrabar pois não me recordo se a coleção subitems tem algum display index ou coisa parecida (por acaso tenho de ir coscuvilhar isso): LV.SelectedItems(0).SubItems.Add("") LV.SelectedItems(0).SubItems.Add("A tal segunda palavra") Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
zephirus Posted May 31, 2009 at 10:58 PM Author Report #268818 Posted May 31, 2009 at 10:58 PM Mostra lá o código! Estou a usar o teu código para fazer a selecção de dados de uma base de dados: http://vbtuga.blogspot.com/2008/04/vbnet-gesto-de-dados-em-sql-server_16.html As únicas diferenças é que estou a ir buscar dois items a uma tabela e não um. Depois cá para o fim tenho isto: If reader.HasRows Then ' Executa um ciclo nas linhas existentes mostrando o campo “username” While reader.Read() listView1.Items.Add(reader.Item("Label") & " - " & reader.Item("PartNumber")) End While A minha listview já tem duas colunas. Esse código acima era só para testar porque o que eu queria era o Label na primeira coluna e o PartNumber na 2ª
jpaulino Posted May 31, 2009 at 11:00 PM Report #268819 Posted May 31, 2009 at 11:00 PM Vê o exemplo que o ribeiro55 te mostrou 😉 No meu blog também tens alguns exemplos com listviews, mas este exemplo está simples!
zephirus Posted May 31, 2009 at 11:04 PM Author Report #268821 Posted May 31, 2009 at 11:04 PM Vê o exemplo que o ribeiro55 te mostrou 😉 No meu blog também tens alguns exemplos com listviews, mas este exemplo está simples! Epá, agradeço a vossa paciência mas eu também já estou todo trocado. É que a minha listview está vazia e um número indeterminado de items vão ser adicionados. Nesse exemplo é usado o index 0 para o item mas eu no meu caso não o posso usar. Estou mesmo a dar em maluco com isto e se calhar até é fácil.
ribeiro55 Posted May 31, 2009 at 11:06 PM Report #268822 Posted May 31, 2009 at 11:06 PM Podes usar o artigo #5 em pleno se quando adicionares os items, os já adiciones com os dois subitems vazios extra. Assim eles já existem e não precisas de recorrer a maroscas. Estuda o #4 para saberes como adicionar os itens correctamente para que os seus elementos fiquem facilmente acessíveis. Quanto a teres de tirar duas palavras de uma frase, aproveita o facto de usares o "-" para concatenares a string. Exemplo: Dim Frase As String = "Falar é fácil - Copiar código é ainda mais" Dim P() As String = Split(Frase, " - ") MsgBox(P(0)) MsgBox(P(1)) Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
jpaulino Posted May 31, 2009 at 11:10 PM Report #268823 Posted May 31, 2009 at 11:10 PM Mais simples que isto não sei: Dim item As New ListViewItem item.Text = "Coluna 1" item.SubItems.Add("Coluna 2") Me.ListView1.Items.Add(item)
zephirus Posted May 31, 2009 at 11:14 PM Author Report #268824 Posted May 31, 2009 at 11:14 PM Ok, fiz assim e já deu: Dim LVI As New ListViewItem Dim SLVI1 As New ListViewItem.ListViewSubItem LVI.Name = "Label" LVI.Text = reader.Item("Label") SLVI1.Name = "Part Number" SLVI1.Text = reader.Item("PartNumber") LVI.SubItems.Add(SLVI1) listView1.Items.Add(LVI) O que eu não percebo e pensei que desse era para definir o subitem com algo do género: listView1.Items.Item(index).Subitems(0).Text = .... Aparentemente não dá. Muito obrigado aos dois pela ajuda.
ribeiro55 Posted May 31, 2009 at 11:16 PM Report #268825 Posted May 31, 2009 at 11:16 PM Dá, se já existir. Se não existir, não dá. E o índice 0 dos subitems é o próprio item. O que é engraçado. 😁 Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
zephirus Posted June 2, 2009 at 05:51 PM Author Report #269350 Posted June 2, 2009 at 05:51 PM Infelizmente tive de voltar a abrir este tópico. Estou a implementar parte deste código mas em compact framework para por no pda e estou a tentar usar uma listview. Infelizmente na parte do código de adicionar items à listview, obtenho os seguinte erros: 'Name' não é um membro de 'System.Windows.Forms.ListViewItem'. (BC30456) - D:\PT104246\My Documents\SharpDevelop Projects\pda\pda\MainForm.vb:40 'Name' não é um membro de 'System.Windows.Forms.ListViewItem.ListViewSubItem'. (BC30456) - D:\PT104246\My Documents\SharpDevelop Projects\pda\pda\MainForm.vb:42 respectivamente nas linhas de código: lvi.Name = "Id" slvi1.Name = "Label" O código todo é o seguinte: Dim lvi As New ListViewItem Dim slvi1 As New ListViewItem.ListViewSubItem lvi.Name = "Id" lvi.Text = SQLreader("id") slvi1.Name = "Label" slvi1.Text = SQLreader("label") lvi.SubItems.Add(slvi1) listView1.Items.Add(lvi) isto é muito estranho pois o item da listview tem de ter uma propriedade 'name'. O que é que está aqui a falhar?
ribeiro55 Posted June 2, 2009 at 05:55 PM Report #269353 Posted June 2, 2009 at 05:55 PM Não tenho experiência com a compact framework, mas de facto esses objectos não precisam necessáriamente de nome. Repara que no exemplo do jpaulino o nome não é usado. De facto, se voltares ao #4 do artigo has-de reparar na nota amarela que lá está 😁 Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
zephirus Posted June 2, 2009 at 06:05 PM Author Report #269359 Posted June 2, 2009 at 06:05 PM Não tenho experiência com a compact framework, mas de facto esses objectos não precisam necessáriamente de nome. Repara que no exemplo do jpaulino o nome não é usado. De facto, se voltares ao #4 do artigo has-de reparar na nota amarela que lá está 😁 Penso que já sei qual é o problema. É que eu tenho a minha listview em modo "details" (o único que me permite ter colunas) mas pelos visto isso não é compatível para o pda. O erro é este: 'PerformLayout' não é um membro de 'pda.MainForm'. (BC30456) Se de facto isto é verdade, que alternativas poderei usar para ter o mesmo tipo de control? Ou seja, uma lista com várias colunas.
zephirus Posted June 2, 2009 at 08:39 PM Author Report #269417 Posted June 2, 2009 at 08:39 PM Estou a usar o sharpdevelop para fazer o meu programa e verifiquei que no visualstudio já dá para adicionar os items às colunas. Se calhar vou optar por fazer isto no visualstudio mas mantenho a minha questão. Além da listview há outra maneira para fazer o que pretendo?
ribeiro55 Posted June 5, 2009 at 09:21 AM Report #270089 Posted June 5, 2009 at 09:21 AM Se os SmartPhones não papam ListViews em modo details, a Microsoft não deixava isso pendurado e deve existir outro controlo do género para isso. Sim, usa VS. Com as SDK instaladinhas tens logo simulações e tudo certinho direitinho em relação ao que funciona ou não. Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
zephirus Posted June 5, 2009 at 10:28 AM Author Report #270099 Posted June 5, 2009 at 10:28 AM Se os SmartPhones não papam ListViews em modo details, a Microsoft não deixava isso pendurado e deve existir outro controlo do género para isso. Sim, usa VS. Com as SDK instaladinhas tens logo simulações e tudo certinho direitinho em relação ao que funciona ou não. Pois. No VS dá. Deve ser algum problema com o sharpdevelop que aproveito para dizer que sendo free é uma excelente ferramenta.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now