//No uses//
DBXCommon
//No evento//
var
Conexao : TSQLConnection;
Transacao : TDBXTransaction;
begin
try
Transacao := Conexao.BeginTransaction(TDBXIsolations.ReadCommitted);
// Seu código fonte...
Conexao.CommitFreeAndNil(Transacao);
except
Conexao.RollBackFreeAndNil(Transacao);
end;
end;
segunda-feira, 30 de novembro de 2009
quarta-feira, 11 de novembro de 2009
Lentidão com a função que retornava o nome do computador
Pessoal, segue nova função que retorna o nome do computador.
A função anterior começou a apresentar um lentidão após a mudança na nossa rede interna, devido agora os computadores não ter mais IP fixo, e a função anterior passava o IP da máquina como parâmetro.
function NomeComputador: string; overload;
var
ipbuffer: array [0..MAX_COMPUTERNAME_LENGTH] of Char;
size: DWORD;
begin
size := Sizeof(ipbuffer);
if GetComputerName(ipbuffer, size) then
Result := ipbuffer
else
Result := '';end;
Reparem na diretiva overload na assinatura da função.
Eu deixei as duas funções no projeto.
Se passar o IP como parâmetro, o sistema utiliza a antiga, se não passar parâmetro nenhum, o sistema utiliza a nova função.
Lembrem-se de colocar a mesma diretiva overload na assinatura na função anterior.
A função anterior começou a apresentar um lentidão após a mudança na nossa rede interna, devido agora os computadores não ter mais IP fixo, e a função anterior passava o IP da máquina como parâmetro.
function NomeComputador: string; overload;
var
ipbuffer: array [0..MAX_COMPUTERNAME_LENGTH] of Char;
size: DWORD;
begin
size := Sizeof(ipbuffer);
if GetComputerName(ipbuffer, size) then
Result := ipbuffer
else
Result := '';end;
Reparem na diretiva overload na assinatura da função.
Eu deixei as duas funções no projeto.
Se passar o IP como parâmetro, o sistema utiliza a antiga, se não passar parâmetro nenhum, o sistema utiliza a nova função.
Lembrem-se de colocar a mesma diretiva overload na assinatura na função anterior.
WinExec, ShellExecute ou Create Process
Pessoal segue nova função referente ao problema relacionado com o WinExec no Delphi 2010.
Para maiores esclarecimentos, após a função, segue um link para a materia que fala sobre o assunto.
function TFrmSIS_Menu.AbreModulo(Caminho: String): boolean;
var SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb := SizeOf(SUInfo);
SUInfo.dwFlags := STARTF_USESHOWWINDOW;
SUInfo.wShowWindow := SW_NORMAL;
Result := CreateProcess(nil,
PChar(Caminho),
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
SUInfo,
ProcInfo);
if (Result) then
begin
//a linha abaixo faz com que a aplicação congele enquanto não finalizar o programa chamado...
//WaitForSingleObject(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
http://www.marcosdellantonio.net/2006/11/28/delphi-winexec-shellexecute-ou-createprocess/
Para maiores esclarecimentos, após a função, segue um link para a materia que fala sobre o assunto.
function TFrmSIS_Menu.AbreModulo(Caminho: String): boolean;
var SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb := SizeOf(SUInfo);
SUInfo.dwFlags := STARTF_USESHOWWINDOW;
SUInfo.wShowWindow := SW_NORMAL;
Result := CreateProcess(nil,
PChar(Caminho),
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
SUInfo,
ProcInfo);
if (Result) then
begin
//a linha abaixo faz com que a aplicação congele enquanto não finalizar o programa chamado...
//WaitForSingleObject(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
http://www.marcosdellantonio.net/2006/11/28/delphi-winexec-shellexecute-ou-createprocess/
Delphi 2010 com visual de Delphi 7
Veja como deixar a IDE do Delphi 2010 com o visual do Delphi 7, tradicional e com o formulário "solto":
http://delphi.viamep.com/index.php/Delphi_2010_com_visual_de_Delphi_7
http://delphi.viamep.com/index.php/Delphi_2010_com_visual_de_Delphi_7
terça-feira, 10 de novembro de 2009
Pra quem gosta de programas de graça.
Opção free para gerenciador de driver virtual como "Alcohol" ou "Power ISO".
DAEMON Tools Lite v4.35.5
http://www.disc-tools.com/download/daemon
DAEMON Tools Lite v4.35.5
http://www.disc-tools.com/download/daemon
Nero 9 Lite, que já roda no Windows7
http://www.nero.com/ptb/downloads-nero9-free.php
Cores do DBGrid para Delphi 2010
Na migração para o Delphi2010 os DBGrids ficaram todos estilizados com um tema do Delphi 2010 para corrigir isso altere a propriedade "DrawingStyle" para "gdsClassic"
Problemas com o TitleClick do DBGrid no Delphi 2010
Se usa o evento OnTileClick no DBGrid para ordenar as Colunas faça a seguinte mudança para manter tudo funcionando no Delphi 2010:
Na propriedade "Options" do "DBGrid" marque o item "dgTitleClick" para "True".
Na propriedade "Options" do "DBGrid" marque o item "dgTitleClick" para "True".
Paramêtros de Conexão para Delphi 2010
Para quem vai começar a usar o delphi 2010 vai a dica,
Crie mais uma linha nos parâmetros de conexão setando a propriedade "UseUniCode" para "False", como mostra o exemplo abaixo:
DriverName=Firebird
Database=
RoleName=RoleName
User_Name=sysdba
Password=masterkey
ServerCharSet=
SQLDialect=3
ErrorResourceFile=
LocaleCode=0000
BlobSize=-1
CommitRetain=False
WaitOnLocks=True
IsolationLevel=ReadCommitted
Trim Char=False
UseUnicode=False
Crie mais uma linha nos parâmetros de conexão setando a propriedade "UseUniCode" para "False", como mostra o exemplo abaixo:
DriverName=Firebird
Database=
RoleName=RoleName
User_Name=sysdba
Password=masterkey
ServerCharSet=
SQLDialect=3
ErrorResourceFile=
LocaleCode=0000
BlobSize=-1
CommitRetain=False
WaitOnLocks=True
IsolationLevel=ReadCommitted
Trim Char=False
UseUnicode=False
Mitos das baterias para notebooks
Acessem o link para ver a matéria, bem interessante.
http://olhardigital.uol.com.br/central_de_videos/video_wide.php?id_conteudo=8455&/MITOS+DAS+BATERIAS+PARA+NOTEBOOKS
http://olhardigital.uol.com.br/central_de_videos/video_wide.php?id_conteudo=8455&/MITOS+DAS+BATERIAS+PARA+NOTEBOOKS
Assinar:
Postagens (Atom)