? DiGao Dalpiaz News en Telegram



25/03/2024 (versión 6.7) ( mínimo dzhtmltext versión: 6.3 )
16/03/2024 (versión 6.6)
03/10/2024 (versión 6.5)
23/02/2024 (versión 6.4)
22/02/2024 (versión 6.3)
20/02/2024 (versión 6.2)
Lib{Platform}{Config} . Revise sus rutas de biblioteca.21/01/2024 (versión 6.1) ( mínimo dzhtmltext versión: 5.2 )
01/12/2024 (versión 6.0) ( mínimo dzhtmltext versión: 5.1 )
¡¡¡ADVERTENCIA!!! Desinstale completamente la versión anterior eliminando la carpeta de componentes de la presa anterior, porque muchos archivos han cambiado sus nombres y ubicaciones.
12/11/2023 (versión 5.2)
29/07/2023 (versión 5.1)
04/11/2023 (versión 5.0) ( mínimo dzhtmltext versión: 4.0 )
DamUnitName12/09/2021 (versión 4.16)
24/07/2021 (versión 4.15)
13/06/2021 (versión 4.14)
21/03/2021 (versión 4.13)
14/03/2021 (versión 4.12)
13/03/2021 (versión 4.11)
03/05/2021 (versión 4.10)
10/02/2021 (versión 4.9)
18/12/2020 (versión 4.8)
27/11/2020 (versión 4.7)
11/11/2020 (versión 4.6)
31/10/2020 (versión 4.5)
27/10/2020 (versión 4.4)
26/10/2020 (Versión 4.3) ( Versión mínima de DzhtmlText: 2.6 )
26/10/2020 (versión 4.2)
18/10/2020 (versión 4.1) ( mínimo dzhtmltext versión: 2.04 )
14/10/2020 (versión 4.0)
Observaciones:
24/09/2020
11/08/2020
07/07/2020
03/03/2020
30/07/2020
21/07/2020
25/05/2020
<img:nnn> ). Es necesario actualizar el componente TDZHTMLText.05/03/2020
05/02/2020
DamParams para llenar los parámetros al usar los métodos de mensajes de la presa. Esto es necesario para las versiones de Delphi por debajo de XE8, porque no tenía una matriz dinámica como soporte de tipo.System.ImageList de la unidad de Damlist (paquete de tiempo de diseño), porque no es compatible con las versiones de Delphi por debajo de XE8.AutoWidth eliminada en TDAM. Ahora hay una nueva propiedad FixedWidth en el componente TDAMMSG, por lo que puede especificar el ancho personalizado por mensaje. El componente mantendrá la función interna de ancho automático si el ancho fijo es cero (valor predeterminado).CenterButtons a falso predeterminado, porque los nuevos diálogos de Windows están alineados a la derecha.26/04/2020
<imgres:{resource_name}> . Simplemente agregue la imagen PNG a los recursos de la aplicación y use la etiqueta para hacer referencia al mensaje. Esta implementación se encuentra en el componente DZHTMLText, utilizado por DAM. Solo necesita actualizar su componente DZHTMLText y esta función estará disponible. Lea la sección de etiqueta de imagen DZHTMLText para más información. IMPORTANTE: Las imágenes no serán visibles a tiempo de diseño .19/04/2020
10/07/2019
10/06/2019
10/05/2019
03/05/2019
11/02/2019
08/02/2019
07/07/2019
06/06/2019
05/02/2019
Agregue nuevas propiedades MessageColor and BotonScolor en el componente TDAM, para permitir la personalización del diálogo de mensajes.
Casi todas las aplicaciones que crea, debe agregar diálogos de mensajes.
Delphi le proporciona algunas opciones, como ShowMessage, Messagedlg y MessageBox.
A medida que su proyecto se hace más grande, los diálogos pueden estropear su código, principalmente si necesita escribir muchas líneas en los mensajes, con muchos parámetros.
Si necesita formatear alguna parte del mensaje, debe agregar etiquetas en un formulario personalizado. Esto podría ser realmente malo.
Mira este mensaje:
begin
ShowMessage( ' The task was scheduled to run at the time: ' +aTime+ ' . ' +# 13 # 10 +
# 13 # 10 +
' Please, check the schedule at main board. ' +
' If you want to change schedule, find by ID # ' +IntToStr(IDNumber)+ ' . ' +# 13 # 10 +
# 13 # 10 +
' This task was created by user ' +aUserName+ ' . Only this user can edit this task profile. ' );
end ;Entonces, creo que esto es realmente feo, ¿no crees? ?
Con la presa puedes escribir este mismo mensaje como este : ?
begin
InfoTaskScheduled([aTime, IDNumber, aUserName]);
end ;Este componente le permite administrar todos los mensajes de su aplicación en un "contenedor". Puede crear el cuadro de diálogo de mensajes con un creador de asistentes, lo que le permite formatear el mensaje (en negrita, cursiva, subrayar, nombre de fuente, tamaño de fuente, color de fondo de texto, alinearse el centro, alinearse a la derecha, usar alineación de pestañas, enlaces en clic, etc.).
Puede especificar los botones de mensaje, el icono, el título del formulario y mucho más.
Luego especifica un nombre para el mensaje. Por lo tanto, puede llamar al mensaje en cualquier parte de su aplicación, ¡solo llamando al método por el nombre del mensaje!
Si especifica parámetros en el texto del mensaje, cuando llama al método del mensaje, puede especificar parámetros que se reemplazarán en el texto.
Lea cuidadosamente esta documentación para saber cómo funciona este componente. ?
El contenedor de presa enumerando todos los mensajes creados, almacenados en DFM:

El creador del asistente de mensajes, para personalizar el diálogo del mensaje:

El diálogo del mensaje :?

El atajo
CTRL+Cestá disponible en el formulario de mensaje para copiar el mensaje en el portapapeles.
Primero debe instalar mi componente dzhtmlText . Consíguelo aquí: https://github.com/digao-dalpiaz/dzhtmltext
Esta es una etiqueta con componente de formato HTML. Los mensajes usan este componente para mostrar texto formateado.
Si está instalando dzhtmlText y presa a la vez, utilizando la utilidad del instalador de componentes, después de instalar dzhtmlText, necesitará abrir y cerrar Delphi antes de instalar la presa (esto es necesario para actualizar el archivo de ruta de la biblioteca utilizado por msbuild).
LibWin32Release .Admite Delphi Xe3..Delphi 12
Vaya al paquete de menú> Abra el archivo de paquete (.lpk) y cargue lazdampackage.lpk y haga clic en compilar .
Vaya al paquete de menú> Abra el archivo de paquete (.lpk) y cargue lazdamdesignpackage.lpk , y haga clic en Usar> Instalar .
En este momento, los siguientes idiomas están disponibles para mensajes:
El lenguaje establece la leyenda de los botones en los diálogos de mensajes, como OK, Cancelar, sí, no, y el título del formulario, cuando la información, la pregunta, la advertencia, el error y el mensaje (personalizado). El título del formulario se puede cambiar en las propiedades del mensaje y puede ser establecido automáticamente por otros objetos, como el título de formulario principal, el título de formulario principal y el título de la aplicación.
Puede abrir un problema para enviarme una nueva traducción del idioma o correcta la traducción actual.
La idea principal es soltar un TDAM en la forma principal, o el módulo de datos principales. El TDAM es un contenedor que tiene todo TDAMMSG (diálogo de mensajes).
Para administrar mensajes, simplemente haga doble clic en el componente TDAM, o haga clic con el botón derecho y elija Administrar mensajes de la presa .
¿Pero cómo llamar a los mensajes?
El TDAM tiene una propiedad llamada DamUnitName . Aquí define un nombre de unidad para contener todos los métodos de mensaje. Cuando usa la unidad de compilación de funciones, el componente creará esta unidad automáticamente en la carpeta del proyecto con los métodos basados en todos los mensajes creados (con el mismo nombre que el nombre del mensaje).
Entonces, en cualquier unidad, solo agregue un uso a esta unidad y llame al mensaje que desea por nombre del mensaje. Si el mensaje tiene parámetros, el método se declarará automáticamente solicitando parámetros en una matriz.
Sí, pero si estoy en la misma clase (TForm/TDATAmodule) Ese son los mensajes TDAM y TDAMMSG, si llamo al método por nombre del mensaje, ¡Delphi creo que estoy refiriendo el objeto del mensaje!
Esto es cierto, y por eso, el componente tiene una función oculta del objeto. Solo necesita nombrar el mensaje que comienza con _ . Entonces, el constructor de la unidad eliminará este personaje para nombrar el método y el Delphi no confundirá las dos cosas.
Le recomiendo que cree todos los mensajes nombrados que comienzan con el personaje _ .
Si usa el asistente, el nombre comenzará automáticamente con este personaje.
Hay un botón en el administrador de la presa para ocultar/ocultar todos los mensajes seleccionados.
Recuerde, cada vez que cambia los mensajes, debe reconstruir la unidad. Simplemente haga clic en la unidad de compilación del botón para actualizar.
Ok, ¡pero no quiero usar esta unidad! ¿Hay otro método?
Sí, claro. Puede llamar al mensaje utilizando las funciones del objeto TDAMMSG. Simplemente use la Run del objeto Mensaje o las funciones de RunAsBool . En este caso, le recomiendo que no oculte el mensaje, para que pueda llamar por el nombre del objeto tal como está.
Pero honestamente le recomiendo que use la unidad, ya que tendrá mucho más sentido.
¿Puedo usar más de un contenedor TDAM en mi aplicación?
Sí, puedes. El TDAM le permite definir algunas configuraciones, como la fuente de mensajes y los sonidos. Por lo tanto, puede tener más de un TDAM para tener este grupo de configuración. Además de eso, puede usar varios mensajes TDAM para grupos por categoría. Tampoco puede poner TDAM en formas específicas, pero recuerde que el contenedor debe existir para disparar los mensajes, por supuesto.
Si está utilizando más de un TDAM, le recomiendo que establezca el mismo DamUnitName en todos los componentes TDAM, por lo que cuando llame al botón de la unidad de compilación , se generará una sola unidad con todos los mensajes de todos los contenedores TDAM. Por lo tanto, puede usar esta única unidad en todas las otras unidades de su proyecto para llamar a cualquier mensaje.
Códigos de resultados del mensaje:
Si llama al mensaje por método de nombre del mensaje, el método será un procedimiento si el mensaje solo tiene un botón.
Si el mensaje tiene dos o tres botones, el método será una función. Cuando tiene dos botones, la función siempre devolverá el valor booleano, devolviendo verdadero si se hizo clic en el primer botón a la izquierda o devolviendo falso si se hizo clic en el segundo botón (último botón a la derecha).
Cuando el mensaje tiene tres botones, la función devuelve el valor entero 1, 2 o 3, dependiendo de qué botón se presionó en el cuadro de diálogo del mensaje. El primer botón es el izquierdo; El segundo es el botón central; El tercer botón es el botón correcto.
Entonces, cuando usa tres botones, puede usar una variable o incluso un case :
case QuestionSaveFile([aFileName]) of
1 : DoSaveFile; // Yes button
2 : { continue } ; // No button
3 : Abort; // Cancel button
end ; Si desea usar parámetros reemplazables en el mensaje, simplemente escriba %p . Puede especificar múltiples parámetros en el mismo mensaje. Cuando llama a Mensaje, la matriz de parámetros está secuencialmente en el mismo orden en que se escriben en el mensaje.
La matriz de parámetros es de tipo variante, por lo que no necesitan conversiones.
Ejemplo:
// TDamMsg Message property = 'This is a %p message number %p at time %p'
MyCustomMessage([ ' test ' , 123 , Now]);
// or
MsgInfo( ' This is a %p message number %p at time %p ' , [ ' test ' , 123 , Now]); ButtonsColor: TColor = Definir color de fondo del área de botones en el diálogo de mensajes.
ButtonsFont: TFont = Define la fuente de texto de los botones de diálogo
ButtonsFontColor: TAlphaColor = Define el color de la fuente de texto de los botones de diálogo (solo disponible en el entorno FMX)
CenterButtons: Boolean = Define si los botones en el formulario del mensaje se alinearán en el centro. Si esta propiedad es falsa, los botones se alinearán a la derecha de la forma.
DamDefault: Boolean = Define si este TDAM se usará para disparar mensajes rápidos (lea la sección de mensajes rápidos). Solo puede tener uno definido como predeterminado en la aplicación.
DamUnitName: String = Especifique el nombre de la unidad que se creará con todos los métodos de mensaje en la carpeta del proyecto. No especifique la extensión del archivo, porque el componente completará el nombre automáticamente con la extensión ".pas".
DialogBorder: Boolean = Define si la ventana del diálogo del mensaje contendrá bordes. Puede deshabilitar esta propiedad para crear temas de diálogo modernos.
DialogPosition: TDamDlgPosition = define la posición de inicio del formulario de diálogo:
HandleExceptions: Boolean = Define este TDAM para manejar todas las excepciones de aplicación, mostrando el mensaje de error con el mismo diálogo que todos los demás mensajes de la presa. Solo se puede configurar un TDAM para manejar excepciones en la aplicación.
HideIcon: Boolean = si es verdadero, se suprimirá el icono en el diálogo del mensaje.
Images: TCustomImageList = le permite establecer un ImageList, usando la etiqueta <img:idx> en el texto del mensaje, donde idx es el índice de imágenes.
Language: TDamLanguage = Define el idioma utilizado por los botones de mensaje y el título del formulario de mensajes. Cuando coloca una instancia de componente TDAM, esta propiedad se inicializará de acuerdo con el lenguaje actual del sistema. Si no hay idioma disponible según el sistema, el idioma inglés se establecerá. Esta propiedad no tiene valor predeterminado, precisamente porque debe almacenar el lenguaje que se está definiendo.
MessageColor: TColor = Definir color de fondo del área de mensaje en el diálogo de mensajes.
MessageFont: TFont = define la fuente de texto de los mensajes
MessageFontColor: TAlphaColor = Define el color de la fuente de texto de los mensajes (solo disponible en el entorno FMX)
PlaySounds: Boolean = habilitar sonidos del sistema al mostrar mensajes de advertencia, preguntas y tipos de error.
OnLinkClick(Sender: TObject; Msg: TDamMsg; const Target: string; var Handled: Boolean; var CloseMsg: Boolean; var MsgResult: TDamMsgRes) Este evento se activará cuando se haga clic en un enlace contenido en el mensaje.
De manera predeterminada, el objetivo del enlace se abrirá automáticamente utilizando ShelExeCute desde la API de Windows, por lo que si el destino es un enlace web, el navegador predeterminado abrirá el enlace, o si el destino es un archivo del sistema, Windows se ejecutará/abrirá/abrirá.
Si desea omitir este comportamiento, use este evento y establezca Handled en True. También puede configurar CloseMsg en la bandera True y MsgResult cuando desee cerrar la ventana del mensaje.
OnShowMessage(Sender: TObject; Msg: TDamMsg; var MsgText: String; var Handled: Boolean; var MsgResult: TDamMsgRes) se dispara antes de que se muestre un mensaje de presa, lo que le permite interceptar mensajes e incluso visualización de mensajes de omisión, mediante el uso de parámetros manejados.
¡Advertencia! Si omite un mensaje de excepción, el componente no aumentará una excepción, continuando con la ejecución del código (a menos que cree su propia excepción en el procedimiento del evento).
Button1: String = subtítulos del botón 1 en el cuadro de diálogo Mensaje. Disponible cuando los botones = dbone/dbtwo/dbthree.
Button2: String = subtitción del botón 2 en el cuadro de diálogo Mensaje. Disponible cuando los botones = dbtwo/dbthree.
Button3: String = subtitción del botón 3 en el cuadro de diálogo Mensaje. Disponible cuando los botones = dbthree.
Buttons: TDamMsgButtons = Define los botones en el cuadro de diálogo del mensaje:
CustomIcon: TIcon = Define un icono personalizado para mostrar en el cuadro de diálogo del mensaje. Este icono solo se muestra cuando icon = dicustom.
CustomTitle: String = Define un título personalizado para el formulario de mensaje. Este título solo se usa luego Title = DtCustom.
Dam: TDam = Define el contenedor de la presa de este mensaje.
FixedWidth: Integer = define un ancho fijo de la parte de texto en la ventana de mensajes, en píxeles. Si este valor es cero (predeterminado), entonces el ancho de la ventana se calculará automáticamente de acuerdo con el texto del mensaje. Hay un límite mínimo y máximo fijo en el formulario del mensaje (mínimo = 300px / máximo = 75% del ancho de la pantalla: cuando Android o iOS, máximo = 95% del ancho de la pantalla) .
HelpContext: THelpContext = define el contexto de ayuda. Si se define esta propiedad, cuando el cuadro de diálogo del mensaje mostrará un botón de ayuda y abrirá la ayuda de la aplicación en el objetivo de contexto. También es posible usar la tecla F1.
HelpKeyword: String = Define la palabra clave de ayuda. Si se define esta propiedad, cuando el cuadro de diálogo del mensaje mostrará un botón de ayuda y abrirá la ayuda de la aplicación en el destino de la palabra clave. También es posible usar la tecla F1.
Icon: TDamMsgIcon = define el icono en el cuadro de diálogo del mensaje:
Message: String = El texto del mensaje. Utilice el creador del asistente de mensajes para el formato de texto o lea la documentación HTLabel. Los parámetros reemplazables se definen por %p en el texto del mensaje. Use los parámetros en la matriz en el método de mensaje en el mismo orden que se especifica en el texto del mensaje. También puede especificar el literal {except} para atrapar el mensaje de excepción actual y reemplazar en esta variable en el texto del mensaje (por favor, consulte Ejemplos de excepción).
Name: String = Mensaje Nombre del objeto. Si entonces el nombre comienza con _ carácter, significa que el mensaje está oculto, por lo que el Delphi no pensará que está llamando a este objeto cuando llame al método de mensaje que tiene el mismo nombre.
RaiseExcept: Boolean = Establecer este mensaje como un mensaje de aumento. Cuando llame a este mensaje, se planteará una excepción con el texto del mensaje. En este caso, debe usar al menos un TDAM con HandleExceptions = True, de lo contrario, el mensaje no se formateará con la personalización de la presa.
SwapFocus: Boolean = de forma predeterminada, cuando se dispara un mensaje, siempre el primer botón a la izquierda comenzará con el enfoque. Si habilita esta opción, este mensaje iniciará el foco en el último botón (el botón a la derecha).
Title: TDamMsgTitle = define el título del formulario del mensaje
Todos los parámetros del mensaje se "escapan" automáticamente por componente.
Ejemplos:
procedure Test1 ;
begin
MyCustomMessage([ ' This will display <b> literal string ' , ' This will display "%p" literal string ' ]);
end ;
procedure Test2 ;
begin
MsgInfo( ' <b>First message parameter</b>: %p ' , [ ' Here I want to display literal <> characters ' ]);
end ;%p y {except} ).Si desea mostrar los caracteres literal HTML en la parte del mensaje fijo, verifique las constantes de escape en la documentación dzhtmlText.
procedure MsgInfo ( const Msg: String; const Params: TDamParams = nil ); // message with Information icon
procedure MsgWarn ( const Msg: String; const Params: TDamParams = nil ); // message with Warning icon
procedure MsgError ( const Msg: String; const Params: TDamParams = nil ); // message with Error icon
function MsgQuest ( const Msg: String; const Params: TDamParams = nil ): Boolean; // message with Question mark icon
procedure MsgRaise ( const Msg: String; const Params: TDamParams = nil ); // message with Error icon (this raises an exception)
procedure ShowErrorMsg ; // show current error message
function CaptureErrorMsg : String; // get current error message Estos métodos están disponibles a nivel mundial, en la unidad DamUnit o en el nombre de la unidad que ha especificado en la propiedad DamunitName.
Puede mostrar mensajes rápidos directamente en el código, solo escribiendo los mensajes y parámetros que le guste.
Estos métodos utilizarán el contenedor TDAM que se define como predeterminado . Por lo tanto, debe tener un TDAM disponible con la propiedad
DamDefaultestablecida en True .
La función MsgQuest resulta verdadera si se presionó el botón SI, o devuelve falso si no se presionó ningún botón.
El método ShowErrorMsg muestra la excepción actualmente. Puede usar esto como prueba ... Except Bloque.
La función CaptureErrorMsg le permite obtener el mensaje de error en la excepción actual. Debe usar esto en el try ... Except Bloque.
Ejemplo de captura de excepción:
try
DoSomeStuff;
except
ShowErrorMessage; // will show error message dialog using Dam concept
end ; try
DoSaveFile;
except
MsgError( ' Fatal error saving file: %p ' , [CaptureErrorMsg]);
end ; Si especifica literal {except} en el texto del mensaje, esto será reemplazado por el mensaje de error actual:
try
DoSaveFile;
except
MsgError( ' Fatal error saving file: {except} ' ); // don't need to use CaptureErrorMsg function!
end ;También puede volver a hacer una excepción:
try
DoSaveFile;
except
raise EDam.Create( ' Fatal error saving file: {except} ' ); // re-raise a new exception with better text message
end ; Puede establecer el parámetro RaiseExcept en un objeto de mensaje de la presa, por lo que cuando se llama el mensaje, se planteará una excepción.
Recuerde: para aprovechar los recursos de la presa, debe establecer HandleExceptions en el objeto de contenedor de la presa. Cuando se plantea una excepción, Dam interceptará esta excepción y mostrará un cuadro de diálogo personalizado.
Ejemplos:
procedure TestException_Generic ;
begin
raise Exception.Create( ' This is my generic exception ' );
// HTML tags are NOT allowed when using generic exception
end ;
procedure TestException_DamRunTimeCreation ;
begin
raise EDam.Create( ' This is my <b>exception</b> with parameter %p ' , [ ' First parameter ' ]);
end ;
procedure TestException_DamDesignTimeCreation ;
begin
raise EDam.Create(MyCustomMessage, [ ' First parameter ' ]);
// MyCustomMessage represents a TDamMsg object created at design-time
end ;
procedure TestException_DamDesignTimeCreation_ByProperty ;
begin
_MyCustomMessage.Run([ ' First parameter ' ]);
// or
MyCustomMessage([ ' First parameter ' ]);
// MyCustomMessage represents a TDamMsg object created at design-time with property RaiseExcept=True
end ;
procedure TestException_Quick ;
begin
MsgRaise( ' This is my <b>exception</b> with parameter %p ' , [ ' First parameter ' ]);
// This method is for compatibility, but I recommend you to use "raise EDam.Create" instead.
end ;Hay un archivo llamado Damlang.ini (carpeta de recursos), que tiene todas las cadenas utilizadas en el componente. Si desea cambiar algún texto en este archivo, deberá ejecutar " Build Dam Resource.bat " después de eso. Este lote creará un nuevo archivo " dam_resource.res " en la carpeta de componentes raíz.
Después de eso, ejecute " AfterBuild.bat " para publicar este nuevo archivo de recursos en la carpeta "lib".
Si desea agregar un nuevo idioma, se necesitarán algunos cambios en el código. Entonces, por favor, abra un nuevo número y publique las cadenas de idioma que desee, luego aplicaré en el componente.
Cuando está utilizando versiones de Delphi debajo de XE8, en todos los métodos de la presa que contienen el parámetro TDamparams, no podrá pasar el parámetro de matriz dinámico directamente.
En tales casos, use la función global DamParams . Esta función también está disponible en la unidad generada por Dam.
Entonces, aquí hay algunos ejemplos de cómo usar el método de mensaje de la presa en estas versiones:
// Quick message:
MsgInfo( ' This is a test message with parameter value = %p ' , DamParams([ 999 ]));
// Custom message:
MyCustomMessage(DamParams([ ' Parameter 1 ' , ' Parameter 2 ' ]));El diseño de este componente se produjo alrededor de 2005 cuando verifiqué la necesidad de crear cuadros de diálogo estandarizados para mis aplicaciones.
En ese momento, llamé al componente de "mejor diálogo", que en portugués sería DM ( Diálogo Melhor ).
Después de un tiempo, el proyecto llegó a contener una nueva estructura con el contenedor. Luego cambié el nombre del componente a "diálogo aún mejor", que en portugués es presa ( diálogo ainda melhor ). ?
Entonces, el nombre del componente terminó permaneciendo como presa.
Hoy uso este componente en casi todas mis aplicaciones Delphi.