Mostrando postagens com marcador DELPHI. Mostrar todas as postagens

Habilitar e desabilitar USB  

Posted by: Paulo Bezerra in



procedure bloquearUSB;
var
reg : TRegistry;
begin
reg := TRegistry.create;
with reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\SYSTEM\CurrentControlSet\Services\UsbStor', false) then
begin
//quatro bloqueia
reg.WriteInteger('Start', 4);
//caminho do arquivo que o windows usa para montar a unidade usb
reg.WriteString('ImagePath', '_system32\DRIVERS\USBSTOR.SYS');
end;
CloseKey;
end;
end;

Procedure desbloquearUSB;
var
reg : Tregistry;
begin
reg := TRegistry.Create;
with reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\SYSTEM\CurrentControlSet\Services\UsbStor', false) then
begin
//tres desbloqueia
reg.WriteInteger('Start', 3);
//caminho do arquivo que o windows usa para montar a unidade usb
reg.WriteString('ImagePath', 'system32\DRIVERS\USBSTOR.SYS');
end;

end;

end;

Funções de Data e Hora (Delphi)  

Posted by: Paulo Bezerra in

É muito comum nos depararmos no dia a dia com a necessidade de manipular datas e horas, seja para um calculo de permanência, dias de atraso enfim, é praticamente escapar de alguma situação que necessite desse tipo de controle.
Assim como a necessidade e se utilizar algum recurso para manipular as datas e horas de alguma maneira e freqüente, as duvidas de como o faze-lo também é, basta um breve olhar em qualquer fórum especializado e lá está, alguma duvida relacionada, por isso decidi falar um pouco sobre uma unit muito poderosa chamada DateUtils para a manipulação de data e hora, com um grande numero de métodos e classes que facilitam a vida de qualquer um.


Alguns exemplos:
  • CompareDate(constA, B: TDateTime): TValueRelationship;
Compara apenas a data de dois valores (do tipo TDateTime) retornando:
LessThanValue O primeiro valor é menor que o segundo
EqualsValue Os valores são iguais
GreaterThanValue O primeiro valor é maior que o segundo
  • CompareDateTime(const A, B: TDateTime): TValueRelationship;
O mesmo que o item anterior levando em consideração o horário também.
  • CompareTime(const A, B: TDateTime): TValueRelationship;
O mesmo que o item anterior levando em consideração apenas o horário.
  • IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;
Incrementa uma data de acordo com a quantidade de dias especificada.
  • IsPM(const AValue: TDateTime): Boolean;
Indica se a porção hora da data ocorre após o meio-dia.
  • DaySpan(const ANow, AThen: TDateTime): Double;
Retorna o numero de dias entre duas datas levando em consideração também as horas
  • DaysBetween(const ANow, AThen: TDateTime): Integer;
Retorna o número de dias entre duas datas sem levar em consideração as horas.
  • DateOf(const AValue: TDateTime): TDateTime;
Converte data e hora para apenas data.
  • DayOfTheMonth(const AValue: TDateTime): Word
Retorna o dia do mês (1 a 31) de uma data.
  • DayOfTheYear(const AValue: TDateTime): Word;
Retorna o numero de dias entre uma data e o dia 31 de dezembro do ano anterior
  • DayOfTheWeek(const AValue: TDateTime): Word;
Retorna o dia da semana de uma data, onde 1 representa segunda e 7 domingo
  • HourOf(const AValue: TDateTime): Word;
Retorna a quantidade de horas de uma data, variando de 0 a 23.
  • TimeOf(const AValue: TDateTime): TDateTime;
Retorna a porção de tempo de uma data.
  • WithinPastDays(const ANow, AThen: TDateTime; const ADays: Integer): Boolean;
Indica quando duas datas possuem o mesmo numero de dias.
  • WithinPastYears(const ANow, AThen: TDateTime; const AYears: Integer): Boolean;
Indica quando duas datas possuem o mesmo numero de anos.
  • YearsBetween(const ANow, AThen: TDateTime): Integer;
Retorna o numero aproximado de anos entre duas datas.

