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 13-09-2004
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
Asignar valor a una prppiedad formulario hijo????

Hola a todos,
tengo un problema a la hora de pasar un TStrings entre un formulario padre y otro hijo. En el formulario hijo me he creado una Property y un método para acceder a ella.
Código:
  private
    { Private declarations }
    FScriptFinal:TStrings;
    procedure setScriptFinal(const Value:TStrings);
  public
    { Public declarations }
     property scriptFinal:TStrings write setScriptFinal;
  end;

.....

procedure TForm1.setScriptFinal(const Value:TStrings);
begin
  FScriptFinal.Assign(Value);
end;
Desde el formulario padre, intento de esta forma asignar el TString al hijo, pero me da un error de violacion de memoria.

Código:
...
var
  ListaArticulosNew:TStrings;
begin
  ListaArticulosNew := TStrings.Create;
 ...
 Form1.scriptFinal := ListaArticulosNew;
...

Podrían ayudarme?

Saludos y gracias
Responder Con Cita
  #2  
Antiguo 13-09-2004
aig aig is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 56
Poder: 21
aig Va por buen camino
¿Has creado el Form1?

Código:
Form1.Create;
Responder Con Cita
  #3  
Antiguo 13-09-2004
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
si, lo tengo incluido en el Auto-create Forms.

Saludos
Responder Con Cita
  #4  
Antiguo 13-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
... y en ese form ¿tienes en algun sitio la creación de FScriptFinal?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 13-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
procedure TForm1.setScriptFinal(const Value:TStrings);
begin
//  FScriptFinal  es nil, estas sobrepasando un puntero nulo

if FscriptFinal = nil then 
  FscriptFinal := TstringList.create;

  FScriptFinal.Assign(Value);
end;

Saludos
Responder Con Cita
  #6  
Antiguo 13-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por aig
¿Has creado el Form1?

Código:
Form1.Create;
Espero que no lo esté creando así ya que de esta forma seguramente le causará un Acces Violation tarde que temprano.

// Saludos
Responder Con Cita
  #7  
Antiguo 13-09-2004
aig aig is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 56
Poder: 21
aig Va por buen camino
Solo trataba de indicarle el primer fallo que se me había ocurrido. Supongo que te refieres a que antes de crear un form se debe comprobar que no fue creado anteriormente.

Este hilo no trata sobre como crear y mostrar formularios, por eso quizás fui demasiado escueto.

Si he creado confusión a alguién, pido disculpas. Aunque ya veo que mguixot entendió lo que quería decirle.

saludos.
Responder Con Cita
  #8  
Antiguo 13-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por aig
Solo trataba de indicarle el primer fallo que se me había ocurrido. Supongo que te refieres a que antes de crear un form se debe comprobar que no fue creado anteriormente.

Este hilo no trata sobre como crear y mostrar formularios, por eso quizás fui demasiado escueto.
No me refiero a eso. De ser así ciertamente no lo habría indicado. Si Form1 es una variable de tipo TForm1, la manera correcta de crear el formulario es

Código Delphi [-]
Form1 := TForm1.Create(...);

es decir, debe invocarse Create como método de la clase TForm1 y no como método del objeto Form1 que aun no existe. Dado que el hilo habla de violaciones de memoria, apunté lo anterior ya que crear el formulario como lo escribiste es un causal casi seguro de una excepción de este tipo.

// Saludos
Responder Con Cita
  #9  
Antiguo 14-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código:
...
var
  ListaArticulosNew:TStrings;
begin
  ListaArticulosNew := TStrings.Create;
 ...
 Form1.scriptFinal := ListaArticulosNew;
...
Volviendo al tema original, TStrings es una clase abstracta, ¿no deberia crear un TStringList si va a manejar los elementos?.

Saludos.
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


La franja horaria es GMT +2. Ahora son las 06:29:19.


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