Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 10-09-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Phacko
Hola a todos.
Begin
Name:=Edit1.Text;
TFOrm.Create(Application).Name:=(Name);
TFOrm.Create(Application).Caption:=Name;
TForm.Create(Application).Show;
Application.CreateHandle;
End;
Ese es un mal, MAL codigo. Mucho! estas creando 3 ventanas que no
referencian a nada (van a nil), que son separadas y por lo tanto no hacen
lo que quieres y ademas, para que Application.CreateHandle? No lo
necesitas para nada....

Es asi de simple:

Código:
    var
      oForm:TForm;
    begin
      oForm:=TForm.Create(Application);
      oForm.Name:='Hola';
      oForm.Caption:='Hola';
    
    end;
Ahora, ese oForm debe liberarse en algun momento. Si es con una ventana
modal...
Código:
     var
       oForm:TForm;
     begin
       oForm:=TForm.Create(Application);
      try
       oForm.Name:='Hola';
        oForm.Caption:='Hola';
       oForm.ShowModal;
      finally
    	oForm.Release; //se usa release y no free con forms
      end;
     end;
Ahora, el problema que tienes es como administrar las formas? Hay dos
maneras: Usando la referencia Application (observa que application
CONTIENE a oForm) en las colecciones Forms o Components (usando
FindControl('UnNombre') y haciendo cast tambien sirve). Sin embargo, alli
hay otros objetos que no son los que estas haciendo. Realmente, lo que se
hace es crear un administrador en una lista de objetos:

Código:
     var
      oFormas:TObjectList; = Mira en ayudas cual unit se necesita... 
   ObjectList automaticamente libera objetos (llama al free) tonces no
   necesitas preocuparte por objetos perdidos en memoria....
     begin
       oForm:=TForm.Create(Application);
      oFormas.Add(oForm,'Bodega') = Chequee en ayudas, no recuerdo orden
    
       oForm.Name:='Hola';
       oForm.Caption:='Hola';
       oForm.Show;
     
    end;
Con eso, tienes una lista que te permite referenciar como oFormas[i].Caption:='Hola' que era la intencion del codigo normal.
Si haces un helper (una clase de ayuda) puedes poner algo como:

Código:
    function Forma(Nombre:String):TForm;overload;
    function Forma(Indice:Integer);TForm;overload;
Si deseas tener una implementacion mas robusta chequea este excelente
articulo Framework Simple Aplicaciones(ingles):

Es lo que hago tambien y realmente es una forma EXCELENTE de trabajar,
se lo recomiendo a todos. No depende de los controles de DevExpress asi
que no te asustes (y el codigo es funcional: lo puedes usar de base).

Deberias empezar a estudiar sobre Desing Patterns (Patrones de diseño) ya
que aumenta considerablemente la calidad del codigo.....
__________________
El malabarista.

Última edición por mamcx fecha: 11-09-2004 a las 00:23:08.
Responder Con Cita
 


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


La franja horaria es GMT +2. Ahora son las 10:11:15.


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