Fórum Componente desconhecido.. #370221

05/05/2009

0

Boa noite ...

Estou procurando um componente como se fosse um TMemo mas que permita criar itens que possa ter ramificações, ou seja um item retratavel

No Dreamule tem na guia Graficos....

Algem conhece?


Grato..


Freed

Freed

Responder

Posts

05/05/2009

Discorpio

Bom dia FReed.

Na palheta Win32 existe dois componentes que trabalham em conjunto que são o TTreeView e TListView.

O TTreeView serve para fazer a ramificação que voce deseja, ou seja, em forma de um árvore, enquanto que o TListView serve para mostrar o conteúdo de um ítem selecionado no TTreeView. Funciona como se fosse o Windows Explorer do Windows.

O componente TTreeView pode também trabalhar isoladamente, não sendo necessário a presença do TListView.

Na palheta Win 3.1, existem componentes semelhantes que são TDirectoryListBox e TFileListBox, porém eles eram específicos para o Windows 3.11, e para aplicãções 16 bits, e aparência e idêntica a do windows 3.11, portanto melhor mesmo é usar os da palheta Win32, que tem mais recursos.


Responder

Gostei + 0

06/05/2009

Freed

Grato pela resposta Discorpio..


Agora tenho dificuldades de inserior os icones nos itens..
EX:
No TreeView1 terá as ramificações:
Débitos // 1º imagen do ImageList1

Créditos // 2º imagen do ImageList1

Como posso inserir imagens diferentes para os item do TreeView1?
E como posso adicionar eventos para cada item? EX:
em ´Débitos´ evento onclick = Showmessage(´Débitos´);


Grato..


Responder

Gostei + 0

06/05/2009

Woinch

Para atribuir imagens diferentes basta atribuir um ImageList ao TreeView através da propriedade Images do mesmo e para alterar a imagem de cada item basta alterar a propriedade ImageIndex de cada Item para o número correspondente a imagem do ImageList (começando por zero).

Para fazer o evento OnClick baseie-se no seguinte exemplo:

  if (TreeView1.Selected.Text = ´Débitos´) then
    ShowMessage(´Débitos´);


PS: Você pode utilizar a propriedade AbsoluteIndex caso exista mais itens com o mesmo nome para verificar qual o verdadeiro item que está clicando (mas isso retornará um valor númerico ai basta alterar o if).
PS2: Dá para utilizar o mesmo esquema para outros eventos, por exemplo OnDblClick.

Espero ter ajudado.


Responder

Gostei + 0

06/05/2009

Discorpio

Bom dia FReed.

O componente TTreeView possui duas propriedades de imagens: a Images e StateImages, onde voce pode liká-las a dois componentes TImageList.

Nomalmente a propriedade StateImages é mais utilizado quando voce quer colocar o efeito de CheckBoxes em cada ítem de sua árvore, e é claro que o segundo TImageList terá que possui duas imagens apenas, CheckBox ticado e CheckBox não ticado, e também escrever certo código de mudança de imagem no evento OnClick do mesmo.

Como percebo que voce que somente utilizar um imagem, então configure somente a propriedade Images com um único TImageList, onde nesse TImageList, voce colocará as imagens dos ítens e de todos sub-ítens.

Dê dois clicks dentro do TTreeView e voce vai acionar a caixa TTreeView Items Editor, onde além de configurar o captions dos ítens e sub-ítens, voce vai configurar na opção ImageIndex, o número do Index correspondente a imagem desejada do TImageList, faça este escolha, selecionando cada ítem e sub-ítem do TTreeView.

Repare também que existe a opção StateIndex, para selecionar a imagem do possível segundo TImageList (CheckBoxes), caso ele exista.

Já para adicionar o Evento OnClick, ou qualque outro, selecione o TTreeView e tecle F11 para invocar o Object Inspetor e vá na aba Events e selecione o evento OnClick clicando dentro da caixa texto do seu combo, o escopo da procedure será automaticamente escrito. O nosso amigo Woinch já deu um exemplo de como escrever o seu código, podendo ser também assim:

    procedure TForm1.TreeView1Click(Sender: TObject);
    var NomeItem: String;
    begin
         NomeItem := TTreeView(Sender).Selected.Text;
         if NomeItem = ´Débitos then begin
            ...
            ...
         end else if NomeItem = ´Creditos´ then begin
            ...
            ...
         end else if NomeItem = .....

     end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar