? DIGAO DALPIAZ NOTÍCIAS SOBRE TELEGRAM



25/03/2024 (versão 6.7) ( Versão mínima de dzhtmltext: 6.3 )
16/03/2024 (versão 6.6)
03/10/2024 (versão 6.5)
23/02/2024 (versão 6.4)
22/02/2024 (versão 6.3)
20/02/2024 (versão 6.2)
Lib{Platform}{Config} . Por favor, revise seus caminhos da biblioteca.21/01/2024 (versão 6.1) ( Versão mínima de dzhtmltext: 5.2 )
12/01/2024 (versão 6.0) ( Versão mínima de dzhtmltext: 5.1 )
AVISO!!! Desinstale completamente a versão anterior, excluindo a pasta anterior do componente Dam, porque muitos arquivos mudaram seus nomes e locais.
12/11/2023 (versão 5.2)
29/07/2023 (versão 5.1)
04/11/2023 (versão 5.0) ( Versão mínima de dzhtmltext: 4.0 )
DamUnitName12/09/2021 (versão 4.16)
24/07/2021 (versão 4.15)
13/06/2021 (versão 4.14)
21/03/2021 (versão 4.13)
14/03/2021 (versão 4.12)
13/03/2021 (versão 4.11)
05/03/2021 (versão 4.10)
02/10/2021 (versão 4.9)
18/12/2020 (versão 4.8)
27/11/2020 (versão 4.7)
11/11/2020 (versão 4.6)
31/10/2020 (versão 4.5)
27/10/2020 (versão 4.4)
26/10/2020 (versão 4.3) ( Versão mínima de dzhtmltext: 2.6 )
26/10/2020 (versão 4.2)
18/10/2020 (versão 4.1) ( Versão mínima de dzhtmltext: 2.04 )
14/10/2020 (versão 4.0)
Observações:
24/09/2020
08/11/2020
07/07/2020
08/08/2020
30/07/2020
21/07/2020
25/05/2020
<img:nnn> ). É necessário atualizar o componente tdzhtmltext.05/05/2020
05/02/2020
DamParams da Função Global para preencher parâmetros ao usar métodos de mensagem DAM. Isso é necessário para as versões Delphi abaixo do XE8, porque não possuía matriz dinâmica como suporte de tipo.System.ImageList da unidade Damlist (Pacote de tempo de design), porque não é suportado pelas versões Delphi abaixo do XE8.AutoWidth removida em TDAM. Agora, existe uma nova FixedWidth de propriedade no componente TDAMMSG, para que você possa especificar a largura personalizada por mensagem. O componente manterá a função interna de largura automática se a largura fixa for zero (valor padrão).CenterButtons alterada para o padrão false, porque o novo estilo de diálogo Windows tem botões alinhados à direita.26/04/2020
<imgres:{resource_name}> tag. Basta adicionar imagem PNG aos recursos do aplicativo e usar a tag para referenciá -los na mensagem. Esta implementação está no componente DZHTMLText, usado por Dam. Você só precisa atualizar seu componente DZHTMLText e esse recurso estará disponível. Leia a seção DzhtmlText Image Tag para obter mais informações. IMPORTANTE: As imagens não serão visíveis no tempo de design .19/04/2020
10/07/2019
10/06/2019
10/05/2019
05/03/2019
02/11/2019
08/08/2019
02/07/2019
06/06/2019
05/02/2019
Adicione novas propriedades MessageColor e ButtonsColor no componente TDAM, para permitir a personalização da caixa de diálogo.
Quase todos os aplicativos que você cria, você precisa adicionar diálogo de mensagens.
A Delphi oferece algumas opções, como showMessage, Messagedlg e MessageBox.
À medida que seu projeto aumenta, as diálogos podem atrapalhar seu código, principalmente se você precisar escrever muitas linhas nas mensagens, com muitos parâmetros.
Se você precisar formatar alguma parte da mensagem, precisará adicionar rótulos em um formulário personalizado. Isso pode ser muito ruim.
Veja esta mensagem:
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 ;Então, eu acho que isso é realmente feio, você não acha? ?
Com a barragem, você pode escrever esta mesma mensagem como esta : ?
begin
InfoTaskScheduled([aTime, IDNumber, aUserName]);
end ;Este componente permite gerenciar todas as suas mensagens de aplicativo em um "contêiner". Você pode criar a caixa de diálogo de mensagem com um criador do assistente, permitindo formatar a mensagem (negrito, itálico, sublinhado, nome da fonte, tamanho da fonte, cor de fundo de texto, alinhamento de alinhamento, alinhamento à direita, alinhamento da guia Usar, links clicáveis, etc.).
Você pode especificar os botões da mensagem, o ícone, o título do formulário e muito mais.
Então você especifica um nome para a mensagem. Portanto, você pode chamar a mensagem em qualquer parte do seu aplicativo, apenas chamando o método pelo nome da mensagem!
Se você especificar parâmetros no texto da mensagem, quando você chama o método da mensagem, poderá especificar parâmetros que serão substituídos no texto.
Leia atentamente esta documentação para saber como esse componente funciona. ?
O contêiner da barragem listando todas as mensagens criadas, armazenadas no DFM:

