Ir al contenido



Foto

Jujiboutils EditLabel.Caption no puede borrarse?

Jujiboutils label edit

  • Por favor identifícate para responder
7 respuestas en este tema

#1 Gaston

Gaston

    Advanced Member

  • Miembros
  • PipPipPip
  • 69 mensajes

Escrito 03 octubre 2016 - 09:44

Buenas, estoy utilizando este lpk y de momento me resulta muy útil excepto que le borro el texto a EditLabel.Caption porque no quiero que se muestren, compilo y todo OK, el ejecutable no las muestra, en el form de diseño tampoco, pero... cierro Lazarus, lo vuelvo a abrir y resucitan la etiquetas, la verdad no quisiera dejar de usar este paquete por las etiquetas pero tampoco quiero utilizar las etiquetas arrastran los edit.

Alguna sugerencia?

Gracias.


  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.890 mensajes
  • LocationArgentina

Escrito 03 octubre 2016 - 10:10

Desconozco esa suite de componentes. Afortunadamente está incluida en CodeTyphon 5.6 por lo que podría probarla.

Lo que estoy viendo es que no existe el EditLabel que dices. En su lugar hay varios tipos de Edits especializados para cada tipo de dato (fecha/hora, enteros, flotantes, etc) y hay 2 labels.

 

Sería muy importante que nos digas cual es el componente en concreto que usas, número de versión de la suite como de Lazarus o CodeTyphon en su defecto que usas.

 

Te agradecería que nos comentes si tienes algún código que pudiera afectar o ser causa de sospecha. ¿Tienes de casualidad implementado algún evento en el componente? ¿O Hay algún evento del form en el que cambies algo de los componentes como cambiar el texto de los edits en el OnCreate del form por ejemplo?

 

La verdad es que suena extraño lo que dices, no es que dude de ti... siempre hay motivos de dudas sobre todo software y a cualquiera se le pasa un bug... si... hasta a los talentosos programadores de las suites de componentes. ¿hay algún efecto visual, algún parpadeo, o algo que evidencie un fallo? Si es así, alguna captura de pantalla para entender lo que sucede nos puede dar alguna pista de como llegar a una solución o alternativa. ¿O es que con solo abrir el proyecto todo se cambia?

 

Cualquier dato que nos puedas aportar sirve...

 

Admito que no dispongo de demasiado tiempo libre esta semana pero si puedo hacerme algún hueco puedo estudiar el caso.

 

Saludos,


  • 0

#3 Gaston

Gaston

    Advanced Member

  • Miembros
  • PipPipPip
  • 69 mensajes

Escrito 04 octubre 2016 - 01:42

Hola, gracias por responder. Lazarus 1.6 y FPC 3.0 sobre GNU/Linux x64. El paquete es el que menciono en el título en su última versión del 2013 creo.

 

 

e25f2565baaf24afb215b35d36fc1d15o.png

 

Bueno ahí se aprecia la existencia del EditLabel y viéndolo mejor dudo que su valor pueda ser '' pero al menos poder hacerlo no visible. Y respecto a tu pregunta, no, no hay nada que modifique las propiedades en el código. Probablemente esto sea así, es decir, el componente son label+edit y no puede cambiarse. En la web no hay ninguna información por eso me aventuré en el foro, a ver si en una de esas no soy el único que utiliza este paquete.

No hay parpadeo ni nada extraño, simplemente al reabrir el proyecto en modo diseño de formulario, la etiquetas se regeneran solas, las borro, compilo y no se muestran. Cierro todo. Ejecuto directamente el archivo ejecutable y funciona bien. Abro Lazarus, carga el proyecto y ahí reaparecen.

 

Saludos.


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.135 mensajes
  • LocationRepública Dominicana

Escrito 04 octubre 2016 - 08:08

Y por qué no lo haces mientras tanto al momento de crear el formulario?, o sea,:


delphi
  1. procedure TForm1.Create(Sender: TObject);
  2. begin
  3. Edit1.EditLabel.Caption := '';
  4. end;

Así siempre te cercioras de que esté en blanco.

 

Saludos.


  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.890 mensajes
  • LocationArgentina

Escrito 04 octubre 2016 - 09:14

Gaston, no es un TEditLabel común, es un componente de la suite Jujibo. Puedo ver desde la imagen que la clase es TJLabeledCurrencyEdit.

Ese es el nombre de la clase en cuestión, te agradecería que seas preciso al nombrar los objetos porque puede dar a confusión.

 

Pude hacer una prueba rápida, y efectivamente observé que si uno le pone a ese componente el caption como vacio en tiempo de diseño, y luego guarda todo y cierra. Al momento de volver a abrir el proyecto se restablece el caption por el nombre que le hayamos puesto al componente.

 

Por lo que estuve apreciando en LCL los componentes labeled que ofrece Jujibo heredan de TCustomLabeledEdit. Debo decir que posiblemente el culpable sea esta clase padre.

El mismo fenómeno sucede con el TLabeledEdit estándar que viene con Lazarus/CodeTyphon. He explorado el código y he apreciado que al momento de crear el EditLabel justamente toma como caption el nombre de su Owner:


delphi
  1. constructor TBoundLabel.Create(TheOwner: TComponent);
  2. begin
  3. inherited Create(TheOwner);
  4. Name := 'SubLabel';
  5. SetSubComponent(True);
  6. if Assigned(TheOwner) then
  7. Caption := TheOwner.Name;
  8. end;