SOFTWARE.INFORMER. DELPHI  

Posted by: Paulo Bezerra in

Procura no 4shared  

Posted by: Paulo Bezerra in ,

http://search.4shared.com/network/search.jsp?sortType=1&sortOrder=1&sortmode=2&searchName=cep+2009&searchmode=2&searchName=cep+2009&searchDescription=&searchExtention=&sizeCriteria=atleast&sizevalue=10&start=20

ICONES  

Posted by: Paulo Bezerra in ,

Acrescentar Linha Arquivo TXT  

Posted by: Paulo Bezerra in

Function Escreve_Arq(NomeArq,Texto : String ) : Boolean;
var
sArquivo : tStrings;
Begin
Try
sArquivo:=tStringList.Create;
sArquivo.LoadFromFile(NomeArq);
sArquivo.Add(string);
sArquivo.SaveToFile(NomeArq);
result:=True;
except
result:=False;
end
End;

Ex. de uso:

If Escreve_Arq('c:\Teste.txt','Nova Linha de Texto') then
ShowMessage('Arquivo alterado com sucesso !!')
else
ShowMessage('Erro ao alterar arquivo');

Icones diversos  

Posted by: Paulo Bezerra in ,



http://www.iconarchive.com

DICAS DELPHI  

Posted by: Paulo Bezerra in



http://www.dicasdelphi.com.br/
Pagina com muitas dicas, Otima.

Consultando CEP no Delphi sem usar WebService  

Posted by: Paulo Bezerra in

fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=7783

