Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   crear objeto tmemo en una unidad (https://www.clubdelphi.com/foros/showthread.php?t=65996)

torito 26-01-2010 20:20:07

crear objeto tmemo en una unidad
 
Hola a todos, tengo una duda, en una función requiero generar un objeto memo, pero este es temporal, ni siquiera lo requiero visible, pero lo requiero para poder interactuar con él, intente con memo1:=Tmemo.create; pero me marca error. Alguien me podría auxiliar??

De antemano, gracias.

delphi.com.ar 26-01-2010 20:24:17

Es muy importante que cuando algo te produce un error, nos digas cuál es el error. Aunque con tu código resulta algo evidente, ya que el constructor del TMemo (o sea el método create), tiene parámetros no opcionales.

Código Delphi [-]
var
  M: TMemo;
begin
  M := TMemo.Create(nil);

Saludos!

torito 26-01-2010 20:33:28

Gracias por tu pronta respuesta, tienes razón en lo de no haber escrito el error que me marca, por cierto, mientras recibia respuesta lo intente con
Código:

memo1:=Tmemo.create(memo1;)
y ya no me marco errores, pero quisiera que en la función me regrese mi memo1, así que le puse
Código:

carga_xml_to_memo():tmemo;
y me arroja el siguiente error:
Procedure cannot have a result type

¿no es posible pasar este tipo de objetos?

Saludos

torito 26-01-2010 20:39:45

jajajaja, mis disculpas, hace tiempo que no retomaba delphi y estoy un poco frio y mi error fue de novato, tenia procedure en lugar de function, una gran disculpa y muchas gracias nuevamente. :p

delphi.com.ar 26-01-2010 20:42:32

Te dice que los procedimientos no pueden tener resultado, a diferencia de las funciones que ese es su cometido.
Código Delphi [-]
function X: TMemo;
Ten en cuenta que si la función retorna un objeto, obviamente esta internamente no lo destruirá, por lo que debes encargarte de destruírlo cuando ya no lo necesites. Por otro lado. Por otro lado no te recomiendo utilizar la variable que referencia al objeto para pasársela como Owner al método create.

Saludos!

torito 26-01-2010 21:06:38

ok, nuevamente muchas gracias Federico, ya lo puse como nil, y tomaré en cuenta lo de destruir los objetos ya que eso no lo he llevado acabo. Gracias.

Neftali [Germán.Estévez] 27-01-2010 09:32:30

A parte de la solución ya expuesta, si lo vas a crear en una unidad y ni siquiera va a estar visible, ¿No te bastaría con crear un TStrings o TStringList (que sería el correspondiente a la propiedad Lines del TMemo)?

Dependerá, eso sí, de qué propiedades y métodos necesites usar del TMemo.

torito 27-01-2010 16:09:02

Lo que pasa es que encontré un ejemplo para leer un archivo de texto con un memo

Código:

memo1.Lines.LoadFromFile(c:/datos.txt);
entonces por eso genero el objeto memo, pero analizando también puede ser el objeto lines, en fin, la falta de practica. Muchas gracias

rgstuamigo 27-01-2010 16:18:11

Cita:

Empezado por Neftali (Mensaje 351954)
A parte de la solución ya expuesta, si lo vas a crear en una unidad y ni siquiera va a estar visible, ¿No te bastaría con crear un TStrings o TStringList (que sería el correspondiente a la propiedad Lines del TMemo)?

Dependerá, eso sí, de qué propiedades y métodos necesites usar del TMemo.

Ni mas ni menos eso precisamente le iba a decir al amigo Torito...:rolleyes:.
Si voy a usar un Memo y éste no va ser visible entonces por que usarlo..preferiblemente seria usar un TStringList como comenta Neftalí.;)
Saludos...:)

torito 27-01-2010 18:24:00

Fijense que me arroja un error en la linea donde uso el loadFormFile para tomar el archivo txt, y la ruta es correcta, este es mi código

Código Delphi [-]
if form1.OpenDialog2.FileName= '' then exit;//sí no tiene archivo  elegido
memo1:=Tmemo.Create(nil);
memo1.Parent:=nil; //esta linea se la agregue para ver sí esto era el error
memo1.Lines.LoadFromFile(form1.OpenDialog2.FileName);


y el error que me arroja es:
Project pruebas.exe raised exception class EInvalidOperation with messages 'control" has no parent window

Saludos

torito 27-01-2010 19:14:13

Lo resolví cambiando a Tstringlist, pero sí me gustaría saber cuál es el error, ojala alguien pudiera explicármelo.

Gracias

Neftali [Germán.Estévez] 27-01-2010 20:01:20

Cita:

Empezado por torito (Mensaje 352024)
Lo resolví cambiando a Tstringlist, pero sí me gustaría saber cuál es el error, ojala alguien pudiera explicármelo.

Pues creo que es justamente lo que hablábamos. TMemo, como control visual, debe estar ubicado en un formulario o similar (aunque no se vea y esté oculto); Que debe tener un Parent ¡Vamos!

De ahí que al intentar crearlo sin Parent se te esté quejando.

torito 27-01-2010 20:20:13

ohhh, ok, me queda claro, sólo usar el memo cuando se requiera visible, te agradezco tu pronta respuesta Neftali. y a todos los demás también, sin su ayuda me hubiera detenido un buen rato.

Saludos y gracias nuevamente.


La franja horaria es GMT +2. Ahora son las 07:06:36.

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