segunda-feira, 4 de julho de 2022

Hint Forma Facil Lazarus

Configuração para mostrar hint automático no status bar



STATUSBAR1.AutoHint: True
STATUSBAR1ShowHint: True

Depois no componente habilita o hint que deseja mostrar


quarta-feira, 13 de abril de 2022

Erro ao compilar aplicacao console Lazarus

 Quando apresentar esse erro ao compilar no Lazarus em uma aplicação console


project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomImageList
project1.lpr(11,1) Error: Undefined symbol: WSRegisterMenuItem
project1.lpr(11,1) Error: Undefined symbol: WSRegisterMenu
project1.lpr(11,1) Error: Undefined symbol: WSRegisterMainMenu
project1.lpr(11,1) Error: Undefined symbol: WSRegisterPopupMenu
project1.lpr(11,1) Error: Undefined symbol: WSRegisterDragImageList
project1.lpr(11,1) Error: Undefined symbol: WSRegisterLazAccessibleObject
project1.lpr(11,1) Error: Undefined symbol: WSRegisterControl
project1.lpr(11,1) Error: Undefined symbol: WSRegisterWinControl
project1.lpr(11,1) Error: Undefined symbol: WSRegisterGraphicControl
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomControl
project1.lpr(11,1) Error: Undefined symbol: WSRegisterScrollingWinControl
project1.lpr(11,1) Error: Undefined symbol: WSRegisterScrollBox
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomFrame
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomForm
project1.lpr(11,1) Error: Undefined symbol: WSRegisterHintWindow
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomScrollBar
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomGroupBox
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomComboBox
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomListBox
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomEdit
project1.lpr(11,1) Error: Undefined symbol: WSRegisterCustomMemo
project1.lpr(11,1) Error: Undefined symbol: WSRegisterButtonControl

Incluir no arquivo principal a unit interfaces.



Uses interfaces, sysutils, ....;]



terça-feira, 9 de fevereiro de 2021

Destacar uma palavra DBGrid

 https://www.devmedia.com.br/forum/destacar-string-no-dbgrid/286652

sábado, 6 de fevereiro de 2021

Chamando Formulario pelo Nome 

https://www.devmedia.com.br/quick-tip-criar-form-a-partir-de-uma-string-parte-2/15722

sexta-feira, 15 de janeiro de 2021

terça-feira, 13 de outubro de 2020

Operation not supported on selected printer

No Delphi7 usando o Fast Report 2.5 quando envia um relatório para a impressora, as vezes,  no Windows 10 e 2012 apresenta a mensagem 

Operation not supported on selected printer.

Para resolver esse problema, antes de fazer um frReport.ShowReport faça o seguinte:

var

  dev,

  driv,

  port: array[0..80] of Char;

  deviceMode: THandle;

begin

  Printer.GetPrinter(dev, driv, port, deviceMode);

  Printer.SetPrinter(dev, driv, port, 0);

  frPreview1.Print;

end;


ps: Adicionar a unit printers no uses da interface.


Solução encontrada no site: https://stackoverflow.com/questions/435144/operation-not-supported-and-printer-selected-is-not-valid-errors-while-print


segunda-feira, 7 de setembro de 2020

 

SetFocus no Firemonkey Delphi.


O Firemonkey do Delphi proíbe a mudança de foco em alguns eventos. Para conseguir contornar a situação do SetFocus dos campos, precisamos mandar um mensagem atrasada para o form.

Como mandar esta mensagem. Simples vamos usar uma Thread Anonima. Pois é depois de muita procura achei um paliativo.

Vamos a Função:

procedure TfrmTelaPadrao.ForceFocus(Obj: TControl);
begin
  TThread.CreateAnonymousThread(
    procedure
    begin
      TThread.Synchronize( nil,
         procedure
         begin
           Obj.SetFocus;
         end
      );
    end
  ).Start;
end;

Espero que tenha ajudado a quem procura.

Origem: https://valedodelphi.blogspot.com/2018/11/setfocus-no-firemonkey-delphi.html

segunda-feira, 15 de junho de 2020

criar nova instancia do delphi limpa


Criar um atalho e na linha do comando colocar
C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\bds.exe"

Depois do executavel do BDS digite -R e nome da nova instancia

ex:
C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\bds.exe"  -R web

quarta-feira, 27 de maio de 2020

Excelente PDF com varias dicas interessantes
Delphi x Firebird

terça-feira, 26 de maio de 2020

