VirtualTreeview Example for Lazarus/es

From Lazarus wiki
Revision as of 22:58, 13 October 2011 by Stardev (talk | contribs)
Jump to navigationJump to search

English (en) español (es) français (fr) polski (pl) русский (ru)

Aqui hay algunos ejemplos acerca de como how usar el control VirtualTreeview para Lazarus (probado en win32). La mayoria de estos ejemplos han sido recolectados de la web, escritos para delphi, y de los documentos o tutoriales por Philipp Frenzel y Mike Lischke. Los documentos o tutoriales pueden ser descargados desde http://www.soft-gems.net . Abajo, usted puede encontrar alguna forma rapida de como utilizar VirtualTreeview en Lazarus, no explicaciones detallas. Para mas explicaciones y otros metodos o funciones, obtenga los documentos oficiales y el tutorial.

Ejemplo Tree Listview basico con 3 columnas

1. Instalar el componente. Ejecutar Lazarus.

2. Arrastrar un componente TVirtualStringTree (bajo la pagina Controles Visuales).

3. Vaya al editor de codigo (oprima la tecla F12). Bajo la sentencia Uses agregue una unidad - escriba VirtualTrees (si no existe previamente, no confunda con la unidad VirtualStringTree). Se vera de forma igual o similar a : <delphi>uses

 Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
 VirtualStringTree, VirtualTrees;</delphi>  

4. Vaya al Diseñador de Formas (oprima la tecla F12). Seleccione el componente Virtual Tree. En el Inspector de Objetos haga clic en Nombre, escriba VST y oprima la tecla Enter (Return). Haga clic en Encabezado (expandalo) -> Columnas, haga clic en el pequeño boton, al lado de "0 elementos". Haga clic 3 veces en agregar boton para agregar 3 columnas. No cierre esta ventana.

5. En la ventana para Edicion de Columna, aparecera la 3ra. columna como seleccionada. Vaya al Inspector de Objetos. Haga clic en Opciones (expandalo) -> y asigne coAllowClick como False.

6. Haga clic en Texto. Escriba Column2.

7. Haga clic en ancho, escriba 100 y oprima la tecla Enter (Return).

8. Vaya a la ventana para Edicion de Columna, seleccione las columnas 1ra. y 2da., y asigne su propiedad como la de arriba (para el campo Texto, use nombres diferentes, ejemplo: Columna0, Columna1).

9. Cierre la ventana para Edicion de Columna. Seleccione el component Virtual Tree en la forma. En el Inspector de Objetos vaya a Encabezado -> Opciones (expandalo). Asigne coAllowClick como True.

10. Desplaze hacia abajo hasta Style, y asignelo como hsFlatButtons.

11. Desplaze hacia abajo hasta TreeOptions (expandalo) -> MiscOption (expandalo), y asigne toEditable como True. Asigne toGridExtensions como True.

12. Desplaze hacia abajo hasta SelectionOptions (expandalo) -> y asigne toExtendedFocus como True. Asigne toMultiSelect como True. En el Diseñador de Formas cambie el tamaño del VST (componente Virtual) para para poder visualizar todas las columnas, en caso de que sea necesario.

13. Ahora, para agregar 3 botones en la forma. Arrastrelos desde la paleta de componentes - Pagina Estandar (Etiquetados como "OK").

14. Haga clic en Button1, en el Inspector de Objetos cambie Titulo a "AddRoot". Haga clic en el Button2, cambie el titulo a "AddChild". Cambie el titulo de Button3 a "Delete".

15. Mantenga esto aqui y vaya al editor de codigo (oprima la tecla F12). En el Editor de Codigo reemplace la linea:

{$mode objfpc}{$H+} with {$MODE DELPHI}

16. Bajo la sentencia "implementation" pegue las siguientes lineas de codigo:

<delphi>type

 PTreeData = ^TTreeData;
 TTreeData = record
   Column0: String;
   Column1: String;
   Column2: String;
 end;</delphi>

