Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2007
ercrizeporta ercrizeporta is offline
Miembro
 
Registrado: jun 2005
Posts: 131
Poder: 19
ercrizeporta Va por buen camino
dudas con eventos y variables

hola!!tengo el siguiente problema, estoy realizando una aplicacion MDI, cuanod desde la ventana padre llamo a la ventana hijo, justo depues de crear al hijo le modifico los valores de unas variables globales que necesito en el hijo.

childwindow:=TFormSelCantPedCli.create(application);
childwindow.numaux:=numaux; //variable globar hijo
childwindow.caption:=caption+ ' - Seleccionar Cantidad';
childwindow.numped:=queryPedidos['num']; //variable global hijo
childwindow.numlin:=tblinped['numlin']; //variable globar hijo


El problema surge cuando tengo que hacer uso de estas variables en el evento 'onactivate' de la ventana hijo, ya que la primera vez que se activa no tienen valor ya que se activa la ventana y posteriormente le da el valor el padre a las variables. Para que funcione bien tengo que salirme de la ventana y volver a entrar , para que haga el evento onactivate con los nuevos valores. Sabe alguien alguna forma de solucionar esto?????

muchas gracias!!
Responder Con Cita
  #2  
Antiguo 03-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Siguiendo la POO:

Tu ventana hija debería ser así (centrate en GetCaption, SetCaption y Mostrar, cuando funcione, añade más propiedades):
Código Delphi [-]
type Tformahija = class(Tform)

private
   FCaption: string; // el caption de la ventana que siempre es fijo.
   FnumAux : integer;
   procedure SetnumAux(Value:integer);

  function GetCaption:string;
  procedure SetCaption(Value:string);
public

property numAux:integer read FnumAux write SetnumAux;
property Mostrar:string read GetCaption write SetCaption;
end;

implementation

procedure Tformahija.formahijaCreate(...); // evento de crear la ventana
begin 
 FnumAux := 0 ; // por defecto este valor.
 FCaption := 'Ventana de productos';
end;

procedure Tformahija.SetNumAux(value:integer);
begin
  // value es el valor que se quiere asignar a numAux.
  // FnumAux es el valor que tiene actualmente la propiedad numAux.
  if FnumAux <> Value then
  begin
    FnumAux := VAlue;
    // hacer otras cosas cuando se asigne esta propiedad.
  end;
end;

// aquí estaba el error, Value era de tipo integer, cuando en realidad es un string.
procedure Tformahija.SetCaption(value:string);
begin
  Caption := Fcaption + ' - ' + Value;
end;

function TFormahija.GetCaption:string;
var idx:integer;
begin
  // devolver solo la cadena ' - Seleccionar cantidad'
  idx := length(Fcaption);
  Result := Copy(Fcaption, idx+3, 255);
end;

Ahora, cuando hagas esta asignación:
Código Delphi [-]
childwindow.Mostrar := 'Seleccionar Cantidad';
automáticamente se ejecuta el procedimiento Set (SetCaption) que modifica el caption de la ventana inmediatamente.

Cuando hagas una lectura de la propiedad:
Código Delphi [-]
mistring := formahija.Mostrar
Se ejecuta la función Get (GetCaption), que devolverá solo la parte derecha del caption.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 03-05-2007 a las 18:18:41.
Responder Con Cita
  #3  
Antiguo 03-05-2007
ercrizeporta ercrizeporta is offline
Miembro
 
Registrado: jun 2005
Posts: 131
Poder: 19
ercrizeporta Va por buen camino
muchas gracias, ahora probaré a ver que tal va con esa solución. La solución que se me había ocurrido a mi era hacer que justo despues de pasarle los valores a las variables obligo a que ocurra el evento onactivate. pero veo la tuya es mas 'bonita'.

gracias!!
Responder Con Cita
  #4  
Antiguo 03-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Hombre, muchas gracias por el alago, pero reconozco que la solución ni es "mía" ni es "bonita", es la forma en que delphi está hecho, mira por ejemplo el código fuente de un label y verás a lo que me refiero.

PD: acabo de ver que SetCaption está mal declarada (porque pasa un integer en lugar de un string), he editado mi mensaje para corregir el error.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Eventos Walcasar OOP 2 26-10-2006 15:42:40
Override eventos On... lento manu OOP 12 08-10-2005 11:37:31
variables variables (manual php) salvica PHP 0 25-09-2005 16:44:52
Redireccionar Eventos Olympus OOP 1 08-11-2004 15:59:21
Eventos xerkan Firebird e Interbase 5 13-10-2003 17:21:18


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


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