Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   TMemo no seleccionable (https://www.clubdelphi.com/foros/showthread.php?t=42053)

lccoyote 02-04-2007 19:18:24

TMemo no seleccionable
 
Hola necesito utilizar un TMemo como si fuera un TLabel ya que tengo que meterle un texto demasiado largo para un TLabel, el problema es que el TMemo permite seleccionar el texto (aunque se pongo readonly=true) y preferiría que no lo hiciera, ¿Sabe alguien alguna forma de evitar esto ?

Bicho 02-04-2007 20:45:52

Hola,

puedes insertar un panel y dentro de ese panel metes el memo. Al panel le pones la propiedad enabled := False y el memo será intocable.
Además si al memo le pones align := AlClient, no se notará para nada el panel de detras.

Espero te sirva.

Saludos

dec 02-04-2007 22:54:29

Hola,

Fantástico truco Bicho. Gracias. Pero por otro lado tal vez un "Tlabel" bastaría, con su propiedad "AutoSize" a "False" y acaso su propiedad "WordWrap" en "True". Pero de todos modos estupendo truco Bicho. :)

Bicho 02-04-2007 23:43:50

Hola,

gracias amigo David, yo lo he usado otras veces y tiene su utilidad.
Quizá para el caso de lccoyote, no sirva el poner un label, me explico:
- Puede ser que nos interese tener una gran cantidad de información (que de otro modo tambien puede mostrarse en el mismo label), pero que dependiendo de ciertas circumstancias, como puedan ser, una parámetro de la aplicación o el usuario que la ejecute, sólo tenga acceso a ese memo en modo de lectura, mientras otro estado o usuario tenga acceso de escritura en el mismo. No se si me explico.

Yo lo he cogido por allí, ya que yo me he encontrado en la situación, que para algo más sencillo bastaría un label.

De todos modos, es bueno saber que sigo siendo de ayuda. En esta semana estoy recluido con un curso en horario laboral, y al terminarlo y volver a casa, a estudiar para la universidad. Y la verdad, no he tenido apenas tiempo de pasar por aquí.
Por otra parte, me extraña que a nadie se le hubiera ocurrido antes, creo que lo he visto escrito alguna vez, algo parecido a Lepe sino recuerdo mal.

En fin, me vuelo a estudiar :(

Saludos

P.d: lccoyote bienvenido al clubdelphi ;)

lccoyote 03-04-2007 17:28:00

Hola a todosotra vez y gracias por las respuestas, he probado a meterlo dentro del panel disabled como dijo bicho y funciona perfectamente, muchas gracias por la ayuda. El problema por el que tengo que usar el TMemo es porque tengo un texto muy grande que no me entra en un Label y me interesa tenerlo sin partir.
Muchas Gracias

vtdeleon 03-04-2007 18:25:38

Y en caso de que tenga la barra de Scroll?


Saludos

roman 03-04-2007 23:00:32

¿Qué significa eso de que el texto no entra en un tlabel? Hasta donde yo sé el único límite sería el dado por la memoria disponible. Siendo que un Memo consume más recursos que un label, no veo necesidad de usar el memo.

// Saludos

Caral 03-04-2007 23:25:30

Hola
Como dice el maestro Roman, se puede poner en un tlabel la cantidad de texto que se quiera, un ejemplito:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
   Label1.Caption := 'En esta linea coloco lo que quiera'+ chr(13) +
                     'y sigo poniendo cosas'+ chr(13) +
                     'asi sucesivamente hasta el infinito';
end;
Saludos

egostar 03-04-2007 23:28:41

Incluso sin los Char(13).

Solo con poner la propiedad WordWrap a True.

Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
begin
   Label1.Caption := 'En esta linea coloco lo que quiera'+
                     'y sigo poniendo cosas '+
                     'asi sucesivamente hasta el infinito';
end;

Edito: Solo con la limitante de 255 caracteres, que se evita concatenando las cadenas.
Edito parte 2: También es necesario poner la propiedad AutoSize a False y abrirlo al tamaño adecuado o deseado.

Salud OS.

Caral 03-04-2007 23:30:50

Ves otra cosa que se aprende, gracias egostar
Saludos

roman 03-04-2007 23:59:17

No sé, no sé, no quiero quitar méritos a nadie pero:

Cita:

Empezado por dec en el tercer mensaje del hilo
con su propiedad "AutoSize" a "False" y acaso su propiedad "WordWrap" en "True"

;)

// Saludos

egostar 04-04-2007 00:04:40

Cita:

Empezado por roman
No sé, no sé, no quiero quitar méritos a nadie pero:

Originalmente Escrito por dec en el tercer mensaje del hilo
con su propiedad "AutoSize" a "False" y acaso su propiedad "WordWrap" en "True"

;)

// Saludos

Correcto, honor a quien honor merece.

Salud OS.

lccoyote 10-04-2007 17:37:52

Pues está bien saber que se puede poner texto del tamaño que se quiera concatenadolo, el problema es que no se si eso me serviría porque yo el texto lo recivo entero, no puedo partirlo (en principio), me llega entero y no siempre medirá lo mismo (por temas de localizacion) dependerá del idioma.....Aunque supongo que podría tratarlo e ir partiendolo en "sub-textos", pero no sé si merecerá la pena asumir ese coste, pudiendo usar otro componente?????

roman 10-04-2007 17:46:00

Pero, ¿quién dice que tienes que partirlo en trozos? La limitante que menciona egostar, aplica sólo para las literales de texto que no tienen nada que ver con el memo. ¿En qué forma recibes el texto?

// Saludos

lccoyote 10-04-2007 17:53:45

No, en el memo no tengo limitaciones pero en el TLabel si, si pongo el texto todo seguido, no entra... :confused::confused:

roman 10-04-2007 18:05:55

Perdón, me refería a un label, no tiene limitaciones. Por ejemplo, puedo poner:

Código Delphi [-]
var
  sl: TStringList;

begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('archivo.txt');
    Label1.Caption := sl.Text;
  finally
    sl.Free;
  end;
end;

Y archivo.txt puede ser tan grande como quiera. El único problema está al asignar valore literales, como ene le ejemplo de egostar; pero si el texto lo tomas de un archivo, un stream, una variable, etc., no dbe haber ningún problema

// Saludos

roman 10-04-2007 18:16:07

Acabo de hacer la prueba con un texto de 22911 líneas, y sí cabe en un label, claro, con su respectivo scrollbox.

:D

// Saludos

lccoyote 10-04-2007 19:25:38

Claro, yo estaba metiendo el texto directamente en el caption de la label (en el .dfm. Y aqui no deja meter todo el texto que quiera....No probe a meterlo desde código, supuse que funcionaría igual.

egostar 10-04-2007 19:35:16

Cita:

Empezado por roman
Acabo de hacer la prueba con un texto de 22911 líneas, y sí cabe en un label, claro, con su respectivo scrollbox.

:D

// Saludos

Pues haciendo uso de lo que nuestro buen amigo Caral comento en este mismo hilo.

Cita:

Empezado por Caral
Ves otra cosa que se aprende,

Pues eso, gracias roman,

Salud OS.


La franja horaria es GMT +2. Ahora son las 09:48:58.

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