Ai galera uma funçãozinha formatada para vocês usarem em suas aplicações para consultar o CEP dos correios... Essa função retorna um TStrings onde cada linha contém uma informação do CEP como Rua, Bairro, UF, Endereço
OBS: Acrescente no USES NMHTTP, NMURL.
// criação da função
function buscaCEP(lcCEP: string): TStringList;
var
loHTTP : TNMHTTP;
loURL : TNMURL;
lnCont : integer;
begin
try
loHTTP := TNMHTTP.Create(Application);
loURL := TNMURL.Create(Application);
try
loHTTP.Get('http://republicavirtual.com.br/web_cep.php?cep='+lcCEP+'&formato=query_string');
// retorna o conteudo da string e formata-o
loURL.InputString := loHTTP.Body;
// usa o separador de quebra de linha
result := TStringList.Create;
result.Text := UpperCase(StringReplace(loURL.Decode, '&', #13#10, [rfreplaceAll]));
for lnCont := result.Count - 1 downto 0 do
if trim(result[lnCont]) = '' then
result.Delete(lncont);
finally
loHTTP.Free;
loURL.Free;
end;
except
result := nil;
end;
end;
// exemplo
var
loCEP: TStringList;
begin
loCEP := Geral.buscaCEP(RetiraCharsAlfa(_edtCEP.Text));
if loCEP = nil then
MensagemOK('CEP não localizado ou não há conexão com a Internet!!!')
else if loCEP.Values['RESULTADO'] <> '1' then
MensagemOK('CEP não localizado!!!')
else
begin
_edtEndereco.Text := loCEP.Values['TIPO_LOGRADOURO'] + ' ' + loCEP.Values['LOGRADOURO'];
_edtBairro .Text := loCEP.Values['BAIRRO'];
_edtCidade .Text := loCEP.Values['CIDADE'];
_edtEstado.ItemIndex := _edtEstado.Items.IndexOf(loCEP.Values['UF']);
end;
end;

ENTER em vez de TAB no formulário, no DBGrid e no StringGrid  

Posted by: Paulo Bezerra in

fonte http://microportal.vilabol.uol.com.br/dicasdelphi.htm#81

8 - ENTER em vez de TAB no formulário, no DBGrid e no StringGrid


{ Mude a propriedade "KeyPreview" do Form para true. }

{ No evento "OnKeyPress" do Form acrescente o código abaixo: }

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
Perform(WM_NEXTDLGCTL, 1, 0);
end;
end;

{ Em StringGrid, escreva o evento OnKeyPress como abaixo: }

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
StringGrid1.Perform(WM_KEYDOWN, VK_TAB, 0);
end;

{ Em DBGrid, escreva o evento OnKeyPress como abaixo: }

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
DBGrid1.Perform(WM_KEYDOWN, VK_TAB, 0);
end;

Observações

É bom lembrar que a tecla ENTER no Windows tem seu papel já bem definido quando se trata de caixa de diálogo: executar a ação padrão, normalmente o botão OK. Se não tomar cuidado poderá confundir o usuário, em vez de ajudá-lo.

Início da página

chmar tela de login  

Posted by: Paulo Bezerra in

fonte: http://microportal.vilabol.uol.com.br/dicasdelphi.htm#81

20 - Mostrar um Form de LogOn antes do Form principal


{
* Crie um novo Projeto. Este certamente terá o Form1.
* Adicione um novo Form (Form2).
* Coloque no Form2 dois botões TBitBtn.
* Mude a propriedade Kind do BitBtn1 para bkOK.
* Mude a propriedade Kind do BitBtn2 para bkCancel.
* Vá no menu "Project/Options" na aba "Forms" e passe o
Form2 de "Auto-create Forms" para "Available Forms".
* Abra o arquivo Project.dpr (menu Project/View Source).
* Altere o conteúdo deste arquivo conforme abaixo:
}

program Project1;

uses
Forms, Controls,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

var
F: TForm2;

begin
F := TForm2.Create(Application);
try
if F.ShowModal = mrOK then begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
finally
F.Free;
end;
end.

Observações

O Form2 do exemplo é o Form de LogOn. Este deverá ser preparado para que se possa escolher o usuário, digitar a senha, etc.

Início da página

DELPHI BASICO INGLES  

Posted by: Paulo Bezerra in

http://www.delphibasics.co.uk/

varias dicas (delphi 6 no vista)  

Posted by: Paulo Bezerra in

http://www.marcosdellantonio.net/category/delphi/

dicas 1100  

Posted by: Paulo Bezerra in

http://www.urisantiago.br/jairton/scripts/dicas.php?d=Delphi&cat=1&textopesq=000

Para que servem OnGetEditMask, OnGetEditText e OnSetEditText do TStringGrid  

Posted by: Paulo Bezerra in


O evento OnGetEditMask ocorre quando entramos no modo de edição.
Neste momento podemos verificar em qual linha/coluna se
encontra o cursor e então, se quiser, poderá especificar uma
máscara de edição. Exemplo:

procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
ARow: Integer; var Value: String);
begin
if (ARow = 1) and (ACol = 1) then
Value := '(999) 999-9999;1;_'; // Telefone
end;

O evento OnGetEditText ocorre também quando entramos no modo
de edição. Neste momento podemos manipularmos o texto da
célula atual (linha/coluna) e então podemos simular algo tal
como uma tabela onde opções podem ser digitadas através
de números. Exemplo:

procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol,
ARow: Integer; var Value: String);
begin
if (ARow = 1) and (ACol = 2) then begin
if StringGrid1.Cells[ACol, ARow] = 'Ótimo' then
Value := '1'
else if StringGrid1.Cells[ACol, ARow] = 'Regular' then
Value := '2'
else if StringGrid1.Cells[ACol, ARow] = 'Ruim' then
Value := '3';
end;
end;

O evento evento OnSetEditText ocorre quando saímos do modo de
edição. Neste momento podemos manipular a entrada e trocar
por um texto equivalente. Normalmente usamos este evento em
conjunto com o evento OnGetEditText. Exemplo:

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
if (ARow = 1) and (ACol = 2) then begin
if Value = '1' then
StringGrid1.Cells[ACol, ARow] := 'Ótimo'
else if Value = '2' then
StringGrid1.Cells[ACol, ARow] := 'Regular'
else if Value = '3' then
StringGrid1.Cells[ACol, ARow] := 'Ruim'
end;
end;

Observações

