ADSENSE

ADSENSE

quinta-feira, 18 de novembro de 2010

NF-e: Inativo ou Inoperante

Bom dia Pessoal!


Enfrentamos semana passada um problema em dois clientes que utilizam a NF-e. Ao verificar o status do serviço, o mesmo sempre retornou "Inativou ou Inoperante... ". Para resolver o problema, restauramos as configurações padrões do IE e excluimos os certificados que se encontravam na aba "Fornecedores não confiáveis"

Limpar o buffer do teclado e mouse

procedure EmptyKeyQueue;
var Msg: TMsg;
begin
while PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_NOYIELD) do;
end;

procedure EmptyMouseQueue;
var Msg: TMsg;
begin
while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE or PM_NOYIELD) do;
end;

sábado, 16 de outubro de 2010

Converte a primeira letra em maiúscula

Coloque o código no envento onKeyPress de um Edit.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);begin
       with Sender as TEdit do
            if (SelStart = 0) or (Text[SelStart] = ‘ ‘) then
                 if Key in [‘a’..’z’] then Key := UpCase(Key);end;

Function IncAno

Incrementa e retorna a data do parâmetro Data com a qunatidade de anos do parâmetro valor.


function IncAno(Data: TDate; Valor: integer):TDate;var A,M,D: Word;begin
       DecoDeDate(Data,A,M,D);
       A:=A+Valor;
       Result:=StrToDate(FormatFloat('00/',D)+FormatFloat('00/',M)+IntToStr(A));
end;


Usando:
procedure TForm1.BitBtn27Click(Sender: TObject);begin
        ShowMessage('Ano : '+DateToStr(IncAno(StrToDate(Edit2.Text),1)));
end;

Function HoraToSegundos

Converte hora no formato (HH:MM) para segundos.


function HoraToSegundos(Hora:TTime):integer;var h,m,s,ms: Word;begin
       DecoDeTime(Hora,h,m,s,ms);
       Result:=((h*60)*60)+(m*60)+s;
end;


Usando:
procedure TForm1.BitBtn26Click(Sender: TObject);begin
       ShowMessage(IntToStr(HoraToSegundos(StrToTime(Edit2.Text))));
end;

Function HoraToMinuto

Converte hora no formato (HH:MM) para minutos.


function HoraToMinuto(Hora:TTime):integer;var h,m,s,ms: Word;begin
       DecoDeTime(Hora,h,m,s,ms);
       Result:=(h*60)+m;
end;


Usando:
procedure TForm1.BitBtn26Click(Sender: TObject);begin
       ShowMessage(IntToStr(HoraToMinuto(StrToTime(Edit2.Text))));
end;



Function FirstChar

Retorna o primeiro caractere da string passada ao parâmetro S.


function FirstChar(S:String):String;begin
       Result:=copy(S,1,1);
end;


Usando :
procedure TForm1.BitBtn25Click(Sender: TObject);begin
       ShowMessage(FirstChar(Edit2.Text));
end;

Function DiasNoMes

Retorna a quantidade de dias pertinentes ao mês da data passado no parâmetro Data. Esta função usa a função IsLeapYear para saber se o ano é bissexto.

function DiasNoMes(Data:TDate):integer;var Y,M,D : Word; Dias : integer;
begin
       Dias:=0;
       DecoDeDate(Data,Y,M,D);
       //Especificando o número de dias de cada mes
       if  M = 1 then Dias:=31;      
       if M = 2 then begin
             if IsLeapYear (Y) then   Dias:=29 else  Dias:=28;       
       end;      
       if M = 3 then Dias :=31;       
       if M = 4 then Dias :=30;      
       if M = 5 then Dias :=31;       
       if M = 6 then Dias :=30;       
       if M = 7 then Dias :=31;       
       if M = 8 then Dias :=31;       
       if M = 9 then Dias :=30;       
       if M = 10 then Dias :=31;      
       if M = 11 then Dias :=30;       
       if M = 12 then Dias :=31;       //Retornando o número do mês especificado
       Result:=Dias;

end;

Procedure AjustaFormulário

Ajusta o formulário para a resolução de vídeo especificada pelo parâmetro tamanho, onde 800 indica uma resolução de 800x600 pixels, 640 indica uma resolução de 640x480 e assim por diante. Este procedimento deverá ser utilizado no evento onCreate. O procedimento poderá ser declarado no Seção Public do Formulário principal para que todo o Sistema a utilize.
public
       procedure AjustaFormulario(Formulario:TForm; Const Tamanho:integer = 800);
