Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-08-2008
cslbcn cslbcn is offline
Miembro
 
Registrado: jul 2008
Posts: 60
Poder: 18
cslbcn Va por buen camino
Modificar el tamaño y posicion de un TreeView

Hola. Os explico lo que quiero hacer.

Primero, mediante una estructura repetitiva se crean tantas casillas como dias del mes hay (las variables estan bien definidas):

Código Delphi [-]
for i:=1 to DiasDelMes do
begin
   Form1.findcomponent('TreeView'+ inttostr(i)).destroy;

   with TTreeView.Create(Form1) do
   begin
      Parent := Form1;
      Top    := Coordenadas[cajactual].CoordTop;
      Left   := Coordenadas[cajactual].coordLeft;
      Height := 89;
      Color  := Color1;
      Width  := Ancho;
      Name   := 'TreeView' + IntToStr(i);
      OnClick      := TreeViewAmpliar;
    end;
end;

Cuando hacemos click en un Treeview ejecuta este código:
Código Delphi [-]
procedure TForm1.TreeViewAmpliar(Sender: TObject);
begin
   DiaCal2 := StrToInt(Copy(TTreeView(Sender).Name,9,2));
   Form1.findcomponent('TreeView'+ Inttostr(DiaCal2)).destroy;
   
   with TTreeView.Create(Form1) do
   begin
      Parent := Form1;
      Top    := 100;
      Left   := 100;
      Height := 500;
      Width  := 500;
      Name   := 'TreeView' + IntToStr(DiaCal2);
  end;
end;

De este modo, cuando clickamos en el Treeview1, correspondiente al día 1 del mes, borra el TreeView1 y crea uno más grande y en una posición exacta y lo llama de la misma manera.

Hasta aquí todo bien. Cuando lo ejecuto, depende de en que día pulso me falla, o si pulso mas de 4 Treeview acaba fallando.

Alguien sabe porque pasa esto?
Sabéis si hay alguna manera de decirle que cuando hacemos OnClick, en lugar de borrar TreeView y volverlo a crear, sólo modifique el ancho, alto, top y left?

Gracias!
Responder Con Cita
  #2  
Antiguo 27-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
lo has probado? digo lo de cambiar el width y el height sin crearlo de nuevo.
Responder Con Cita
  #3  
Antiguo 27-08-2008
cslbcn cslbcn is offline
Miembro
 
Registrado: jul 2008
Posts: 60
Poder: 18
cslbcn Va por buen camino
si, y no lo hace. coge los valores iniciales
Responder Con Cita
  #4  
Antiguo 27-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
el problema es del ambito de la variable. Deberias crear los ttreeview de manera global en el form.

Código Delphi [-]
  public
    { Public declarations }
    Treeviews : array of TTreeview;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); // crear ttreeviews
var
        i : integer;
const
        DiasDelMes : integer = 30;
begin
        SetLength(Treeviews,diasdelmes);
        for i:=0 to DiasDelMes - 1 do
        begin
                Treeviews[i] := TTreeview.Create(self);
                with treeviews[i] do
                begin
                Parent := Form1;
                Top    := (i div 5) * 60 + 5;
                Left   := (i mod 5) * 60 + 5;
                Height := 60;
                Width  := 60;
                Name   := 'TreeView_' + IntToStr(i);
                OnClick      := TreeViewAmpliar;
                end;
        end;
end;

procedure TForm1.TreeViewAmpliar(Sender: TObject);
begin
        (sender as TTreeview).Height := 100;
        (sender as TTreeview).Width := 100;
        (sender as TTreeview).Bringtofront;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
        i : integer;
const
        diasdelmes : integer = 30;
begin
        for i := 0 to diasdelmes - 1 do
                treeviews[i].free;

        setlength(treeviews,0);
end;

Última edición por coso fecha: 27-08-2008 a las 11:38:17.
Responder Con Cita
  #5  
Antiguo 27-08-2008
cslbcn cslbcn is offline
Miembro
 
Registrado: jul 2008
Posts: 60
Poder: 18
cslbcn Va por buen camino
One moment.
Dije que no cambia el tamaño, no es exactamente esto, cambiando solo el anho y alto o el top y el left, me cambia las propiedades del Form1, no del treeview...
Responder Con Cita
  #6  
Antiguo 27-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
igualmente, tu codigo no estaba mal, solo que en vez de destruir y volver a crear, podias asignarlo a una variable y alla tratarlo

Código Delphi [-]
procedure TForm1.TreeViewAmpliar(Sender: TObject);
var 
    t : TTreeview;
begin
   t := (Form1.findcomponent((sender as TTreeview).Name) as TTreeview);
   
   with t do
   begin
      Top    := 100;
      Left   := 100;
      Height := 500;
      Width  := 500;
   end;
end;

aunque, con el sender, es innecesario

Última edición por coso fecha: 27-08-2008 a las 11:57:39.
Responder Con Cita
  #7  
Antiguo 27-08-2008
cslbcn cslbcn is offline
Miembro
 
Registrado: jul 2008
Posts: 60
Poder: 18
cslbcn Va por buen camino
mmm. no lo entiendo. Tal y como tengo escrito mi código no hay alguna forma mas sencilla de modificar los atributos. Como digo, si solo pongo:

Código Delphi [-]
procedure TForm1.TreeViewAmpliar(Sender: TObject);
begin
    Top    := 100;
    Left   := 100;
    Height := 500;
    Width  := 500;
end;

Me cambia los atributos del Form1. Si solo quiero que me los cambio de Treeview seleccionado?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tamaño y posición de Form modal Wiarbumu Varios 3 23-07-2008 22:15:54
Hacer que un Form no pueda modificar su tamaño vejerf OOP 8 30-05-2008 12:55:53
Modificar tamaño y fuente de Messagedlg Moparova Varios 1 29-03-2007 13:29:34
Ajustar la posición al tamaño del texto Carmelo Cash Impresión 2 12-07-2006 22:40:24
Modificar tamaño de fuentes dmagui Varios 0 24-11-2005 17:41:11


La franja horaria es GMT +2. Ahora son las 16:05:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi