Destaque

Trabalhando com transações com PHP e MySQL Transações é um recurso muito interessante do MySQL, pois permite que você execute uma sequência de comandos SQL de uma só vez, permitindo que você execute determinadas inserções, somente se todas as inserções forem realizadas com sucesso. Isto assegura que você mantenha seu banco...

Read more

PHP: Detectando Browsers diferentes Segue uma função simples abaixo para detectar o navegador que o usuário está usando, inclusive para o Internet Explorer 10

Read more

Windows Seven: Ativando a conta de Administrador Por padrão, a conta de Administrador no Windows Seven vem desabilitada, portanto, mesmo se você possui permissões de Administrador no sistema, sempre que for necessário alguma tarefa específica, como por exemplo, instalação de softwares ou drivers, o Controle de Conta de Usuário (UAC) será acionado,...

Read more

PHP: Função só número com Expressão Regular Existe uma função no PHP que permite filtrar valores de uma variável, deixando passar somente os valores que desejamos. Veja no exemplo abaixo function soNumero($str) { return preg_replace("/[^0-9]/", "", $str); } $filtro = soNumero("teste321"); echo $filtro; // 321 fonte:...

Read more

Delphi: Variáveis do tipo Variants Esta flexível e poderosa Estrutura de Dados, que popularizou-se bastante através da linguagem Clipper, carrega consigo recursos extremamente interessantes para a manipulação de tipos e trabalhos com arrays. Mas o melhor de tudo, é que, estes recursos estão disponíveis a nós, “Programadores...

Read more

Delphi: Redimesionar form child em MDI

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi

Esta rotina redimensiona o formulário Child de uma aplicação MDI para preencher todo a área do form pai.

Read the rest of this entry »

Delphi: Várias dicas de impressão pelo TPrinter

0

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi
if PrintDialog1.Execute then begin
vPrinterLinha := 0;
vFormulario := 66;
Canvas.Font.Name := ‘Courier New’;
Canvas.Font.Size := 8;
Printer.BeginDoc;
with Printer do begin
vPrinterLinha := 1;
vAltura := Canvas.TextHeight(‘A’);
cdsRel.Last;
cdsRel.First;
try
for vI := 1 to cdsRel.RecordCount do begin
vString := cdsRel.Fieldbyname(‘LinRel’).Value;
Canvas.TextOut(0, (vI – 1) * vAltura, vString);
inc(vPrinterLinha);
cdsRel.Next;
if vPrinterLinha > vFormulario – 3 then begin
Printer.NewPage;
vPrinterLinha := 1
end;
end;
finally
EndDoc;
end;
end;
end;
———————————————————————
Impressão com o TPrinter ( Via gerenciador de impressão)
Delphi
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Linha:integer;
Tamanho:integer;
Coluna:integer;
begin
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Printer.Canvas.Pen.Width := 5;
Printer.Canvas.Font.Name := ‘Times New Roman’;
Printer.Canvas.Font.Size := 10;
Linha := 20;
Coluna:= 20;
Tamanho := Printer.Canvas.TextWidth(‘a’);
Table1.First;
while not Table1.Eof do
begin
if Linha = 20 then
begin
Coluna := 20;
Printer.Canvas.TextOut(0,Linha,’Relação de Clientes’);
Linha := Linha – Printer.Canvas.Font.Height + 5 ;
Printer.Canvas.TextOut(Coluna,Linha,’Cod’);
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,’Nome’);
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,’Endereço’);
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha – Printer.Canvas.Font.Height + 5 ;
end;
Coluna := 20 ;
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(‘Codigo’).AsString);
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(‘Nome’).AsString);
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName(‘End’).AsString);
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha – Printer.Canvas.Font.Height + 5 ;
Table1.Next;
if Linha > Printer.PageHeight-20 then
Begin
Printer.NewPage;
Linha := 20;
end;
end;
Printer.EndDoc;
end;
———————————————————————-
procedure TFOrcamento.ImprimirClick(Sender: TObject);
Var
Linha, Coluna, Quantidade : Integer;
IndiceHorizontal, IndiceVertical, Total, TotalGeral : Real;
Codigo : String;
Begin
With IBQimprime do
begin
close;
sql.Clear;
sql.Add(‘ Select orcamento.*, orcamentodet.*, empresa.fantasia, empresa.fone, atendente.nome ‘ +
‘ from orcamento ‘ +
‘ left join orcamentodet on orcamento.id = orcamentodet.idorcamento ‘+
‘ left join empresa on orcamento.idempresa = empresa.id ‘ +
‘ left join atendente on orcamento.idatendente = atendente.id ‘+
‘ where orcamento.id = ‘ + QuotedStr(DBEdit2.Text));
open;
end;
Imprimir.Enabled := False;
Cursor := crHourGlass;
IndiceHorizontal := Printer.PageWidth / 960;
IndiceVertical := Printer.PageHeight / 792;
Printer.canvas.font.Name := ‘Arial’;
Printer.Orientation := poPortrait;
Printer.BeginDoc;
Linha := 0;
Quantidade := 0;
TotalGeral := 0;
With IBQimprime do
Begin
First;
While not eof do // para imprimir toda a tabela
Begin
With Printer.Canvas do
Begin
If Linha = 0 then
Begin
Printer.canvas.font.Name := ‘Monotype Corsiva’;
Printer.canvas.font.style:=[fsitalic];
Font.Size := 20;
Coluna := Round(15 * IndiceHorizontal);
TextOut(Coluna, Linha, IBQimprimeFANTASIA.text);
Coluna := Round(720 * IndiceHorizontal);
TextOut(Coluna, Linha, DateToStr(Now));
Linha := Linha + Round(23 * IndiceVertical);
Coluna := Round(250 * IndiceHorizontal);
Printer.canvas.font.Name := ‘Arial’;
Printer.canvas.font.style:=[];
Font.Size := 20;
TextOut(Coluna, Linha, ‘Emissao do Orçamento ‘);
Linha := Linha + Round(28 * IndiceVertical);
Font.Size := 9;
Coluna := 0;
TextOut(Coluna, Linha, ‘CÓDIGO’);
Coluna := Round(90 * IndiceHorizontal);
TextOut(Coluna, Linha, ‘QUANT’);
Coluna := Round(170 * IndiceHorizontal);
TextOut(Coluna, Linha, ‘VALOR’);
Linha := Linha + (Round(25 * IndiceVertical));
End;
Coluna := 0;
Codigo := IntToStr(IBQimprimeIDPRODUTO.Value);
TextOut(Coluna, Linha, Codigo);
Coluna := Round(90 * IndiceHorizontal);
TextOut(Coluna, Linha, floattostr(IBQimprimeQTDE.Value));
Total := IBQimprimeTOTAL1.Value;
TotalGeral := TotalGeral + Total;
Quantidade := Quantidade + 1;
Coluna := Round(170 * IndiceHorizontal);
TextOut(Coluna, Linha, FloatToStrF(Total, ffFixed, 10, 2));
Linha := Linha + Round(20 * IndiceVertical);
If Linha >= 600 then
Begin
Linha := 0;
Printer.NewPage;
End;
End;
IBQimprime.Next;
End;
End;
Printer.Canvas.Font.Size := 10;
Linha := Linha + Round(25 * IndiceVertical);
If Linha > 600 then
Printer.NewPage;
Coluna := 0;
Printer.Canvas.TextOut(Coluna, Linha, ‘QUANTIDADE TOTAL DE ÍTENS: ‘ + IntToStr(Quantidade));
Linha := Linha + Round(25 * IndiceVertical);
Printer.Canvas.TextOut(Coluna, Linha, ‘VALOR TOTAL: ‘ + FloatToStrF(TotalGeral, ffCurrency, 10, 2));
Printer.EndDoc;
Cursor := crDefault;
———————————————————————–
implementation
Uses Printers;
{$R *.DFM}
procedure TForm1.BtnScanPrintersClick(Sender: TObject);
begin
if Printer.PrinterIndex = -1 then
ShowMessage(‘Não há impressoras instaladas.’);
ListBox1.Items := Printer.Printers;
ListBox1.ItemIndex := Printer.PrinterIndex;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
I, Linha, HeightLine: Integer;
begin
Memo2.Lines.Clear;
// Zera a variável
Linha := 0;
// Verifica se tem alguma impressora instalada
if Printer.PrinterIndex = -1 then
Exit;
try
With Printer do
begin
if ListBox1.ItemIndex = -1 then
begin
ShowMessage(‘Lista de impressoras não disponível.’);
Exit;
end;
PrinterIndex := ListBox1.ItemIndex;
Printer.Title := ‘Impressão de Teste’;
BeginDoc;
Memo2.Lines.Add(‘Imprimindo…’);
// Calcula a altura da linha
HeightLine := Trunc(Printer.Canvas.TextHeight(‘My’)*1.1);
for I := 0 to Memo1.Lines.Count -1 do
begin
Canvas.TextOut(50, Linha, Memo1.Lines[I]);
// Calcula a altura da próxima linha
Linha := Linha + HeightLine;
// Se passou do final da página
if Linha >= Printer.PageHeight then
begin
Printer.NewPage;
Linha := 0;
end;
end;
// Termina Impressão
EndDoc;
Memo2.Lines.Add(‘Impressão finalizada com sucesso.’);
end;
except
ShowMessage(‘Erro ao tentar imprimir ou impressora não disponivel.’);
Memo2.Lines.Add(‘Impressão finalizada com erro.’);
end;
end;
————————————————————————
uses Printers;
begin
Printer.BeginDoc;
Printer.Canvas.TextOut(iColuna, iLinha, ‘texto a ser exibido’);
Printer.EndDoc;
end;

if PrintDialog1.Execute then begin

vPrinterLinha := 0;

vFormulario := 66;

Canvas.Font.Name := ‘Courier New’;

Canvas.Font.Size := 8;

Printer.BeginDoc;

with Printer do begin

vPrinterLinha := 1;

vAltura := Canvas.TextHeight(‘A’);

cdsRel.Last;

cdsRel.First;

try

for vI := 1 to cdsRel.RecordCount do begin

vString := cdsRel.Fieldbyname(‘LinRel’).Value;

Canvas.TextOut(0, (vI – 1) * vAltura, vString);

inc(vPrinterLinha);

cdsRel.Next;

if vPrinterLinha > vFormulario – 3 then begin

Printer.NewPage;

vPrinterLinha := 1

end;

end;

finally

EndDoc;

end;

end;

end;

Read the rest of this entry »

Delphi: Funções Matemáticas

1

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi

Funções Matematicas do Delphi

O artigo irá mostrar as principais funções matemáticas utilizadas tanto pelo Delphi quanto no Kylix. Para quem é amante da matemática e utiliza o recurso da informática (na programação) para calcular, não pode deixar de ler este artigo que contém várias funções para cálculo, tais como: cáculo de ângulos, médias e muito mais.

Mas, porque deste artigo, se as mesmas podem ser encontradas no Help do Delphi? Ai é que está! As definições do help estão em inglês e para uma pessoa que não entenda este idioma ficaria difícil descobrir para que servem determinadas funções. Por isso este artigo, que irá facilitar a vida de milhares de programadores que têm dificuldade com o inglês. Agora deixamos de muita convera e vamos ao que interessa. Confira as principais funções com suas respectivas definições e como declará-las.

Read the rest of this entry »

Delphi: QuickReport Marca d’agua

1