delphi
  1. procedure TCustomLabeledEdit.CreateInternalLabel;
  2. begin
  3. if FEditLabel<>nil then exit;
  4. FEditLabel := TBoundLabel.Create(Self);
  5. FEditLabel.ControlStyle := FEditLabel.ControlStyle + [csNoDesignSelectable];
  6. FEditLabel.FocusControl := Self;
  7. end;

En parte tiene sentido tal comportamiento. Si la idea del componente es la de asociar un Edit con un Label, que dicho label sea vacio no tiene demasiada lógica.

 

No veo otra alternativa que asignarle el "" en el evento OnCreate como te sugiere el compañero Enecumene en su ejemplo.

 

Saludos,


  • 0

#6 Gaston

Gaston

    Advanced Member

  • Miembros
  • PipPipPip
  • 69 mensajes

Escrito 04 octubre 2016 - 03:29

Gracias por las respuestas, hay conceptos que desconozco, otros los estoy descubriendo, he comprado el único libro de Lazarus que existe y el resto tutoriales y video tutoriales, la POO me cuesta, vengo de Clipper para que se den una idea, pero siempre me gustó Pascal y me he topado con Lazarus y FPC y aquí estoy.

 

 

enecumene: tu solución funciona, muchas gracias, sólo se ven en el diseño del Form.

 

Delphius: 8274d65cdc6fce5ef4fa33b32fc80062o.png

 
Gracias por los datos, esto me aparece al autocompletar y corrobora creo lo que explicas, que entiendo en un 50% pero ya lograré entenderlo al 100, solo necesito tiempo y mucha practica.
 
No he visto hilos en este foro que incluyan [SOLVED] así que lo dejaré así como está, pero el tema está solucionado.
 
Saludos.

  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.890 mensajes
  • LocationArgentina

Escrito 04 octubre 2016 - 05:06

Para familiarizarte con los conceptos de POO puedes ir al foro de POO en Delphi. Ahí yo mismo he dejado una serie de manuales divididos en "capítulos" en donde expongo los conceptos.

 

Si bien el foro dice "en Delphi" los conceptos son aplicables a Lazarus también. De hecho en realidad, para ser mucho más precisos y técnicos tanto Delphi como Lazarus son IDEs. El lenguaje es uno: Object Pascal. Por tanto la teoría OO es universal y lo que hay que hacer es simplemente documentarse en cada lenguaje como es que la implementa.

Una clase es una clase sea en Java, .NET, Delphi, etc. El concepto es uno, cada lenguaje tiene sus "formas" de llevarlo a la práctica.

Lo que veas en esos artículos que redacté lo puedes hacer sin problemas alguno en Lazarus también.

 

Ahora bien, para profundizar los conocimientos hay un buen libro que muchos consideramos de lectura casi obligada: La Cara Oculta de Delphi 4 de Ian Marteens. El libro en pdf lo puedes encontrar disponible en varios sitios, su autor decidió hace tiempo liberar los derechos de difusión. En ese libro, capítulo 6 si no me falla la memoria, expone todo lo que es OO en Object Pascal con Delphi. De nuevo, puedes extrapolar esto a Lazarus. Mis manuales están inspirados en el capítulo sobre POO del libro de Ian Marteens.

Y si el inglés no es un impedimento para ti, Zarko Gajic ha redactado todo un curso a modo de artículos en su vieja web.

 

Ahora bien, yo soy de la idea y la defiendo totalmente, de que lo que se debe estudiar realmente es el paradigma OO. Una cosa es estudiar "OO en x lenguaje" y otra muy distinta es formamente estudiar el paradigma OO. Naturalmente para llevarlo a la práctica se debe emplear algún lenguaje que sea LOO (es decir, que soporte OO). Pero he aquí la verdadera riqueza: como he dicho párrafos antes: una clase es una clase en cualquier LOO, saber distinguir y separar el paradigma de un lenguaje nos permite que en el día de mañana podamos volcar el concepto de manera más fácil en cualquier otro LOO que debamos aprender ya sea por gusto, por necesidades profesionales o laborales, etc.

Para OO, a mi parecer una buena lectura es el libro Introducción a Orientado a Objectos de Timothy Cudd o Budd (siempre me confundo en el apellido) Lo explica de una forma muy amena y es fácil de avanzar.

Para cuando ya tengas dominado OO, el siguiente paso es meterte en el mundo de UML y en el de los Patrones de Diseño. Sobre UML ir al libro UML de los "3 gurus" y como plus: para combinar Análisis, Diseño, Patrones, y UML lectura obligada: UML y Patrones. Una Introducción al Análisis y Diseño Orientado a Objectos y al Proceso Unificado de Craig Larman.

 

Con eso tienes para buen rato.

Sobre el poner SOLVED al hilo, estamos trabajando en ello. Antes lo teníamos implementado, pero tras algunos cambios al sitio no ha sido posible volver a ponerlo.

 

Esperamos poder serte de mucha ayuda, y que esta comunidad se convierta en tu segunda casa.


  • 0

#8 Gaston

Gaston

    Advanced Member

  • Miembros
  • PipPipPip
  • 69 mensajes

Escrito 05 octubre 2016 - 12:32

Muchas gracias Delphius, más que interesantes los manuales del foro, muy bien explicados. El libro ya lo conseguí, más de 900 páginas, tengo para entretenerme.

 

Saludos.


  • 0