PDA

Ver la Versión Completa : TTreeView y Form principal


silviodp
17-05-2003, 05:23:14
Estoy haciendo una aplicación donde pongo un componente TTreeView en un Form que actúa como principal (Autocreate, FormStyle=fsMDIForm).
Lo que quiero hacer es que cuando hago click en una rama que no tiene subramas me habra un form y me deje hacer determinada operación.
Ej: Click en Clientes me habra un form con los datos de un determinado cliente.

El problema es que no sé como se hace para trabajar con una subrama cosa que en su evento OnClick escribir el código para que me habra el form que quiero. Ya que me deja hacerlo pero en el evento OnClick del TTreeView.

Otro problema es que me abre el nuevo form debajo del componente TTreeView y no puedo ver parte del Formulario.
Como se puede hacer para que me aparezca por encima del TTreeView?

Espero me hayan entendido.
Saludos.

SDP.-

andres1569
17-05-2003, 11:26:33
Hola:

Cuando haces click sobre el TTreeView, puedes consultar su propiedad Selected que devuelve el TreeNode seleccionado en ese momento (si pones a TRUE ala propiedad RightClickSelect esto valdrá también para cuando hagas click con el botón derecho). Si el TreeNode devuelto por Selected tiene a FALSE la propiedad HasChildren, es que no tiene subramas. Esto viene en la ayuda de Delphi (pulsar F1 sobre el componente en cuestión).

Lo de que al abrir un formulario te aparezca detrás del TreeView, quizás sea porque el formulario donde está el TreeView tenga la propiedad FormStyle = StayOnTop.

Ya nos dirás

silviodp
18-05-2003, 01:03:23
El form donde tengo el componente TTreeView está puesto como principal es decir:

Es Autocreate y FormStyle=fsMDIForm.-
Es la ventana principal de mi programa, quiero que el TTreeView actúe como un menú principal.-
Cosa que cuando haga click en una rama que no tiene hijos me abra una nueva ventana que haga determinada cosa.-

Con respecto a los TreeNodes, como hago para ver sus eventos que es lo que quiero, para escribir el código que me habra el Form nuevo.-
GRacias.-

SDP.-

Ruben_Cu
18-05-2003, 03:55:33
Posteado originalmente por silviodp
El form donde tengo el componente TTreeView está puesto como principal es decir:
Es Autocreate y FormStyle=fsMDIForm.-

Si la aplicación no es MDI ¿por que el FormStyle no es Normal?

Posteado originalmente por silviodp

Con respecto a los TreeNodes, como hago para ver sus eventos que es lo que quiero, para escribir el código que me habra el Form nuevo.-


El objeto TTreeNodes no tiene eventos tienes que utilzar los asociados a su contenedor el TTreeView.

Como pista para lo que quieres te paso estos códigos para que te sirvan de punto de partida:

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if not TreeView1.Selected.HasChildren then
with TForm2.Create(nil) do
try
caption:= 'Cliente '+TreeView1.Selected.Text;
ShowModal;
finally
Free;
end;
end;

Supón que tenemos un treeview con varias ramas una de ellas es Clientes que tiene como hijos a: Pepe, Paco y Chicho, al hacer clic en cualquiera de ellos se crea el form2 que tiene en el caption el texto 'Cliente' mas el nombre del Nodo.
Los códigos que requieres puedes pasarlos en el evento OnCreate del form2.
Solo te crea el form2 si el nodo seleccionado no tiene hijos.
Espero te sea útil este ejemplito.
Saludos y suerte