Postado em : 19-07-2009 | By : Paulo H Oliveira | In : Delphi
Esta dica nos mostra como colocar uma imagem de fundo na página, simulando o efeito marca d’água. Para tal, declaremos a procedure:
procedure ImprimeBitMap(Cnv: TCanvas; BitMap: TBitMap; R: TRect);
var
Info : PBitMapInfo;
InfoSize : DWORD;
Image : Pointer;
ImageSize : DWORD;
begin
with BitMap do
begin
GetDIBSizes(Handle, InfoSize, ImageSize);
GetMem(Info, InfoSize);
try
Getmem(Image, ImageSize);
try
GetDIB(Handle, Palette, Info^,Image^);
with Info^.bmiHeader do
StretchDIBits(Cnv.Handle, R.Left, R.Top,
R.Right – R.Left, R.Bottom – R.Top,
0, 0, biWidth, biHeight, Image,
Info^, DIB_RGB_COLORS, SRCAND);
finally
FreeMem(Image, ImageSize);
end;
finally
FreeMem(Info, InfoSize);
end;
end;
end;
Antes de usá-la, crie/copie uma imagem de tonalidade clara para a unidade C:, e no evento AfterPrint da última banda existente no seu relatório (normalmente PageFooter), faça:
procedure TForm1.PageFooterBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
const
Imagem = ‘c:\figura.bmp’;
//altere aqui o nome/caminho da sua imagem
var
BitMap : TBitMap;
R      : TRect;
X, Y   : integer;
begin
BitMap := TBitMap.Create;
try
if not FileExists(Imagem) then
begin
messagebox(handle,
‘O arquivo de imagem não existe ou foi removido !’,
‘Atenção’, MB_OK or MB_ICONWARNING);
SetActiveWindow(Application.Handle);
end
else
begin
BitMap.LoadFromFile(Imagem);
with QuickRep1.QRPrinter do
begin
Y := YPos(PaperLengthValue) div 6;
X := XPos(PaperWidthValue) div 4;
R := Rect(X, 2 * Y, 3 * X, 4 * Y);
ImprimeBitMap(Canvas, BitMap, R);
end;
end;
finally
BitMap.Free;
end;
end;
Agora é só rodar e testar! ;-)
Só lembrando que, como qualquer outro código nos eventos Befor e AfterPrint, não funciona em Design Time.

Esta dica nos mostra como colocar uma imagem de fundo na página, simulando o efeito marca d’água. Para tal, declaremos a procedure:

Read the rest of this entry »

Delphi: Incluir Zeros (0) a esquerda

0

Postado em : 23-06-2009 | By : Paulo H Oliveira | In : Delphi
Function StrZero(n:Real;t:byte):String;
var
s : String;
i : Integer;
begin
str(n:t:0,s);
for i := 1 to length(s) do
if s[i] = ‘ ‘ then
s[i] := ’0′;
StrZero := s;
End;

Delphi: Limpa os objetos dentro de um panel

0

Postado em : 23-06-2009 | By : Paulo H Oliveira | In : Delphi
Procedure LimpaPanelEdtP(p : TPanel);
var
i : Integer;
begin
with p do
for i := 0 to ControlCount – 1 do begin
if (Controls[i] is TEdit) then
TEdit(Controls[i]).Text := ”;
if (Controls[i] is TMaskEdit) then
TMaskEdit(Controls[i]).Text := ”;
if (Controls[i] is TRxSpinEdit) then
TRxSpinEdit(Controls[i]).Value := 0;
if (Controls[i] is TComboEdit) then
TComboEdit(Controls[i]).Text := ”;
if (Controls[i] is TRxLookupEdit) then
TRxLookupEdit(Controls[i]).Text := ”;
if (Controls[i] is TDateEdit) then
TDateEdit(Controls[i]).Text := ”;
if (Controls[i] is TRxCalcEdit) then
TRxCalcEdit(Controls[i]).Value := 0;
if (Controls[i] is TMemo) then
TMemo(Controls[i]).Lines.Clear;
if (Controls[i] is TCheckBox) then
TCheckBox(Controls[i]).Checked := False;
end;
end;

Delphi: Carrega os objetos dentro de um panel com os registros do TQuery

0

Postado em : 23-06-2009 | By : Paulo H Oliveira | In : Delphi
procedure LoadFields(p: TGroupBox; t: TQuery);
var
i : Integer;
begin
with p do begin
for i := 0 to ControlCount – 1 do begin
{ Edit }
if (Controls[i] is TEdit) then
TEdit(Controls[i]).Text := t.FieldByName(TEdit(Controls[i]).Name).AsString;

