Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-05-2006
XaRz XaRz is offline
Miembro
 
Registrado: ene 2006
Posts: 13
Poder: 0
XaRz Va por buen camino
Exclamation Accder a propiedad Text de un label de otro form!

Hola,

Hay una cosa que no hago bien y querria compartilo con vosotros a ver que hago mal. Quiero acceder a la propiedad text de un label de otro form, para ello he creado un procedure publico para llamarlo des de fuera...pero vayamos por pasos:

Quiero mostrar un splashScreen que vaya canviando el texto segun los segundos que yo decido para abrir la aplicación mdi principal. Para ello tengo en el form del splash el siguiente còdigo:

Código:
procedure TwinFormSplash.ExecLoop();
var
x,y:int32;
begin
      for x:=0 to 1000000 do
         begin
           if x=500000 then
             label2.Text:='Obrint Fitxers...';
           if x=800000 then
             label2.Text:='Carregant Interfície...';
           Progressbar1.PerformStep;
           y:=x;
         end;
      Self.Close;
end;
Lo que hago desde el proyecto es:
Código:
var
splash: WinformSplash.TWinFormSplash;
[STAThread]
begin
  splash:=WinformSplash.TWinFormSplash.Create; //form del splash
  Splash.Show;
  Splash.Update;
  Splash.ExecLoop; //procedure que va canviando valores del label;
  Splash.hide;
  Splash.free;
  Application.Run(Main_Window.TWinForm_Principal.Create);//ventana principal del programa
Pues con ese código la propiedad "text" de label2 nunca es modificada...como lo hago, alguna sugerencia?

Utilizo bds2006 y programo con .NET i BDP.NET

Hala saludos,
Responder Con Cita
  #2  
Antiguo 16-05-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Hola XaRz!

El tiempo que tarde en mostrarse el splash va a depender de la velocidad del procesador, ya que tardará "1000000" vueltas. Esto en un PC lento tardará mucho, y en un PC rápido, pues será rápido.

Yo te recomiendo algo como esto:
Código Delphi [-]
procedure CargarPrograma;
var
  Splash: WinformSplash.TWinFormSplash;
begin
  Splash := WinformSplash.TWinFormSplash.Create; // form del splash
  try
    Splash.Show;
    Splash.Update;
    Splash.SetTextoCargandoForms; // procedure que va canviando valores del label;
    CargarForms; // procedure que carga los forms
    Splash.SetTextoCargandoInterfaces; // procedure que va canviando valores del label;
    CargarInterfaces;
    { ... } // Aquí iría todo lo que quieras cargar, primero actualizas el splash, y después lo ejecutas
    Splash.Hide;
  finally
    Splash.Free;
  end;

  Application.Run(Main_Window.TWinForm_Principal.Create); // ventana principal del programa
end;
Responder Con Cita
  #3  
Antiguo 16-05-2006
XaRz XaRz is offline
Miembro
 
Registrado: ene 2006
Posts: 13
Poder: 0
XaRz Va por buen camino
Ok, pero no veo como retrasas con pausas el splash. de acuerdo que es muy chapucero como lo he hecho yo pero almenos puedo mostrar el splash según vaya aumentado el valor del for. Como lo haces para que el splash se mantenga lo suficiente para que se pueda ver?

Además veo que tienes los procedures de cargar forms y cargar interfaces...yo nunca cargo nada en el main (programa principal) simplemente el main carga el contendor MDI y por menus voy cargando cada form cada vez. Hay alguna forma de pre cargar los procesos? cómo?

(lo siento soy muy novatillo en esto...)
Responder Con Cita
  #4  
Antiguo 16-05-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Lo de las pausas y retrasos... como usuario y también programador no te lo recomiendo. ¿Por qué esperar más de lo necesario a que un programa se cargue? Porque no es que quieras mostrar una información, sino que se está cargando el programa.

Imagina que Borland hubiese decido que el tiempo de carga es de 1 minuto para Delphi 7, en los tiempos en que sacaran la versión. Y ahora con equipos muchos más potentes, mejor sistema operativo, etc. el tiempo de carga fuese el mismo. ¿No te daría rabia estar esperando?

Yo he sugerido "CargarForms" y "CargarInterfaces" porque pensaba que era lo que hacías. Pero es mucho mejor ir creando, como bien haces, en los menús.
Responder Con Cita
  #5  
Antiguo 16-05-2006
XaRz XaRz is offline
Miembro
 
Registrado: ene 2006
Posts: 13
Poder: 0
XaRz Va por buen camino
Al fin he logrado algo parecido a lo que tenia en mente.
Dejo que el còdigo "hable":

Código:
 try
    splash:=WinformSplash.TWinFormSplash.Create ;
    Splash.Show;
    Sleep(100);
    Splash.ExecLoop(0);
    Splash.Update;
    sleep(1000);
    Splash.ExecLoop(1);
    Splash.Update;
    sleep(1000);
    Splash.close;
    Splash.Hide;

  finally
    Splash.Free;
  end;
  Application.Run(Main_Window.TWinForm_Principal.Create);
Eso es lo que llama al formulario del Splash, después implemento el splash cómo sigue:

Código:
procedure TwinFormSplash.ExecLoop(integ:integer);
begin
  Sleep(100);
  Progressbar1.PerformStep;
  if integ=0 then
     begin
        Progressbar1.PerformStep;
        label2.Text:='Llegint dades...' ;
     end;
  Progressbar1.PerformStep;
  if integ=1 then
     begin
        Progressbar1.PerformStep;
        label2.Text:='Inicialitzant Raport Expert';
     end;
  Progressbar1.PerformStep;
end;
Con esto sólo quiero dejar espacio a los procedures que se encargarán de comprovar que la base de datos de la red està disponible y que la configuración se ha leído. Aún dichos procedures no están implementados por lo que los sleep y los strings hacen de "fake" a lo grande. Lo suyo será más tarde cuando el programa verifique las dos condiciones expuestas antes...

Pero grácias de todos modos
Responder Con Cita
Respuesta



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
Guardar lo que tengo en un Edit1.text y edit2.text en una base de datos firebird jorgeluisc Conexión con bases de datos 1 23-04-2006 18:29:28
Imposible hacer visible un form desde otro form SMTZ .NET 13 16-01-2006 21:41:08
obtener valor de otro form maruenda Varios 10 02-12-2004 21:06:01
ver una variable de otro form mainau Varios 3 07-03-2004 12:55:14
Componentes Visuales, como propiedad de otro Componente ingacg OOP 5 01-07-2003 23:10:39


La franja horaria es GMT +2. Ahora son las 22:42:22.


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