Arquivos | Delphi RSS for this section

Acessando os valores selecionados de um TCXGrid

Olá

hoje vamos um exemplo simples para recuperar os valores de células selecionadas e adicioná-las a um TMemo

GetColumnByFieldName(‘NomeDaColuna’).Index ->Pesquisa a coluna no grid e retorna o indice dessa coluna;
ViewData.DataController.GetSelectedCount -> retorna o total de linhas selecionadas
ViewData.DataController.GetSelectedRowIndex(I) -> retorna o indice da linha usando o indice da coluna selecionada
ViewData.Records[Row].Values[Indice_coluna] -> Posiciona a linha retorna o  valor da coluna;

procedure ValoreSelecionados();
var
  I : Integer;
  Selecionados: Integer;
  Row : Integer;
begin
  Memo1.Clear;
  Selecionados := tblDados.ViewData.DataController.GetSelectedCount;
  for I := 0 to Selecionados - 1 do
  begin
    Row := tblDados.ViewData.DataController.GetSelectedRowIndex(I);
    Memo1.Lines.Add(tblDados.ViewData.Records[Row].Values[tblDados.GetColumnByFieldName('Nome').Index]);
  end;
end;

Até

Trabalhando em modo desconectado com UniDAC

Modo desconectado é uma forma de se tralhar com banco de dados sem manter a conexão  FULL TIME aberta ou seja, a conexão é aberta somente no momento em quem uma transação é requerida e fechada imediatamente apos a transação ser concluída.

Em sistemas onde a aplicação é divida em 3 ou mais camadas, esse tipo de transação é muito utilizado, como em php, onde a conexão é aberta somente no momento da execução do script logo apos é encerrada e o servidor web é desconectado do banco de dados.

Quando trabalhamos com Delphi não temos esse conceito, pois a aplicação se mantem conectada durante toda o tempo em que o sistema persiste em memória, mantendo um conexão aberta para cada instancia da aplicação,

Quando se tem o numero necessário de licenças de banco de dados, isso não é problema, mas quando esse numero de licenças é limitado, e teremos mais clientes conectadas ao bando do que licenças adquiridas, trabalhar em modo desconectado se torna uma boa opção.

para usarmos esse processo com unidac devemos setar:

TCustomDAConnection.Close ou TCustomDAConnection.Disconnect
TCustomDAConnection.Options.DisconnectedMode para True.

pronto, agora as conexões são abertas e fechadas automaticamente, o que permite que o próximo usuário concorrente posa usar a mesma licença de banco de dados.

mas lembre-se que caso o sistema abra a conexão explicitamente com TCustomDAConnection.Open ou TCustomDAConnection.Connect

a conexão ficara aberta;
Mais informações podem ser lidas em:  http://www.devart.com/sdac/docs/index.html?work_disconnectmode.htm

Exportar um TcxDBPivotGrid para Excel

esse é curtinho:

add a Uses cxExportPivotGridLink, Winapi.ShellAPI;

crie a procedure:

procedure ExportarParaExcel()
begin
try
if dlgSalvar.Execute() then
begin

cxExportPivotGridToExcel(dlgSalvar.FileName, pivFluxo);

if Application(‘Deseja visualizar o arquivo’, ‘Exportação’, mbYesNo) = mryes then
begin
ShellExecute(Handle, ‘open’, pchar(dlgSalvar.FileName), nil, nil, SW_SHOW);
end;
end;
except
on E: Exception do
ShowMessage(‘Ocorreram erros na exportação: ‘ + sLineBreak + E.Message);
end;

End;

Exportar um TcxDBTreeList para Excel

Olá

Nesse post vou demonstrar como exportar registro de um grid para um arquivo do tipo .XLS

add a uses

cxTLExportLink, Winapi.ShellAPI;

crie a procedure:

procedure ExportarParaExcel()
begin
cxExportTLToExcel(‘grid.xls’, dbeBalancete, True, True, True);
ShellExecute(Handle, ‘open’, pchar(‘grid.xls’), nil, nil, SW_SHOW);
End;

dica rápida: Exportar tcxGrid para excel

Olá

Nesse post vou demonstrar como exportar registro de um grid para um arquivo do tipo .XLS

add a uses

cxGridExportLink, Winapi.ShellAPI;

crie a procedure:

procedure ExportarParaExcel()
begin
ExportGridToXLS(‘grid.xls’,Grade, False);
ShellExecute(Handle, ‘open’, pchar(‘grid.xls’), nil, nil, SW_SHOW);
End;

tente também:

  ExportGridToHTML();
      ExportGridToFile();
      ExportGridToXML();
      ExportGridToText();
      ExportGridToXLSX();

Como chamar o arquivo de ajuda no Delphi XE2

Olá, mais uma dica para ajudar ao meus queridos alunos.

No Delphi XE2 temos uma classe para chamar arquivos de ajuda tipo chm

para isso addicione Vcl.HtmlHelpViewer a Uses do programa.
e no evento keypress do form chame o helpcontext da applicação

veja o exemplo

——————————————————————————

unit UntHelp;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Vcl.HtmlHelpViewer;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Application.HelpFile := ‘help.chm’; // o arquivo de ajuda deve estar no mesmo diretório do executável
   KeyPreview:= True;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key = VK_F1 then
  begin
    Application.HelpContext(50);
  end;
end;

end.

Chamar um HTMLHelp (.chm)

Tem coisas que a Borland, Codegear ou  Embarcadeiro abandonam, e as funções de integração de novos help são uma telas
para ajudar a chamar o help vou postar um exemplo tirado do arquivo de dicas de help de como chamar um help com extensão chm.

procure no seu computador a OCX hhctrl.ocx, caso não a encontre baixeo arquivo aqui e salve no diretório c:\windows\System32 ou na pasta do seu executável.

No formulário principal, logo após o primeiro uses da seção Interface, defina :

function HtmlHelp(hwndCaller: THandle; pszFile: PChar; uCommand:  cardinal;
                  dwData: longint): THandle; stdcall; external 'hhctrl.ocx' name 'HtmlHelpA' ;

No OnCreate do formulário principal faça o seguinte :

Application.OnMessage := ChamaHelp ;

Agora é só usar essa procedure

procedure TfrmPrincipal.ChamaHelp(var Msg: TMsg; var Handled: Boolean);
begin
   if  (Screen.ActiveForm.ClassName = 'TMessageForm') = false then
      if  Msg.message = WM_KEYDOWN then
         if  Msg.wParam = VK_F1 then
             HtmlHelp(Screen.ActiveForm.Handle,  PChar(Arquivo_de_Help.chm), 
                      $F, Screen.ActiveForm.HelpContext ) ;
end;

Pronto. Ao apertar a tecla F1 em qualquer parte do projeto o help será chamado, desde que o no formulário ativo, onde for pressionada o F1 a propriedade HelpContext esteja preenchida.

Importante:

Não coloque o nome do arquivo de help no Project>Options>HelpFile, nem no Application.HelpFile, pois ao pressionar F1 a aplicação tentará carregar o Htmlhelp (.CHM) que estiver lá , gerando uma exception pois o formato CHM não é suportado pelo Delphi .

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 565 outros seguidores