{ MaskEdit }
if (Controls[i] is TMaskEdit) then
TMaskEdit(Controls[i]).Text := t.FieldByName(TMaskEdit(Controls[i]).Name).AsString;

{ ComboBox }
if (Controls[i] is TComboBox) then
if TComboBox(Controls[i]).Style = csDropDown then
TComboBox(Controls[i]).Text := t.FieldByName(TComboBox(Controls[i]).Name).AsString
else if TComboBox(Controls[i]).Style = csDropDownList then
TComboBox(Controls[i]).ItemIndex := t.FieldByName(TComboBox(Controls[i]).Name).AsInteger;

{ CurrencyEdit }
if (Controls[i] is TCurrencyEdit) then
if TCurrencyEdit(Controls[i]).DecimalPlaces = 0 then
TCurrencyEdit(Controls[i]).Value := t.FieldByName(TCurrencyEdit(Controls[i]).Name).AsInteger
else
TCurrencyEdit(Controls[i]).Value := t.FieldByName(TCurrencyEdit(Controls[i]).Name).AsFloat;

end;
end;
end;

Delphi: Salva todos os objetos na base de dados de um panel

0

Postado em : 23-06-2009 | By : Paulo H Oliveira | In : Delphi
procedure SaveFields(p: TGroupBox; t: TQuery);
var
i : Integer;
begin
with p do begin
for i := 0 to ControlCount – 1 do begin
{ Edit }
if (Controls[i] is TEdit) then
t.FieldByName(TEdit(Controls[i]).Name).AsString := TEdit(Controls[i]).Text;

{ MaskEdit }
if (Controls[i] is TMaskEdit) then
t.FieldByName(TMaskEdit(Controls[i]).Name).AsString := TMaskEdit(Controls[i]).Text;

{ CurrencyEdit }
if (Controls[i] is TCurrencyEdit) then
if TCurrencyEdit(Controls[i]).DecimalPlaces = 0 then
t.FieldByName(TCurrencyEdit(Controls[i]).Name).AsInteger := Trunc(TCurrencyEdit(Controls[i]).Value)
else
t.FieldByName(TCurrencyEdit(Controls[i]).Name).AsFloat := TCurrencyEdit(Controls[i]).Value;

{ ComboBox }
if (Controls[i] is TComboBox) then
if TComboBox(Controls[i]).Style = csDropDown then
t.FieldByName(TComboBox(Controls[i]).Name).AsString := TComboBox(Controls[i]).Text
else if TComboBox(Controls[i]).Style = csDropDownList then
t.FieldByName(TComboBox(Controls[i]).Name).AsInteger := TComboBox(Controls[i]).ItemIndex;
end;
end;
end;

Delphi: Fecha todas as bases de um Form

0

Postado em : 23-06-2009 | By : Paulo H Oliveira | In : Delphi
procedure CloseBases(f: TCustomForm);
var
i : Integer;
begin
with f do begin
for i := 0 to ComponentCount – 1 do begin
{ Query’s }
if (Components[i] is TQuery) then
TQuery(Components[i]).Close;

{ Table’s }
if (Components[i] is TTable) then
TTable(Components[i]).Close;
end;
end;
end;

Delphi: funções de replace de strings

0

Postado em : 23-06-2009 | By : Paulo H Oliveira | In : Delphi
function Repl(c: Char; tam: byte):String;
var
i : Byte;
st : String;
begin
st := ”;
for i := 1 to tam do
st := st + c;
repl := st;
End;

function Repl2(c: String; tam: byte):String;
var
i : Byte;
st : String;
begin
st := ”;
for i := 1 to tam do
st := st + c;
repl2 := st;
End;


Function PadR(st:String; t:byte; c: char):String;
begin
while length(st) <>
st := st + c;
st := copy(st,1,t);
PadR := st;
End;

Function PadL(st:String; t:byte; c: char):String;
begin
while length(st) <>
st := c + st;
st := copy(st,1,t);
PadL := st;
End;