ListView Infinito

procedure TForm2.ListView1ScrollViewChange(Sender: TObject);
var
  R: TRectF;
  LItem: TListViewItem;
  I: Integer;

begin
  if TListView(Sender).ItemCount > 0 then // Just in case...
  begin
    // Get the last item's Rect
    R := TListView(Sender).GetItemRect(TListView(Sender).ItemCount - 1);
    // Bottom?
    if R.Bottom = TListView(Sender).Height then
    begin
      Caption := 'Reached bottom!';
      for I := 21 to 40 do
      begin
        LItem := ListView1.Items.Add;
        LItem.Text := IntToStr(I);
      end;

    end
    else
      Caption := 'Bottom not reached yet.';
  end;

end;

segunda-feira, 11 de maio de 2020

Mudar cor da barra de seleção DBGrid

Essa Rotina muda a Cor da Barra de Seleção de uma DBGRID.
Aqui tb está sendo alterado a Cor da Font. (Copiado do site Planeta Delphi) 

procedure TForm1.DBGrid1DrawDataCell(Sender: TObjectconst Rect: TRect; Field: TField; State: TGridDrawState);
begin
   if gdSelected in State then    // verifica se está selecionada
      DBGrid1.Canvas.Brush.Color := clYellow;  // muda a cor
                                                                // da barra

   // Muda a Cor da Fonte
   if Table1.FieldByName('Vip_Status').AsString = 'VIP'  then
      DBGrid1.Canvas.Font.Color := clRed
   else
      DBGrid1.Canvas.Font.Color := clBlack;

      DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

Colocar menu popup ao lado do button

var
vPonto : TPoint;
begin
   vPonto := Button1.ClientToScreen(Point(0, Button1.Height));
    PopUpMenu1.Popup(vPonto.X, vPonto.Y);

quinta-feira, 30 de abril de 2020

Enter como TAB no Delphi Firemonkey

Usar os seguintes comandos no onKeyDown do formulario
if Key = vkReturn then
 begin
 Key := vkTab;
 KeyDown(Key, KeyChar, Shift);
 end;

sábado, 11 de abril de 2020

Instanciar Formulário Delphi

https://marcosalles.wordpress.com/2013/09/14/classe-generica-para-instanciar-dinamicamente/

segunda-feira, 6 de abril de 2020

Rotina para obter versão do Firebird


GBAK -Z -Y VERSAO.TXT

No arquivo VERSAO.TXT vai mostrar a versão do FIREBIRD

sábado, 4 de abril de 2020

WINEXE não funciona DELPHI XE

O WinExec não funciona no DelphiXe, acredito que seja por causa do unicode.

A solucao encontrada foi usar o ShellExecute da seguinte forma.


Interface
    uses ShellApi...;





Procedure Executar;
Var
NomeArquivoExecutar : String;
begin
 NomeArquivoExecutar := 'CALC.EXE';
  ShellExecute(Application.Handle, 'open', pchar(NomeArquivoExecutar), nil, nil, SW_HIDE);


end;



segunda-feira, 22 de julho de 2019

TVertScrollBox

Para posicionar o item dentro de um TVertScrollBox


  VertScrollBox1.ViewportPosition :=  PointF(VertScrollBox1.ViewportPosition.X, Posicao);

sexta-feira, 12 de julho de 2019

Reduzir tamanho imagem

uses Vcl.Imaging.jpeg;


function CAPAS_REDUZ(ORIG,DEST:string; const fWidth, fHeight: integer):Boolean;
var pTemp: TBitmap;
begin
try
try
pTemp := nil;
ptemp := TBitmap.Create;
pTemp.LoadFromFile(ORIG);
if (pTemp.Width > fWidth) or (pTemp.Height > fHeight) then
begin
pTemp := pTemp.CreateThumbnail(fWidth,fHeight);
pTemp.SaveToFile(DEST);
end
else
CopyFile(PChar(ORIG), PChar(DEST), true);
result := true;
finally
FreeAndNil(pTemp);
end;
except
FreeAndNil(pTemp);
result := false;
end;
end;

terça-feira, 9 de julho de 2019

Modelo de uma thread Delphi XE

var vThread: TThread; begin vThread := TThread.CreateAnonymousThread(procedure () var VReturnVersaoApp: string; VTestConnection: Boolean; begin TThread.Synchronize (TThread.CurrentThread, procedure () begin end); end); vThread.FreeOnTerminate := True; vThread.Start();