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 17-06-2005
jorodgar jorodgar is offline
Miembro
 
Registrado: abr 2005
Posts: 76
Poder: 20
jorodgar Va por buen camino
donde está el error? :S

Tengo el siguiente codigo y el mensaje de error es el siguiente : Incompatible tipos string y TMemo

procedure TForm1.Button3Click(Sender: TObject);
begin
memo2.text:=obtenermemo;
end;

function Tform1.obtenermemo:Tmemo;
var
memo1:Tmemo;
begin
memo1:=Tmemo.Create(self);
memo1.Lines.Add('hola');
obtenermemo:=memo1;
end;

La verdad que ya he probado varias combinaciones y na de na. alguien sabe que sucede? Gracias.
Responder Con Cita
  #2  
Antiguo 17-06-2005
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
Quita el .Text de la tercera línea.Tu función ObtenerMemo devuelve un Memo no un String.

// Saludos
Responder Con Cita
  #3  
Antiguo 17-06-2005
jorodgar jorodgar is offline
Miembro
 
Registrado: abr 2005
Posts: 76
Poder: 20
jorodgar Va por buen camino
Esa opción ya la habia probado y nada
el error que me sale ahora es : project2.exe raises exception class EinvalidOperation with message control has no parent windows. Proccess stopped.

El codigo es :
procedure TForm1.Button3Click(Sender: TObject);
begin
memo2:=obtenermemo;
end;

function Tform1.obtenermemo:Tmemo;
var
memo1:Tmemo;
begin
memo1:=Tmemo.Create(self);
memo1.Lines.Add('hola');
obtenermemo:=memo1;
end;
Responder Con Cita
  #4  
Antiguo 17-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola.

Ya es hora de usar la etiqueta [ delphi ], no te parece.

la solución podria ser:
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
begin
  memo2:=obtenermemo;
end;

function Tform1.obtenermemo:Tmemo;
var
  memo1:Tmemo;
begin
  memo1:=Tmemo.Create(self);
  memo1.Lines.Add('hola');
  memo1.Parent := self; //o panel1 si queres que aparezca dentro del panel
  obtenermemo:=memo1;
end;

ojo!! que estas haciendo una asignación "a lo pelado" de un puntero. Si memo2 apuntaba a un memo creado con anterioridad, estas perdiendo la forma fácil de acceder a él, y dejandolo en memoria hasta que se libere la forma (gracias al ownership, que si no la memoria se quedaba tirada para siempre).

Espero que sepas realmente lo que queres conseguir con esto.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 17-06-2005
jorodgar jorodgar is offline
Miembro
 
Registrado: abr 2005
Posts: 76
Poder: 20
jorodgar Va por buen camino
Nada, no hay manera de hacer una funcion que devuelva un TMemo1.

Ni lo mas simple funciona : Memo2 es un memo en el formulario con datos.
Lo que sucede es que memo1 no se llena con los datos del memo2.

procedure TForm1.Button3Click(Sender: TObject);
begin
memo1:=obtenermemo;
end;

function Tform1.obtenermemo:Tmemo;
begin
obtenermemo:=memo2;
end;
Responder Con Cita
  #6  
Antiguo 17-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Haber dicho desde un principio lo que querias
Código Delphi [-]
function tform1.obtenermemo:tmemo;
begin
  Result := Form1.memo2;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  Memo1.Lines.Assign(obtenermemo.lines);

end;

En tu mensaje anterior, en button3Click escribe:
Código Delphi [-]
Memo1 := obtenermemo;
memo1.lines.Add('¿En que memo sale este mensaje en el 1 o el 2?');

Y verás lo que estas haciendo . Ahora mira la ayuda de Assign para comprobar que es lo que hace.

Un saludo
__________________
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: 17-06-2005 a las 12:53:25.
Responder Con Cita
  #7  
Antiguo 17-06-2005
jorodgar jorodgar is offline
Miembro
 
Registrado: abr 2005
Posts: 76
Poder: 20
jorodgar Va por buen camino
asias por la ayuda
Responder Con Cita
  #8  
Antiguo 17-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por jorodgar
Lo que sucede es que memo1 no se llena con los datos del memo2.
Si ya lo habia dicho yo...
Cita:
Empezado por jachguate
Espero que sepas realmente lo que queres conseguir con esto.
Es como si sos médico y al consultorio viene alguien a preguntarte la dosis correcta de diazepan. Pues le decis cual es la dosis y punto. En cambio si viene y te dice que quiere estar despiérto toda la noche, pues es distinto, no.

Si lo que queres es que el memo1 tenga las líneas que produce la función, pues hay varias formas "sanas" de hacerlo.

Una:

Código Delphi [-]
Function TForm1.CrearLineas : TStringList;

Begin
  result := TStringList.Create;
  result.Add('Esto es una prueba, línea 1');
  result.Add('Esto es una prueba, línea 2');
  result.Add('Esto es una prueba, línea 3');
  result.Add('Esto es una prueba, línea 4');
  result.Add('Esto es una prueba, línea 5');
end;

Procedure TForm1.Button1Click(Sender : TObject);

Var
  Líneas : TStringList;

Begin
  Lineas := CrearLineas;
  try
    Memo1.Lines.Assign(Lineas);
  finally
    Lineas.Free; //siempre liberar la memoria!
  end;
end;

Habrán otras formas de hacerlo... esta al menos debiera funcionar correctamente.

Hasta luego

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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 12:40:13.


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