17. Vaya al Diseñador de Formas (oprima la tecla F12). Seleccione el control VST. Vaya al Inspector de Objetos, seleccione la pagina Eventos, desplazece hasta el evento onChange. Haga doble clic en el control combobox.

18. Desplazece hasta el evento onFocusChanged. Haga doble clic y pegue el codigo siguiente: <delphi>procedure TForm1.VSTFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode;

 Column: TColumnIndex);

begin

 VST.Refresh;

end;</delphi>

19. Desplazece hasta el evento onFreeNode. Haga doble clic y pegue el codigo siguiente: <delphi>procedure TForm1.VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); var

 Data: PTreeData;

begin

 Data:=VST.GetNodeData(Node);
 if Assigned(Data) then begin
   Data^.Column0 := ;
   Data^.Column1 := ;
   Data^.Column2 := ;
 end;

end;</delphi>

20. Desplazece hasta el evento onGetNodeDataSize. Haga doble clic y pegue el codigo siguiente: <delphi>procedure TForm1.VSTGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer); begin

 NodeDataSize := SizeOf(TTreeData);

end;</delphi>

21. Desplazece hasta el evento onGetText. Haga doble clic y pegue el codigo siguiente: <delphi>procedure TForm1.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;

Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);

var

 Data: PTreeData;

begin

 Data := VST.GetNodeData(Node);
 case Column of
   0: CellText := Data^.Column0;
   1: CellText := Data^.Column1;
   2: CellText := Data^.Column2;
 end;

end;</delphi>

22. Oprima la tecla F12 para ir al Diseñador de Formas. Haga doble clic en el boton "AddRoot". Haga doble clic y pegue el codigo siguiente: <delphi>procedure TForm1.Button1Click(Sender: TObject); Var

 Data: PTreeData;
 XNode: PVirtualNode;
 Rand: Integer;

Begin

 Randomize;
 Rand := Random(99);
 XNode:=VST.AddChild(nil);
 
 if VST.AbsoluteIndex(XNode) > -1 then
 Begin
  Data := VST.GetNodeData(Xnode);
  Data^.Column0:= 'One ' + IntToStr(Rand);
  Data^.Column1:= 'Two ' + IntToStr(Rand + 10);
  Data^.Column2:= 'Three ' + IntToStr(Rand - 10);
 End; 

End;</delphi>

23. Oprima la tecla F9 para Ejecutar el proyecto y revisarlo. Haga clic en el boton "AddRoot" para agregar un nodo. SI no hay problema alguno, el nodo sera agregado al control VST.

24. Detenga la ejecucion del programa. En el Diseñador de Formas haga doble clic en el boton titulado "AddChild". Haga doble clic y pegue el codigo siguiente: <delphi>procedure TForm1.Button2Click(Sender: TObject); var

 XNode: PVirtualNode;
 Data: PTreeData;

begin

 if not Assigned(VST.FocusedNode) then
   Exit;
   
   XNode := VST.AddChild(VST.FocusedNode);
   Data := VST.GetNodeData(Xnode);
   
   Data^.Column0:= 'Ch 1';
   Data^.Column1:= 'Ch 2';
   Data^.Column2:= 'Ch 3';
  VST.Expanded[VST.FocusedNode]:=True;

end;</delphi>

25. En el Diseñador de Formas haga doble clic en el boton titulado "Delete". Haga doble clic y pegue el codigo siguiente: <delphi>procedure TForm1.Button3Click(Sender: TObject); begin

 VST.DeleteSelectedNodes;

end;</delphi>

26. Ejecute el proyecto, oprimiendo la tecla F9 para revisarlo. Haga varias pruebas, agregando algunos nodos principales, nodos hijos y eliminelos.

27. Try to edit a node. Select a node and press F2, write new value. If you can see what you are typing then it is OK. Else, read bellow "If Cell Editing Can't Be Seen".

(In progress)

[En desarrollo]