end;
var
Form1: TForm1;



implementation


procedure TForm1.AjustaFormulario(Formulario:TForm; Const Tamanho:integer = 800);var Escala : Double; Porc : integer;//Vai dar o percentual inteiro
begin
       with Formulario do begin
            if  Tamanho <> Screen.Width  then begin
                 //Recebendo o percentual de escalar
                 Escala:=((Screen.Width-Tamanho)/Tamanho);
                 //Recebendo o percentual de escalar em inteiro
                 Porc:=Round((Escala*100)+100);
                 Self.Width:=Round(Self.Width*(Escala+1));
                 Self.height:=Round((Self.height*(Escala+1)));
                 //Realizando o ajuste do form
                 Self.changeScale(Porc,100);
          
            end;       
       end;
end;

Function QuotedStr

Uses Unit SysUtils
A função QuotedStr retorna a string do parâmetro com apóstrofo (') no início e fianal. Se a string passada for em branco, a função retorna dois apóstrofos ('').

Sintaxe da sua utilização:
QuotedStr('Texto');

Ex:
procedure TForm1.Button14Click(Sender: TObject);
begin
       ShowMessage(QuotedStr('Márcio Edésio Simão'));

end;

Function IsLeapYear

Uses Unit SysUtils
A função IsLeapYear retorna true se o ano passado ao parâmetro for bissexto, caso contrário retorna false;

Sintaxe da sua utilização:
IsLeapYear(Ano);

Ex:
procedure TForm1.Button14Click(Sender: TObject);
begin
       if isLeapYear(2006) then Showmessage('Bissexto')  else Showmessage('Não');
end;

Function IncMonth

Uses Unit SysUtils
A função IncMonth retorna um valor do tipo TDateTime com o incremento de um determinado número de meses.

Sintaxe da sua utilização:
IncMonth(Data,Número_de_meses);

Ex:
procedure TForm1.Button14Click(Sender: TObject);var Data : TDateTime;begin
       Data:=IncMonth(date,3);
// A variavel Data recebe a data atual mais o número de meses (3)
       Showmessage(DateToStr(Data));
end;

Function GetCurrentDir

Uses Unit SysUtils
A função GetCurrentDir retorna o nome do diretório atual.

Sintaxe da sua utilização:
GetCurrentDir;

Ex:
procedure TForm1.Button14Click(Sender: TObject);begin
       ShowMessage(GetCurrentDir);
end;

Function ExtractFilePath

Uses Unit SysUtils
A função ExtractFilePath retorna uma string com o path do arquivo passado com parâmetro.
ExtractFileName retorna o nome do arquivo.

Sintaxe da sua utilização:
ExtractFilePath('Nome_do_arquivo');
ExtractFileName('Nome_do_arquivo');

Ex:
procedure TForm1.BitBtn12Click(Sender: TObject);begin
       ShowMessage(ExtractFilePath(Application.ExeName));
end;

Function ExpandFileName

Uses Unit SysUtils
A função ExpandFileName retorna uma string com o path do executável mais o nome do arquivo passado como parâmetro, sem verificar se o arquivo existe ou não.

Sintaxe da sua utilização:
ExpandFileName('Nome_do_arquivo');

Ex:
procedure TForm1.BitBtn12Click(Sender: TObject);begin
       ShowMessage(ExpandFileName('Márcio'));
end;

Function ExcludeTrailingBackslash

Uses Unit SysUtils
A função ExcludeTrilingBackslash retorna uma cópia da string passada como parâmetro sem o caractere '\'.Esta função é utilizada quando se trabalha com endereços de pastas e arquivos.

Sintaxe da sua utilização:
ExcludeTrilingBackslash('nome_da_pasta');

Ex:
procedure TForm1.BitBtn12Click(Sender: TObject);begin
       ShowMessage(ExcludeTrailingBackslash('C:\CtrlSys\Procedimentos_Funções\'));
end;

Function DayOfWeek

Uses Unit SysUtils
A função DayOfWeek retorna o dia da semana da data passada como parâmetro.Ex.: Domingo(1), Segunda(2),etc.

Sintaxe da sua utilização:
DayOfWeek(Data);

Ex:
procedure TForm1.BitBtn12Click(Sender: TObject);begin
       ShowMessage(IntToStr(DayOfWeek(Date)));
end;

Function CreateDir

Uses Unit SysUtils
A função CreateDir cria um novo diretório e retorna True se o diretório puder ser criado com sucesso, caso contrário, retorna false.

Sintaxe da sua utilização:
CreateDir('Nome_do_diretório');

Ex::
procedure TForm1.BitBtn12Click(Sender: TObject);begin
       CreateDir('Márcio');
end;

Function AnsiStrLastChar

Uses Unit SysUtils
A função AnsiStrLastChar retorna o último caractere de string do tipo Pchar passada como parâmetro.

Sintaxe da sua utilização:
AnsiStrLastChar(Pchar(Texto));

Ex:
procedure TForm1.BitBtn12Click(Sender: TObject);begin
       ShowMessage(AnsiStrLastChar(PChar('Márcio\')));
//Retorna \
end;

Function AnsiLowerCase

Uses Unit SysUtils
A função AnsiLowerCase retorna uma String com caracteres minúsculos.

Sintaxe da sua utilização:
AnsiLowerCase(Texto);

Ex:
procedure TForm1.Button24Click(Sender: TObject);begin
       label1.Caption:= AnsiLowerCase('MÁRCIO');
//retorna letras minusculas
end;

Function AnsiPos

Uses Unit SysUtils
A função AnsiPos retorna a posição de um determinado caractere de uma String.

Sintaxe da sua utilização:
AnsiPos(Caractere_a_ser_localizado,Texto);
Ex:

procedure TForm1.Button25Click(Sender: TObject);begin
       label1.Caption:=IntToStr(AnsiPos('r','marcio')); //Localiza num texto a letra
end;

sexta-feira, 15 de outubro de 2010

Function Random

uses Unit System
A função Random gera números aleatórios dentro de um intervalo especificado. ou seja, 0<=X< Intervalo.

Sintaxe da sua utilização:
Random(Valor);

Ex:
procedure TForm1.Button22Click(Sender: TObject);begin
       label1.Caption:=IntToStr(Random(50));
//Retorna números aleatórios
end;

Function Pred

use Unit System
A função Pred  retorna o antecessor de um argumento.

Sintaxe da sua utilização:
Pred(Argumento);

Ex:
procedure TForm1.Button21Click(Sender: TObject);begin
       label1.Caption:=IntToStr(Pred(15));
end;

Function Pos

uses Unit System
A função Pos retorna a posição da primeira ocorrência da substring do parâmetro Substr dentro da String do parâmetro S.

Sintaxe da sua utilização:
Pos(SubString,Texto);

Ex:
procedure TForm1.BitBtn9Click(Sender: TObject);begin
       Label1.Caption:=IntToStr(Pos('voce', 'Eu adoro voce'));
//Retornar a posição da letra ou palavra numa string
end;

Function Int

use Unit System
A função Int retorna a parte inteira de uma número real, desprezando os números decimais.

Sintaxe da sua utilização:
Int(Valor);

Ex:
procedure TForm1.BitBtn8Click(Sender: TObject);var Vl : Real;begin
        VL:=Int(13.44);
        label7.Caption:=FloatToStr(Vl);
end;

Function Abs

Uses Unit System
A função Abs converte o valor do parâmetro em um valor absoluto, ou seja, um número positivo.

Sintaxe da sua utilização:
Abs(Valor);

Ex:
procedure TForm1.Button19Click(Sender: TObject);var Vl : integer;begin
       Vl:=Abs(-15);
//Converte valores negativos para positivo
        label6.Caption:=IntToStr(Vl);
end;

Function Min

Uses Unit FileCtrl

A função Min retorna o menor de dois valores.

Sintaxe da sua utilização:
Min(Valor_A,Valor_B);

Ex:
procedure TForm1.Button18Click(Sender: TObject);begin
       Label5.Caption:=IntToStr( Min(15,12));
//Retorna o menor valor
end;

Function Max

uses Unit FileCtrl
A função Max retorna o maior valor de dois valores.

Sintaxe da sua utilização:
Max('Valor_A,Valor_B');

Ex:
procedure TForm1.Button17Click(Sender: TObject);begin
       Label4.Caption:=IntToStr( Max(15,12));
//Retorna o maior valor
end;

Function Floor

uses Unit Math
A função floor retorna um menor número inteiro mais próximo ao número passado ao parâmetro.

Sintaxe da sua utilização:
Floor(Valor);

Ex:
procedure TForm1.Button16Click(Sender: TObject);begin
       label1.Caption:= IntToStr(Floor(3.5));
//Retorna o valor inteiro mais próximo
end;

Function Ceil

Uses Unit Math
A função Ceil retorna o mais próximo número inteiro maior que o número passado como parâmetro.

Sintaxe da sua utilização:
Ceil(Valor);

Ex:
procedure TForm1.Button15Click(Sender: TObject);begin
       Label1.Caption:=IntToStr(Ceil(15.3));
//Passa o próximo valor inteiro
end;

Function SelectDirectory

 Uses Unit FileCtrl

A função SelectDirectory exibe uma caixa de diálogo que permite que o usuário se posicione num determinado diretório nas unidades de drives locais ou em alguma pasta na rede. Em seguida, a função retorna ao diretório em que o usuário se posicionou.

Sintaxe da sua utilização:
SelectDirectory('Váriavel_que_receberá_o_diretório_posicionado',[Opções],Help_context);

Ex:
procedure TForm1.Button14Click(Sender: TObject);var Dir: string;begin
       Dir := 'C:\Teste';
       if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],0) then
             Label1.Caption := Dir;
end;

Function ForceDirectories

Uses Unit FileCtrl

A função ForceDirectories cria todos os diretórios passados ao parâmetro Dir se os mesmos ainda não existirem. Por exemplo, se você passar para o parâmetro Dir os seguintes diretórios: 'C:\Teste1\Teste2\Teste3\Teste4', então serão criados todos estes diretórios, ou melhor, se estes diretórios ainda não existirem.

Sintaxe da sua utilização:
ForceDirectories('Nome_do_diretório');

Ex:
procedure TForm1.Button13Click(Sender: TObject);begin
       ForceDirectories('C:\Teste\Teste1\Teste2');
end;

Function DirectoryExists

Uses Unit FileCtrl
A função DirectoryExists certifica se o diretório passado ao parâmetro Name existe. Se o diretório existir, a função retorna True, caso contrário, retorna False.

Sintaxe da sua utilização:
DirectoryExists(Nome_do_diretório );

Ex:
procedure TForm1.Button12Click(Sender: TObject);begin
       if DirectoryExists('C:\CtrlSys\Utilitários') then begin      
              ShowMessage('True');
       end else
              ShowMessage('False');
end;

Function MessageDlgPos

Uses Unit Dialogs
A função MessageDlgPos exibe uma caixa de diálogo que permite saber em qual botão o usuário clicou e permite também que você escolha o posicionamento da caixa de diálogo na tela.

Sintaxe da sua utilização:
MessageDlgPos('Mensagem',Tipo_da_caixa_de_diálogo,Botões,HelpCtx,Coordenada_X,Coordenada_Y);

Ex:
procedure TForm1.Button11Click(Sender: TObject);
begin
      MessageDlgPos('Você Já fez a primeira parte?',mtConfirmation, mbYesNoCancel, 0, 200, 200);
end;

Function MessageDlg

uses Unit Dialogs

A função MessageDlg exibe uma caixa de diálogo no centro da tela e permite saber em qual botão o usário clicou.

O valor retornado será o botão que o usuário clicou. Entre os valores possíveis estão : mrNone, mrAbort, mrYes, mrNo, mrRetry, mrOk, mrCancel, mrIgnore, mrAll.

Tipo de Caixa de diálogo : mtWarning, mtError, mtInformation, mtConfirmation, mtCustom.

Sintaxe da sua utilização:
MessageDlg('Mensagem',Tipo_da_caixa_de_dialogo,botões,HelpCtx);

Ex:
procedure TForm1.BitBt2Click(Sender: TObject);
begin
       MessageDlg('Erro na operação', mtError, [mbOk], 0);
end;

Function InputBox

uses Unit Dialogs

A função InputBox exibe uma caixa de diálogo com dois botões (OK e CANCEL), juntamente com uma caixa de texto para que o usuário entre com alguma informação.O valor retornado pela função será o texto digitado na caixa de texto, isso se o usuário clicar no botão OK.
Sintaxe da sua utilização:

InputBox('Título_da_caixa_de_diálogo','mensagem_da_caixa_de_texto','conteúdo_da_caixa_de_texto');

Ex:
procedure TForm1.Button10Click(Sender: TObject);
var nome_completo :string;
begin
       InputBox('Nome','Digite seu nome','nome_completo');
       ShowMessage(nome_completo);
end;

terça-feira, 5 de outubro de 2010

Utilização de datas no MySQL

Aposto que muitos programadores já tiveram problema para lidar com datas em SGDB, pensando nisso estou publicando este artigo que achei na internet não sei qual é o criador, mas foi de grande utilidade quando comecei a  programar.

Segue abaixo o artigo .

O artigo abaixo tem como objetivo  facilitar o entendimento do manuseio de datas dentro dos padrões brasileiros, um dos maiores problemas na manipulação de dados. Para isso tomamos como base o SGBD MySQL 5.


Para manipularmos dados do tipo DATA, podemos definir a coluna como DATE, DATETIME ou TIMESTAMP, sendo que suas principais características são:

# DATE                           esta no formato AAAA-MM-DD
# DATETIME                 esta no formato AAAA-MM-DD HH:MM:SS
# TIMESTAMP              esta no formato AAAAMMDDHHMMSS

Apesar das datas do tipo DATETIME e TIMESTAMP utilizarem hora, minuto e segundo, podemos utilizar seu conteúdo somente com a data. Para isso, utiliza-se a função DATE_FORMAT(date,format), que transforma a data apresentada para o formato desejado. Também podemos utilizar essa função para colocar qualquer tipo de data no formato mais adequado para nossa aplicação, como por exemplo no formato "DD/MM/AAAA".

As datas são armazenadas no formato norte-americano e, para obtermos o resultado no formato Brasileiro, devemos utilizar a função acima:

Ex: se for necessário apresentar a data de uma determinada transação no formato
"DD/MM/AAAA" deve-se fazer o comando de seleção com a seguinte sintaxe:

SELECT DATE_FORMAT(nome_da_coluna_com_a_data, '%d/%m/%Y')
FROM nome_da_tabela;

Atenção especial deve ser dada às colunas definidas como "TIMESTAMP", pois nelas ficam depositados data e horário de atualização da linha na tabela, isto é: quando é feita uma mudança em qualquer dado de uma linha da tabela o dado da coluna definida como TIMESTAMP é atualizado com o momento atual.

Para melhor entender o uso dos tipos de data no MySQL, apresentamos a seguir comandos que demonstram o resultado de datas formatadas:

SELECT * FROM FORMATODATA;
SELECT DATE_FORMAT(DT_DateTime, '%d/%m/%Y') as 'DATETIME',
DATE_FORMAT(DT_Date, '%d/%m/%Y') as 'DATE',
DATE_FORMAT(DT_Timestamp, '%d/%m/%Y') as 'TIMESTAMP'
FROM FORMATODATA;

Para fazermos uso da data atual, devemos utilizar a função CURDATE(), que retornará a data corrente no formato AAAA-MM-DD e se necessitarmos a data no formato AAAAMMDD utlizamos a função CURDATE() + 0.
Ex.|
SELECT CURDATE(), CURDATE + 0;

Para obtermos a diferença de dias entre duas datas, utilizamos a função DATADIFF(data1, data2).
Ex.|
SELECT DATEDIFF('2007-10-30 23:59:59','2007-12-31')

Para somarmos dias a uma data, utilizamos a função DATE_ADD(date,INTERVAL exprtype).
Ex.|
SELECT DATE_ADD('2005-12-31 23:59:59', INTERVAL 1 DAY);

Para subtrairmos dias a uma data, utilizamos a função SUBDATE (date,INTERVAL exprtype).
Ex.|
SELECT SUBDATE('2005-12-31 23:59:59', INTERVAL 5 DAY);

Para obtermos o dia da semana, utilizamos a função DAYOFWEEK(date).
Ex.|
SELECT DAYOFWEEK('1998-02-03');

Para obtermos o dia do ano utilizamos a função DAYOFYEAR(date).
Ex.|
SELECT DAYOFYEAR(CURDATE());

Para obtermos o momento atual, utilizamos a função NOW() ou SYSDATE().
Ex.|
SELECT NOW(), SYSDATE();

terça-feira, 28 de setembro de 2010

Zeos 7.0 em Delphi 2010

Na minha opinião um dos melhores componentes para acesso a banco de dados é o Zeoslib. Além de fornecer acesso à diversos SGDB, esse componente é open source o que eu considero uma grande vantagem frente à outros componentes.

Vamos ao que interessa.

1 - Faça o download do arquivo (Zeos 7.0)
2 - Crie uma pasta chamada Zeos7 dentro da pasta Lib do RAD Studio.(Tambem pode criar o diretório onde vc quiser deste que você informa este nas Lib do Delphi).
 Por exemplo, meu RAD Studio esta em C:\Program Files\CodeGear\RAD Studio\7.0\lib, então meu diretório base será: C:\Program Files\CodeGear\RAD Studio\7.0\lib\zeos7
3 - Descompacte os arquivos dentro do diretório recem criado no ítem 2.
4 - Com o Delphi 2010 aberto, vá em File -Open Project (Ctrl+F11) e abra o arquivo ZeosDbo.GroupProj, dentro de C:\Program Files\CodeGear\RAD Studio\7.0\lib\zeos7\packages\delphi14 (Ou no seu diretorio que vc criou).
5 - Vá ao menu Project - Build All Projects
6 - Antes de continuar, se você estiver usando o Windows Vista ou Windows 7 com o UAC habilitado, você terá que dar permissão TOTAL para a pasta Zeos7 criada, caso contrário não irá funcionar.
7- Agora, antes da instalação vá ao menu Tools - Options - Evironment Options - Delphi Options - Library - Win 32 e adicione o caminho a seguir no Library Path: $(BDS)\lib\Zeos7\packages\delphi14\build (Se voce criou outro diretório coloca seu diretorio\Zeos7\packages\delphi14\build).
8 - Feito isto, minimize o Delphi, abra o diretório C:\Program Files\CodeGear\RAD Studio\7.0\lib\zeos7\packages\delphi14\build, selecione todos os arquivos ".bpl" copie-os e cole-o dentro da pasta Bpl do RAD Studio: C:\Users\Public\Documents\RAD Studio\7.0\Bpl
9 - Volte ao Delphi vá ao menu View - Project Manager (Ctrl + Atl + F11). Selecione e compile as bpls abaixo, uma a uma. Para compilar, clique com o botão direto sobre o bpl. É a primeira opção.

- ZCore140.Bpl
- ZPlain140.Bpl
- ZParseSql140.Bpl
- ZDbc140.Blq
- ZComponent140.Bpl
- ZComponentDesign140.Bpl

10 - Depois de compiladas, clique com o botão direito sobre o pacote ZComponentDesign140.Bpl (o único em negrito) e clique em Install.
11 - Pronto, feche tudo (File - Close All). Crie um novo projeto e veja que os componentes já podem ser utilizados.

Criação de Forms

Na correria do dia a dia para quem trabalha na programação nada melhor que poder reutilizar um código em vários  lugares no seu projeto.
Pensando nisso estou colocando uma procedure de criação de formulário na qual você pode utilizar e muito.

procedure AbreForm(aClasseForm: TComponentClass; aForm: TForm);


procedure AbreForm(aClasseForm: TComponentClass; aForm: TForm);
begin
    Application.CreateForm(aClasseForm, aForm);
    try
        aForm.ShowModal;
    finally
        FreeAndNil(aForm);
    end;
end; 


Ex. de uso : AbreForm(TForm1,Form1);

domingo, 26 de setembro de 2010

Impressora Padrão do Windows

Esta função é simples mas de grande utilidade na programação, principalmente quando precisa se saber qual é a impressora padrão do Windows.

Para esta função funcionar precisa declarar nas uses a classe Printers.
Segue abaixo a função que retorna a impressora padrão do windows.

function ImpressoraPadrao :String;
// Retorna a impressora padrão do windows
var
   Device : array[0..255] of char;
   Driver : array[0..255] of char;
   Port   : array[0..255] of char;
   hDMode : THandle;
begin
   Printer.GetPrinter(Device, Driver, Port, hDMode);
   Result := Device;
end;


Ex de como usar : Label1.Caption := ImpressoraPadrao;

sábado, 25 de setembro de 2010

E-mail

Pessoal, se alguém quiser enviar um artigo, dúvida ou sugestão, o seu canal de contato com o Vale do Delphi é valedodelphi@gmail.com
Forte abraço a todos

quinta-feira, 23 de setembro de 2010

Bem Vindos

Bem vindos a todos...
Este blog foi criado com intuído de ajudar aos iniciantes em Delphi, com dicas, artigos, postagens com assuntos diversos relacionado a programação Delphi .

Sejam todos bem vindos.