
s3c
Membros-
Total de itens
817 -
Registro em
-
Última visita
Tudo que s3c postou
-
Olá Paulo, bom o código eu não tenho porque nunca tive que usar isto; mas dá para fazer utilizando um TLabel de work, c/ autosize e font=font do memo, com isto você pega o width do TLabel e o deixa igual à todas as linhas do memo c/ os comandos Pos, Delete e Insert. Dá um pouco de trabalho, mas acho que dá para ser feito.
-
Olá Paulo, acho que agora entendí. você quer que a forma do texto fique como um quadrado, alinhado dos dois lados, redistribuindo os brancos entre as palavras p/ que fiquem com as duas margens iguais. Bom, se for isto, realmente eu não conheço nada a não ser via programação.
-
Olá colega, se você tiver o .dcu ou o .pas deles, é só atualizar o path do projeto p/ onde eles estiverem.
-
Bom, o componente TMemo possui a propriedade Alignment; você pode deixá-la como taCenter, aí ele centraliza no momento da digitação. Se quiser digitar à esquerda e depois centralizar, é só modificar esta propriedade em execução.
-
Olá Paulo, como seria esse "justificar" ? Retirar os brancos à esquerda de todas as linhas ?
-
Olá Paulo, quanto ao Delphi 7 eu não conheço porque trabalho c/ o Delphi 6, mas geralmente esses updates tem um readme.txt ou algo parecido que informa qual componentes foram atualizados; e se você não os utilizar então pode ficar sem esta atualização. Eu particularmente sempre faço as atualizações porque as vezes lá na frente poderei utilizar algum componente que estava c/ bug.
-
Olá, você pode clicar dentro do Delphi em Ctrl+Shift+G e gravar a chave no registro do Windows em Hkey_Classes_Root\CLSID por exemplo.
-
Acho que você deve estar fazendo alguma coisa errada, porque quando você coloca: if Msg.Msg <> WM_CLOSE then inherited; em WndProc que é override, significa o seguinte: Todas as msgs exceto WM_CLOSE serão processadas(inherited). Com isto, você não consegue fechar sua janela clicando no 'X' da barra de título.
-
Olá, é estranho isso; você consegue fechar sua janela clicando no ícone 'X' da borda superior? Tente colocar no onClose do seu formulário: Action := caNone;
-
Não é o outro programa, perguntei se você consegue fechar o seu programa com essa instrução.
-
if Msg.Msg <> WM_Close then inherited; Com esta instrução acima em WndProc, você consegue fechar sua aplicação ?
-
A linha 16 0 0 é a msg wm_close que está sendo enviada p/ sua aplicação. Substitua a linha: inherited; por: if Msg.Msg <> WM_Close then inherited; Depois poste as últimas linhas novamente.
-
Olá colega, tente monitorar as msgs. procedure TForm1.WndProc(var Msg:TMessage); var f:TextFile; begin if not FileExists('c:\Log.txt') then begin AssignFile(f, 'c:\Log.txt'); Rewrite(f); CloseFile(f); end; AssignFile(f, 'c:\Log.txt'); Append(f); Writeln(f, IntToStr(Msg.Msg)+' '+IntToStr(Msg.WParam)+' '+IntToStr(Msg.LParam)); CloseFile(f); inherited; // não vá esquecer desta linha porque WndProc é override end; 1-Chame seu programa. 2-Chame o programa que fecha o seu. 3-Quando seu programa fechar, edite o arquivo Log.txt e poste as 30 últimas linhas.
-
Olá, se você tiver os componentes RXLib, na paleta RXTools existe um componente chamdo SecretPanel.
-
Bom, utilizando ShareMem, você compartilha a área de memória do seu .exe c/ a sua .dll A partir daí você tem acesso a qualquer variável de memória tanto do seu .exe quanto da sua .dll. você consegue este acesso através de ponteiros, pois pelas formas normais, você só conseguiria acessar métodos e funções dos quais a dll quiser exportar, porque se ela não exportar, nem isso você tem acesso. Não sei se deu pra você entender, mas vou te dar um ex prático: Suponha que em certo momento de execução na sua dll, você deseje passar uma string p/ sua aplicação(.exe); você pode fazer isso facilmente utilizando SendMessage ou PostMessage: SendMessage({Handle da sua janela} , {Número da msg},Integer(string_na_dll), {LParam(neste caso não utilizado)}); Note que Integer(string_na_dll) nada mais é do que um ponteiro de memória onde seu .exe pode 'enxergar'. Por outro lado, se você fizer isto c/ dois .exe, não irá funcionar porque eles rodam em espaços de memória distintos e aí você deverá utilizar um SendMessage c/ tipo Copy_Data que é aonde o Windows intervem fazendo uma ponte de comunicação entre o programa A e o programa B.
-
Olá, bom vamos lá: 1-O primeiro type seguido do var, declare-os antes da implementation. 2-Os demais métodos declare-os após a implementation. 3-O evento Botao_EnviarClick é o evento onde você instancia a thread. 4-quando você executa TEnvio_Email.Create acontece o seguinte: a-É chamado o construtor do objeto. b-Como o comando inherited é enviado c/ o parâmetro false, automaticamente a thread entra em execução, processando assim o método Execute. c-No método Execute, você coloca seu código p/ enviar emails. d-Sua thread principal, ou, seu programa, rodará normalmente c/ prioridade maior do que a thread de envio de emails, porque ela é uma thread secundária.
-
Olá Paulo, tente utilizar a função direta da api kernel32. SetFileAttributes('c:\temp\teste.xxx', {Atributo}); Atributo = FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_HIDDEN FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_SYSTEM
-
Olá, então porque você não começa acessando métodos e funções em dlls?
-
type TEnvio_Email = class(TThread) procedure Execute; override; constructor Create; end; var Enviar_Email :TEnvio_Email; constructor TEnvio_Email.Create; begin inherited Create(false); FreeOnTerminate := true; end; procedure TEnvio_Email.Execute; begin while not Self.Terminated do begin { envie um email de cada vez entre begin/end } end; end; // clique do botão de enviar emails ou algo parecido procedure TForm1.Botao_EnviarClick(Sender: TObject); begin Enviar_Email := TEnvio_Email.Create; end;
-
É possível através de ponteiros juntamente c/ compartilhamento de memória colocando ShareMem na primeira linha do uses do dpr da dll e no uses do dpr da sua aplicação. Mas para que finalidade você quer colocar variáveis globais em dll ?
-
É sim, crie uma thread p/ envio de emails; com isto a thread de envio de emails rodará concorrentemente com a thread principal do seu programa.
-
Mesmo assim ele encerra seu programa? você consegue encerrar com a variável Pode_Fechar desativada?
-
Olá, tenha em mente o seguinte: os cpos datetime ou date ou time são doubles onde a parte inteira é a quantidade de dias e a parte fracionária é o tempo decorrido desde às 0:00 hrs daquele dia. Então quando você subtrai um date do outro, você obtém a diferença em dias + uma fração de tempo que não servirá em nada p/ o seu cálculo. Creio que você deverá converter tudo em horas p/ depois achar a diferença.
-
Olá, esse programa que fecha o seu deve estar mandando uma msg do tipo wm_Close p/ o handle da sua janela. você pode interceptar essa msg antes de ser processada pelo seu programa. Defina: var Pode_Fechar:Boolean; procedure WndProc(var Msg:TMessage); override; procedure TForm1.WndProc(var Msg:TMessage); begin if (Msg.Msg <> wm_Close) or Pode_Fechar then inherited; end; ps: Ative o flag de Pode_Fechar quando quiser encerrar senão nem você irá conseguir fechar sua janela.
-
Olá Paulo, na verdade o código que passei está errado na informação do Top em ACanvas.TextRect. Só funciona no primeiro ítem. O correto seria: ACanvas.TextRect(ARect, ARect.Left+3, ARect.Top+2, 'Descrição do Ítem');