O criador do assistente de mensagem, para personalizar a caixa de diálogo da mensagem:

A caixa de diálogo da mensagem :?

O atalho
CTRL+Cestá disponível no formulário de mensagem para copiar a mensagem para a área de transferência.
Primeiro, você precisa instalar meu componente dzhtmltext . Obtenha aqui: https://github.com/digao-dalpiaz/dzhtmltext
Este é um rótulo com componente de formatação HTML. As mensagens usam esse componente para exibir texto formatado.
Se você estiver instalando o dzhtmltext e a barragem de uma só vez, usando o utilitário de instalador do componente, depois de instalar o dzhtmltext, você precisará abrir e fechar o Delphi antes de instalar a barragem (isso é necessário apenas para atualizar o arquivo de caminho da biblioteca usado pelo msbuild).
LibWin32Release .Suporta Delphi Xe3..Delphi 12
Vá para o pacote de menus> Abrir arquivo de pacote (.lpk) e carregar lazdampackage.lpk e clique em compilar .
Vá para o pacote de menus> Abrir arquivo de pacote (.lpk) e carregar lazdamdesignpackage.lpk e clique em usar> instalar .
No momento, os seguintes idiomas estão disponíveis para mensagens:
O idioma define a legenda dos botões nas caixas de diálogo da mensagem, como OK, Cancelar, sim, não, e o título do formulário, quando informações, perguntas, aviso, erro e mensagem (personalizadas). O título do formulário pode ser alterado nas propriedades da mensagem e pode ser definido automaticamente por outros objetos, como o título do formulário pai, o título do formulário principal e o título do aplicativo.
Você pode abrir um problema para me enviar uma nova tradução de idiomas ou tradução correta correta
A idéia principal é lançar um TDAM na forma principal, ou módulo de dados principal. O TDAM é um contêiner que possui todo o TDAMMSG (diálogo de mensagens).
Para gerenciar mensagens, clique duas vezes no componente TDAM ou clique com o botão direito do mouse e escolha gerenciar mensagens de barragem .
Mas como chamar as mensagens?
O TDAM possui uma propriedade chamada DamUnitName . Aqui você define um nome de unidade para conter todos os métodos de mensagem. Quando você usa a unidade de construção de funções, o componente criará esta unidade automaticamente na pasta do projeto com os métodos baseados em todas as mensagens criadas (com o mesmo nome que o nome da mensagem).
Portanto, em qualquer unidade, basta adicionar um uso a esta unidade e chamar a mensagem desejada pelo nome da mensagem. Se a mensagem tiver parâmetros, o método será declarado solicitando automaticamente parâmetros em uma matriz.
Sim, mas se eu estiver na mesma classe (tform/tdatamodule) que é as mensagens TDAM e TDAMMSG, se eu ligar para o método por nome da mensagem, os Delphi acham que estou referindo o objeto da mensagem!
Isso é verdade e, por isso, o componente tem uma função oculta de objeto. Você só precisa nomear a mensagem começando com _ . Portanto, o construtor de unidades removerá esse personagem para nomear o método e o Delphi não confundirá as duas coisas.
Eu recomendo que você crie todas as mensagens nomeadas começando com o caractere _ .
Se você usar o assistente, o nome será iniciado automaticamente com esse personagem.
Há um botão no gerenciador de barragens para ocultar/não-Hide todas as mensagens selecionadas.
Lembre -se, toda vez que você muda as mensagens, você precisa reconstruir a unidade. Basta clicar na unidade de construção do botão para atualizar.
Ok, mas não quero usar esta unidade! Existe outro método?
Sim claro. Você pode chamar a mensagem usando as funções do objeto TDAMMSG. Basta usar as funções de Run do objeto de mensagem ou RunAsBool . Nesse caso, recomendo que você não oculte a mensagem, para que você possa chamar pelo nome do objeto como está.
Mas sinceramente recomendo que você use a unidade, pois ela fará muito mais sentido.
Posso usar mais de um contêiner TDAM no meu aplicativo?
Sim, você pode. O TDAM permite definir algumas configurações, como a fonte da mensagem e os sons. Portanto, você pode ter mais de um TDAM para ter esse grupo de configuração. Além disso, você pode usar vários TDAM para agrupar mensagens por categoria. Você pode colocar o TDAM em formas específicas, mas lembre -se de que o contêiner precisa existir para disparar as mensagens, é claro.
Se você estiver usando mais de um TDAM, recomendo que você defina a mesma DamUnitName em todos os componentes do TDAM; portanto, quando você ligar para o botão de unidade de criação , ele será gerado uma única unidade com todas as mensagens de todos os contêineres TDAM. Assim, você pode usar esta unidade única em todas as outras unidades do seu projeto para chamar qualquer mensagem.
Códigos de resultado da mensagem:
Se você ligar para a mensagem pelo nome do nome da mensagem, o método será um procedimento se a mensagem tiver apenas um botão.
Se a mensagem tiver dois ou três botões, o método será uma função. Quando possui dois botões, a função sempre retornará o valor booleano, retornando true se o primeiro botão à esquerda foi clicado ou retornando false se o segundo botão (o último botão à direita) foi clicado.
Quando a mensagem tem três botões, a função retorna o valor inteiro 1, 2 ou 3, dependendo de qual botão foi pressionado na caixa de diálogo da mensagem. O primeiro botão é o esquerdo; O segundo é o botão do meio; O terceiro botão é o botão certo.
Portanto, ao usar três botões, você pode usar uma variável ou mesmo um case :
case QuestionSaveFile([aFileName]) of
1 : DoSaveFile; // Yes button
2 : { continue } ; // No button
3 : Abort; // Cancel button
end ; Se você deseja usar parâmetros substituíveis na mensagem, basta digitar %p . Você pode especificar vários parâmetros na mesma mensagem. Quando você está chamando a mensagem, a matriz de parâmetros está sequencialmente na mesma ordem em que são digitados na mensagem.
A matriz de parâmetros são do tipo variante, para que não precisem de conversões.
Exemplo:
// 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 = Defina a cor de fundo dos botões da área na caixa de diálogo da mensagem.
ButtonsFont: TFont = define a fonte de texto dos botões de diálogo
ButtonsFontColor: TAlphaColor = Define a cor da fonte de texto dos botões de diálogo (disponível apenas no ambiente FMX)
CenterButtons: Boolean = Defina se os botões no formulário de mensagem serão alinhados no centro. Se essa propriedade for falsa, os botões serão alinhados à direita da forma.
DamDefault: Boolean = define se este TDAM será usado para disparar mensagens rápidas (leia a seção Mensagens rápidas). Você só pode ter um definido como padrão no aplicativo.
DamUnitName: String = Especifique o nome da unidade a ser criado com todos os métodos de mensagem na pasta do projeto. Não especifique a extensão do arquivo, porque o componente concluirá o nome automaticamente com a extensão ".PAS".
DialogBorder: Boolean = define se a janela da caixa de diálogo da mensagem conterá fronteiras. Você pode desativar essa propriedade para criar temas de diálogo modernos.
DialogPosition: TDamDlgPosition = Define o formulário de diálogo Posição de início:
HandleExceptions: Boolean = define este TDAM para lidar com todas as exceções do aplicativo, mostrando a mensagem de erro com a mesma caixa de diálogo que todas as outras mensagens da DAM. Apenas um TDAM pode ser definido para lidar com exceções no aplicativo.
HideIcon: Boolean = se verdadeiro, o ícone na caixa de diálogo da mensagem será suprimido.
Images: TCustomImageList = permite definir uma lista de imagelel, usando tag <img:idx> no texto da mensagem, onde idx é o índice de imagem.
Language: TDamLanguage = define o idioma usado pelos botões de mensagem e título do formulário de mensagem. Quando você coloca uma instância do componente TDAM, essa propriedade será inicializada de acordo com o idioma atual do sistema. Se não houver linguagem disponível de acordo com o sistema, o idioma inglês será definido. Esta propriedade não possui valor padrão, precisamente porque deve armazenar o idioma que está sendo definido.
MessageColor: TColor = Defina a cor de fundo da área de mensagem na caixa de diálogo da mensagem.
MessageFont: TFont = define a fonte de texto de mensagens
MessageFontColor: TAlphaColor = Define a cor da fonte de texto das mensagens (disponível apenas no ambiente FMX)
PlaySounds: Boolean = Ativar sons do sistema ao mostrar mensagens de aviso, perguntas e erros.
OnLinkClick(Sender: TObject; Msg: TDamMsg; const Target: string; var Handled: Boolean; var CloseMsg: Boolean; var MsgResult: TDamMsgRes) Este evento será acionado quando clicado em um link contido na mensagem.
Por padrão, o alvo do link será aberto automaticamente usando a API Shellexecute da Windows; portanto, se o destino for um link da Web, o navegador padrão abrirá o link ou se o destino for um arquivo do sistema, o caminho será executado/aberto pelo Windows.
Se você deseja ignorar esse comportamento, use este evento e o conjunto Handled como true. Você também pode definir CloseMsg como o sinalizador True e MsgResult quando deseja fechar a janela da mensagem.
OnShowMessage(Sender: TObject; Msg: TDamMsg; var MsgText: String; var Handled: Boolean; var MsgResult: TDamMsgRes) Incêndios antes que uma mensagem de barragem seja exibida, permitindo que você intercepte mensagens e até mesmo desvie a exibição de mensagens, usando o parâmetro manipulado.
Aviso! Se você ignorar uma mensagem de exceção, o componente não aumentará uma exceção, continuando a execução do código (a menos que você crie sua própria exceção no procedimento de evento).
Button1: String = Legenda do botão 1 na caixa de diálogo da mensagem. Disponível quando botões = dbone/dbtwo/dbtHree.
Button2: String = Legenda do botão 2 na caixa de diálogo da mensagem. Disponível quando botões = dbtwo/dbtHree.
Button3: String = Legenda do botão 3 na caixa de diálogo da mensagem. Disponível quando botões = dbthree.
Buttons: TDamMsgButtons = define os botões na caixa de diálogo da mensagem:
CustomIcon: TIcon = define um ícone personalizado para mostrar na caixa de diálogo da mensagem. Este ícone é mostrado apenas quando o ícone = dicustom.
CustomTitle: String = Define um título personalizado para o formulário de mensagem. Esta legenda é usada apenas então title = dtcustom.
Dam: TDam = define o contêiner de barragem desta mensagem.
FixedWidth: Integer = Define uma largura fixa da peça de texto na janela da mensagem, em pixels. Se esse valor for zero (padrão), a largura da janela será calculada automaticamente de acordo com o texto da mensagem. Existe um limite fixo mínimo e máximo no formulário de mensagem (mínimo = 300px / máximo = 75% da largura da tela - quando Android ou iOS, máximo = 95% da largura da tela) .
HelpContext: THelpContext = Define contexto de ajuda. Se esta propriedade for definida, quando a caixa de diálogo da mensagem exibirá um botão Ajuda e abrirá ajuda do aplicativo no destino do contexto. Também é possível usar a tecla F1.
HelpKeyword: String = Define Help Keyword. Se esta propriedade for definida, quando a caixa de diálogo Mensagem exibirá um botão Ajuda e abrirá a ajuda do aplicativo no destino das palavras -chave. Também é possível usar a tecla F1.
Icon: TDamMsgIcon = define o ícone na caixa de diálogo da mensagem:
Message: String = o texto da mensagem. Use o criador do assistente de mensagem para formatação de texto ou leia a documentação HTLABEL. Os parâmetros substituíveis são definidos por %p no texto da mensagem. Use os parâmetros na matriz no método da mensagem na mesma ordem, especificada no texto da mensagem. Você também pode especificar o literal {except} para capturar a mensagem de exceção atual e substituir nesta variável no texto da mensagem (consulte exemplos de exceção).
Name: String = Nome do objeto da mensagem. Se então o nome iniciar com o caractere _ , significa que a mensagem está oculta, para que o Delphi não pense que você está chamando esse objeto quando chama o método de mensagem com o mesmo nome.
RaiseExcept: Boolean = Defina esta mensagem como uma mensagem de aumento. Quando você chamar esta mensagem, será levantada uma exceção com o texto da mensagem. Nesse caso, você precisa usar pelo menos um TDAM com HandleExceptions = True, caso contrário, a mensagem não será formatada com a personalização da barragem.
SwapFocus: Boolean = por padrão, quando uma mensagem é disparada, sempre o primeiro botão à esquerda começará com foco. Se você ativar esta opção, esta mensagem iniciará o foco no último botão (o botão à direita).
Title: TDamMsgTitle = define o título do formulário de mensagem
Todos os parâmetros de mensagem são automaticamente "escapados" pelo componente.
Exemplos:
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 e {except} ).Se você deseja exibir caracteres literais HTML na peça de mensagem fixa, verifique as constantes de fuga na documentação 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 Esses métodos estão disponíveis globalmente, na unidade DamUnit ou no nome da unidade que você especificou na propriedade DamunitName.
Você pode mostrar mensagens rápidas diretamente no código, apenas digitando as mensagens e parâmetros que você gosta.
Esses métodos usarão o contêiner TDAM que é definido como padrão . Portanto, você precisa ter um TDAM disponível com propriedades
DamDefaultdefinida como true .
A função MsgQuest ResultA True se o botão sim foi pressionado ou retornar FALSE se nenhum botão foi pressionado.
O método ShowErrorMsg mostra a exceção atualmente. Você pode usar isso como tentativa .. exceto bloco.
A função CaptureErrorMsg permite obter a mensagem de erro na exceção atual. Você deve usar isso no bloco de tentativa .. exceto.
Exemplo de captura de exceção:
try
DoSomeStuff;
except
ShowErrorMessage; // will show error message dialog using Dam concept
end ; try
DoSaveFile;
except
MsgError( ' Fatal error saving file: %p ' , [CaptureErrorMsg]);
end ; Se você especificar literal {except} no texto da mensagem, isso será substituído pela mensagem de erro atual:
try
DoSaveFile;
except
MsgError( ' Fatal error saving file: {except} ' ); // don't need to use CaptureErrorMsg function!
end ;Você também pode reiniciar uma exceção:
try
DoSaveFile;
except
raise EDam.Create( ' Fatal error saving file: {except} ' ); // re-raise a new exception with better text message
end ; Você pode definir o parâmetro RaiseExcept em um objeto de mensagem DAM; portanto, quando a mensagem for chamada, uma exceção será aumentada.
Lembre -se: para aproveitar os recursos da barragem, você precisa definir HandleExceptions no objeto de contêiner de barragem. Quando uma exceção for aumentada, a DAM interceptará esta exceção e exibirá uma caixa de diálogo personalizada.
Exemplos:
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 ;Existe um arquivo chamado DAMLANG.INI (Pasta Recursos), que possui todas as strings usadas no componente. Se você deseja alterar algum texto nesse arquivo, precisará executar " Build Dam Resource.bat " depois disso. Este lote criará um novo arquivo " DAM_RESOURCE.RES " na pasta ROOT Component.
Depois disso, execute a " AfterBuild.bat " para publicar este novo arquivo de recursos na pasta "lib".
Se você deseja adicionar um novo idioma, serão necessárias algumas alterações no código. Então, por favor, abra um novo problema e publique as seqüências de idiomas que você deseja, então aplicarei no componente.
Quando você estiver usando versões Delphi abaixo do XE8, em todos os métodos de barragem que contêm o parâmetro Tdamparams, você não poderá passar diretamente ao parâmetro de matriz dinâmica.
Nesses casos, use os DamParams da função global. Esta função também está disponível na unidade gerada automaticamente.
Então, aqui estão alguns exemplos de como usar o método da mensagem de barragem nessas versões:
// Quick message:
MsgInfo( ' This is a test message with parameter value = %p ' , DamParams([ 999 ]));
// Custom message:
MyCustomMessage(DamParams([ ' Parameter 1 ' , ' Parameter 2 ' ]));O design deste componente ocorreu por volta de 2005, quando verifiquei a necessidade de criar caixas de diálogo padronizadas para meus aplicativos.
Naquela época, chamei o componente de "melhor diálogo", que em português seria DM ( Diálogo Melhor ).
Depois de um tempo, o projeto veio conter uma nova estrutura com o contêiner. Depois, renomeei o componente para "diálogo ainda melhor", que em português é a barragem ( Diálogo Ainda Melhor ). ?
Portanto, o nome do componente acabou ficando como barragem.
Hoje eu uso esse componente em quase todos os meus aplicativos Delphi.