Esse artigo faz parte da revista Clube Delphi edição 6. Clique aqui para ler todos os artigos desta edição



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

COLUNA DO LEITOR

 

Obtendo os Nomes das Tabelas e dos Campos

 

Galera,

 

Estou fazendo uma pequena aplicação e preciso disponibilizar um recurso que desconheço como fazê-lo. O que quero fazer é o seguinte:

Dado um banco de dados, preciso descobrir quais tabelas fazem parte desse banco e a partir da escolha de uma dessas tabelas, preciso descobrir quais são os campos existentes nessa tabela.

Gostaria de esclarecer também que estou usando um banco de dados Paradox.

 

Qualquer ajuda será bem vinda.

 

Desde já agradeço a todos pela atenção e aguardo uma resposta dos amigos.

 

Alexandre.

 

Caro Alexandre,

 

O objetivo TSession possui um método chamado GetTableNames, que retorna, em uma lista, os nomes das tabelas de um determinado banco de dados. Exemplo:

 

uses

dbtables;

 

Session.GetTableNames(‘DBDEMOS’,

‘*.db’,False, False,Memo1.Lines);

 

E para obter os campos, utilize a propriedade FieldList do componente TTable, mas é preciso que a tabela seja aberta para obter os campos.

 

Exemplo:

 

Memo1.Lines := table1.FieldList;

 

Equipe de Suporte,

Clube Delphi

 

Arquivo de Recursos (.res)

 

Olá amigos, tenho mais uma dúvida, gostaria da ajuda de vocês mais uma vez!!!

Criei um arquivo .RES baseado em uma tabela de strings, no qual inseri msg, etc.

Usei a diretiva de compilação {$R teste.RES} no aplicativo e com o comando LoadStr(12), consegui puxar cada string desejada para utilizá-la em um Showmessage por exemplo.

Bom, até aí tudo bem, deu tudo certo com strings, só que agora eu quero fazer o mesmo com bitmaps e não consigo fazer um código que puxe um determinado bitmap de um arquivo de nome CIFRAS.RES que criei, para um objeto TImage ou qualquer outro que trabalhe com imagem.

Como faço para localizar uma ds figuras do arquivo de recurso “CIFRAS.RES” e joga-la em qualquer objeto de imagem?

 

Certo de que serei atendido, deixo aqui os meus agradecimentos.

[]’s

Lúcio Torres

 

Caro Lúcio,

 

O objeto TBitmap possui um método do chamado ‘LoadFrom ResourceName’, e em um de seus parâmetros, deve ser informado o nome da figura definido pelo ImageEditor, daí fica fácil, veja no exemplo:

 

function ExibeFigura(Nome:

string):TBitmap;

var

bmp: TBimap;

begin

bmp := TBitmap.Create;

bmp.LoadFromResourceName

(HInstance, Nome);

Result := bmp;

end;

 

procedure TForm1.SpeedButton1

Click(Sender: TObject);

begin

Image1.Picture.Bitmap :=

ExibeFigura(‘Figura1’);

end;

 

Equipe de Suporte,

Clebe Delphi

 

Verificando se o foco está em um componente

 

Como faço para saber se o foco está em determinado componente?

 

Roberto Couto dos Santos

 

Sobre o foco, use a propriedade Focused (do tipo boolean).

 

if Edit1.Focused then ...

 

Equipe de Suporte,

Clebe Delphi

 

QuickReport

 

Como faço para salvar um arquivo gerado no QuickReport sem o usuário clicar o botão de salvar? E depois como faço para abrir?

 

Andréa Bianchi

 

Andréa,

 

Para salvar o relatório:

QuickRep1.QRPrinter.

Save(‘C:\QuickRep.qrp’);

 

Para abrir um relatório:

 

QuickRep1.QRPrinter.

Load(‘c:\QuickRep.qrp’);

 

Equipe de Suporte,

Clube Delphi

 

Erro: Blob has been modified

 

Caros Amigos,

 

Vocês podem me informar como eliminar este erro, e o que está causando?

Estou utilizando Delphi 3.02 e tabelas Paradox.

 

Muito Obrigado,

 

Rodrigo

 

Já tive este problema e hoje raramente acontece.

Passei a só abrir as tebelas quando abro os forms e quando saio fecho-os.

Quanto aos campos Memo (Blob) deixo na tabela com tamanho 1, e o resto no .mb (este resto é automaticamente armazenado em um arquivo de extensão MB).

Para resolver o problema, na época só localizando o registro com problema e excluindo o registro.

 

Boa sorte, Emerson

 

Como exibir um Form de qualquer lugar em seu projeto

 

Uma dica enviada por Lúcio Torres, mostra como fazer para que ao pressionar uma tecla em qualquer unidade de seu projeto, seja executado um procedimento. Neste exemplo um formulário é exibido:

 

Crie no ProjectSource de seu projeto (*.dpr):

 

program Project1;

 

uses

Forms,

Windows,

Messages,

Unit1 in ‘Unit1.pas’ {Form1},

Unit2 in ‘Unit2.pas’ {Form2},

Unit3 in ‘Unit3.pas’ {Form3},

Unit4 in ‘Unit4.pas’ {Form4{,

Unit5 in ‘Unit5.pas’ {Form5};

 

{$R *.RES}

 

type

TAppMsg = class(TObject)

public

procedure AppMessage(var Msg: TMsg; var Handled:

Boolean);

end;

 

procedure TAppMsg.AppMessage(var Msg: TMsg; var Handled:

Boolean);

begin

case Msg.Message of

WM_KEYDOWN : if MSg.wParam = VK_F2 then

begin

Form4.show; {Coloque o formulário que vc quer chamar}

end;

end;

end;

 

var

AppMsg : TAppMsg;

begin

AppMsg := TAppMsg.Creature;

Application. Initialize;

Application.OnMessage := AppMsg.AppMessage;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm4, Form4);

Application.CreateForm(TForm5, Form5);

Application.Run;

end.

 

[]’s

Lúcio Torres

spatis@fortalnet.com.br