Para testar o exemplo anterior crie um novo projeto e coloque no Form1 um TStringGrid. Mude os três eventos mencionados conforme os exemplos. Execute e experimente digitar nas céluas 1 e 2 da primeira linha (na parte não fixada, é claro!).

Como Faço Para Deixar Um Formulário Sempre Visivel  

Posted by: Paulo Bezerra in


Como Faço Para Deixar Um Formulário Sempre Visivel

Se for o form principal e no form2  é só colocar a propriedade FormStyle dele para fsStayOnTop. Se for form secundario é só usar a dica do nosso colega s3c, e sobrescrever esse procedimento ->

no form2 abaixo do public coloque:

procedure CreateParams(var Params: TCreateParams); override;

e coloque esta procedure

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := 0;
end;


ou

Procedure TForm1.Button1Click(Sender: TObject);
Begin
  With Form1 do
    SetWindowPos(Handle, // "handle" para a janela
                 HWND_TOPMOST, // controla onde vai ficar a janela  (*¹)
                 Left,  // a posição horizontal
                 Top,   // a posição vertical
                 Width, // a largura
                 Height, // a altura
                 // opções de posicionamento da janela
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); // (*²)
End;

Existem outras opções, além de HWND_TOPMOST, ou SWP_NOSIZE
Coloca o cursor antes, por exemplo de SWP_NOMOV e pressiona Control+Espaço e vai digitando S W P...
O Delphi mostra as outras opções, que você pode testar...

Formulários independentes no Delphi, estilo MSN  

Posted by: Paulo Bezerra in



Formulários independentes no Delphi, estilo MSN

Criar formulários no estilo do MSN, onde cada janela de bate-papo fica independente da aplicação, é muito fácil no Delphi. Para isto, basta sobrepor o método CreateParams no formulário desejado.

No exemplo abaixo eu criei um formulário (frmMSN) que é utilizado por outras duas janelas com essas características.

O resultado: todos os formulários herdados deste modelo ficaram em janelas independentes da aplicação, você pode observá-los na barra de tarefas do windows, no desktop, como na imagem acima:

type
  TfrmMSN = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  protected
    procedure CreateParams(var Params: TCreateParams); 
      override;
  end;
 
implementation
 
{$R *.dfm}
 
procedure TfrmMSN.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := GetDesktopWindow;
end;
merito http://www.alexandrejose.com
interessante tambem:

procedure TfrmCadForn.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle := ExStyle OR WS_EX_APPWINDOW ;
WndParent := Application.Handle;
end;
end;

A mudança foi feita de WndParent := GetDesktopWindow para WndParent := Application.Handle

Ultilizando animações swf do flash com Delphi  

Posted by: Paulo Bezerra in

no menu "Component" do delphi selecione: "Import ActiveX Control"
selecione agora: "Shockwave Flash(Version 1.0)"
e clique em "Install.."
pronto seu componente está instalado na paleta ActiveX

na propriedade Movie do componente insira o caminho onde esta seu arquivo.swf

 

Posted by: Paulo Bezerra in

monte de rotinas 

FORM FILHA  

Posted by: Paulo Bezerra in

Suponha que você esteja no Form1 e precise chamar o Form2 passando dois parametros ("Aden" e "Rodrigues").

1. Crie as variáveis de instancia do Form2 que receberão os dois parâmetros.
2. Reescreva o Construtor desse form, de forma receber os parametros e atribui-los às suas variáveis de instância:
type
TForm2 = class(TForm)
private
Parametro1 : String;
Parametro2 : String;
public
constructor Create(AOwner : TComponent; pParm1, pParm2 : String);
end;

var
Form2: TForm2;

implementation

Constructor TForm2.Create(AOwner : TComponent; pParm1, pParm2 : String);
begin
inherited Create(AOwner);
Parametro1 := pParm1;
Parametro2 := pParm2;
end;

Agora no seu form1, abra o form2 com a seguinte sintaxe:

With TForm2.Create(self, 'Aden', 'Rodrigues') do
Begin
ShowModal;
Free;
End;

Obs: Não deixe o delphi criar automaticamente o formulário. Crie-o (e destrua-o) manualmente.