Quem já trabalhou com TStringGrid com certeza já sentiu falta dos métodos DeleteRow e DeleteColumn. Por algum motivo, a classe TStringGrid não herdou esses métodos de seu ancestral TCustomGrid.
Como esses métodos estão disponíveis de forma protegida em seu ancestral, para resolver este problema podemos criar uma classe herdando TStringGrid e simplesmente acessar os métodos, como exemplo abaixo:
Pesquise no Blog
segunda-feira, 30 de agosto de 2010
DeleteRow e DeleteColumn em TStringGrid
Postado por
Medina
às
20:54
2
comentários
Marcadores: Código-Fonte, Componentes, Intermediário, Propriedades, tutorial
terça-feira, 8 de junho de 2010
Criando uma Tela Inicial (Splash Screen)
1 - Crie um novo form que será sua Splash Screen, não esqueça de mudar o Visible deste form para True.
2 - No menu Project > Options > Forms: retire o form que você criou da lista de auto-create.
3 - Menu Project > View source: isso vai abrir o fonte do projeto.
O bloco begin-end do projeto deve ser algo assim:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.Run;
end.
Abaixo um exemplo de como colocar a Splash Screen pra funcionar enquanto o resto do sistema está carregando:
begin
// isso mostra a Splash Screen
wSplash:= TwSplash.Create( Application );
try
// seu sistema carregando normalmente
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
finally
// fechando Splash Screen
wSplash.Free;
end;
// Sistema carregado e pronto
Application.Run;
end.
------
Isso é o básico, a partir disso você pode ir melhorando, colocar uma imagem na Splash Screen, tirar as bordas. Use a imaginação!
Postado por
Dnv-X
às
16:26
0
comentários
Marcadores: Código-Fonte, Iniciantes, tutorial
terça-feira, 16 de dezembro de 2008
Relatórios com quebras/grupos usando Quick Report
Postado por
Dnv-X
às
21:10
3
comentários
Marcadores: QuickReport, Relatório, tutorial
quarta-feira, 3 de setembro de 2008
Convertendo imagens BMP/JPG(JPEG)
try
// carrega o BMP
aBMP:= TBitmap.Create;
aBMP.LoadFromFile( 'c:\pasta\figura.bmp' );
// cria um novo JPEG
aJPG:= TJPEGImage.Create;
// atribui o BMP ao JPEG
aJPG.Assign( aBMP );
// salva o JPEG
aJPG.SaveToFile( 'c:\pasta\figura.jpg' );
finally
// libera as variáveis
FreeAndNil( aBMP );
FreeAndNil( aJPG );
end;
Não esqueça de incluir as units Graphics e JPEG na cláusula Uses.
Postado por
Dnv-X
às
23:08
0
comentários
Marcadores: Código-Fonte, Imagem, Intermediário
terça-feira, 26 de fevereiro de 2008
Evitar múltiplas instâncias do Programa
O tratamento de múltiplas instâncias do executável é uma praticamuito útil, principalmente quando não queremos que os usuários trabalhem com mais de uma instância de nossas aplicações.
Ja vi muitas gambiarras bizzarras e pouco elegantes para resolver esse problema, neste tutorial vou mostrar uma maneira simples e elegante pare resolver de uma vez por todas esse prblema:
Declare a variável global
var
{...} HMutex: THandle; //Essa variável deve ser GLOBAL
No onCreate do seu form digite o seguinte código
Var
{...} FileName : PChar;
begin
{...}FileName := PChar( ExtractFilePath( Application.Exename ) );
{...} HMutex := createMutex(nil, True, FileName);
{...}if ( HMutex = 0 ) or ( GetLastError = ERROR_ALREADY_EXISTS ) then
{...}{...}raise Exception.Create('O programa já está em execução.');
(* Restante da sua lógica.... *)
end;
No on close
ReleaseMutex( HMutex );
Pronto.
Para saber mais: Exclusão Mútua ( Mutex )
: Win32 Error codes
Postado por
Anônimo
às
22:06
2
comentários
Marcadores: Intermediário
terça-feira, 29 de janeiro de 2008
Trabalhando com Web Services
Bem, hoje vou falar um pouco sobre como trabalhar com web services. Como esse assunto é muito longo, vou passar apenas o básico do básico.
1º Passo: Antes de cair de cara neste artigo certifique-se que vc está por dentro dos seguintes assuntos:
.Conceito de Webservices: http://pt.wikipedia.org/wiki/Webservices
.SOAP: http://pt.wikipedia.org/wiki/Soap
.XML: http://pt.wikipedia.org/wiki/Xml
Os conceitos acima são de suma importância, não deixe de estuda-los.
Ok, agora que vc já leu todo material que citei, estamos prontos para entrar no mundo dos web services. Para este exemplo utilizei:
.Turbo Delphi Explorer;
.IIS
Não vou entrar em detalhes de como configurar o IIS, já que isso pode ser encontrado facilmente aqui:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bc0c4729-e892-4871-b8f3-fcbf489f2f09.mspx?mfr=true
Ok, vamos primeiro criar o servidor: Vá em File/New/Other/Webservices e selecione SOAP Server Application
2º Passo:Selecione a opção ISAPI/NSAPI Dynamic Link Library.
Essa é a carinha da nossa aplicação. Geralmente nada é programado nela, tudo dese ser deixado como está.
3º Passo: Ok, agora vamos criar um SOAPDataModule. Vá em File/New/Other/webservices/SOAP Server Data Module
Uma SoapApplication pode ter vários soap data módules. O soapDataModule pode ser entendido como o webservice em si. A quantidade de SOAPDataModule depende de seu projeto.
4ºPasso, Antes de começar a programar salve e faça os seguintes ajustes no código.
Substitua a linha NomeDaUnit = interface(IAppserverSOAP)
por
NomeDaUnit = interface(IAppserver)
e
nomedaClasse = class(TSoapDataModule, NomeDaInterface, IAppServer, IAppServerSOAP)
por
nomedaClasse = class(TSoapDataModule, NomeDaInterface, IAppServer)
Veja a fugura abaixo:
Agora vamos declarar um método chamodo testeWebService. Repare que podemos declarar métodos que serão usados internamente(só será utilizado dentro do web service) e externamente(Utilizado por outros aplicativos).
Para declarar um método externo precisamos utilzar a diretiva stdcall após a declaração do cabeçalho do método e copia-lo para dentro de interface, veja na figura abaixo:
repare que os metodos testeWebservice e getErrorCode são externos, já que tem a diretiva stdcall e foram declaradas na interface.
vamos fazer uma implementeção simples para o método testeWebservice:
result := 'seu web service está funcionando!'; //Melhor que Olá Mundo....
Pronto, nosso web service está pronto.
Agora basta salvar e dar um build. Pegue a dll compilada e jogue no seu servidor. Depois disso acesse-a pela browser:
localhost/
Você verá algo assim:repare que nossos métodos aparecem logo abaixo. Clique no link WSDL, você vai visualizar um xml, copie o endereço que aparece no browser.
Agora vamos fazer o cliente:
Dê um file/New/VCL Forms Application
Depois dê um FILE/New/Other/WebServices/WSDL Importer
Na tela seguinte, cole o link do WSDL:Clique em Next. Se tudo ocorrer bem, vc verá a seguinte tela:
Clique em finish. Salve a interface com um nome qqr. Se vc não conseguir importar o wsdl significa:
.Seu Servidor pode não estar funcionando;
.Vc não fez os ajustes corretamente.
Ok, Vá agora para o seu form principal e importe a interface do Webservice:Ok, compile.
Agora coloque um button na tela e no evento Onclick coloque o seguinte código:
procedure TForm1.Button1Click(Sender: TObject);
var
ls_WsMessage: String;
begin
ls_WsMessage := IWebService.GetIUWebService().testeWebService;
try
ShowMessage( ls_WsMessage );
except
raise Exception.Create( 'Erro ao acessar o web service!' );
end;
end;
Resultado:
Espero que este pequeno tutorial ajude. Vou disponibilizar este exemplo em public.box.net/hatsumomo
Logo logo mais artigos.
Postado por
Anônimo
às
22:39
0
comentários
Marcadores: Delphi na Web, Intermediário, tutorial
sábado, 26 de janeiro de 2008
Tutorial Firebird - Criando banco de dados
Bom pessoal, creio que muitos dos nossos amigos que estão iniciando na programação em delphi, já utilizaram o paradox ou o access para armazenamento de dados, sei que muitos deles ainda não tiveram tantos problemas como eu tive com esses dois "bancos de dados", por isso, escreverei esta série de tutoriais para ajudar essa turma.
Estou utilizando o FIREBIRD 2.0 e administrando este banco de dados com o IBEXPERT FREE 2005.03.12, mas qualquer IBEXPERT TRIAL ( http://www.ibexpert.com/ ) já vale para o nossa aventura.
Bom primeiro, abra seu IBEXPERT...
Depois no menu database, selecione create database em server name,
colocar 127.0.0.1,
em protocolo, deixar TCP/IP,
em DATABASE, informar a pasta e o nome do novo banco de dados... eu coloquei: C:\tutorial_blog_fernando\dados.fdb
em cliente libray file,
colocar: C:\Arquivos de programas\Firebird\Firebird_2_0\bin\fbclient.dll
em user name, colocar SYSDBA em password, colocar masterkey
em dialect, colocar DIALECT 3
Clique em OK
Abrirá uma tela de registro...
em server version, coloque firebird 2.0,
em database alias, coloque um apelido para este banco de dados que pode ser simplesmente TUTORIAL
clique em register.
Pronto, seu banco de dados está criado e devidamente registrado.
Postado por
Fernando Medeiros
às
20:02
1 comentários
segunda-feira, 21 de janeiro de 2008
Classes Progenitoras para Desenvolvimento de Componentes Visuais
Para a criação de componentes no Delphi, o desenvolvedor pode utilizar outro componente ou uma classe-base para ser seu progenitor. A VCL (Visual Component Lybrary) contém a classe TControl (classe derivada de TComponent) que possui informações sobre componentes visuais como: posição (Left, Top), tamanho(Width, Height), cor (Color), entre outras. As classes de importância para a criação de componentes são TWinControl e TGraphicControl. Estas são subclasses de TControl.
Características da classe TControl e suas subclasses (TWinControl e TGraphicControl)
TComponent: Classe base de todos os componentes. Esta pode ser herdada de outros componentes não visuais.
TControl (TControl é uma classe derivada de TComponent): Controles contém informações como: posição (Left, Top), tamanho(Width, Height), cor (Color), fonte (Font), Ativação (Enabled) e visibilidade (Visible). TControl não podem receber foco ou ser pintado.
TWinControl (TWinControl é uma classe derivada de TControl): Controles de janelas são componentes visuais baseados em janelas. Estes podem receber foco, serem pintados e conter outros controles. Os controles de janelas são utilizados para o desenvolvimento de componentes que realizam determinadas funções dependendo do que acontece no sistema.
TGraphicControl (TGraphicControl é uma classe derivada de TControl): Controles gráficos são componentes visuais. Estes não podem receber foco e conter outros controles. Os controles gráficos são utilizados para o desenvolvimento de componentes com funções básicas de apresentar uma imagem, reduzindo o uso de recursos do sistema.
Por Felipe Ferreira da Silva
Postado por
Dnv-X
às
09:30
0
comentários
Marcadores: Componentes, Iniciantes
sexta-feira, 18 de janeiro de 2008
Queries com Parâmetros
Um recurso muito útil é a utilização de parâmetros em queries.
Com eles, é possível escrever uma query genérica e alterar apenas os valores desejados.
Exemplo: Uma query para pesquisar um cliente pelo código.
Sem usar parâmetros, precisaria duplicar a query várias vezes.
select nome from clientes where id = 1
select nome from clientes where id = 2
select nome from clientes where id = 3
Agora veja como fica melhor usando parâmetros:
select nome from clientes where id = :id
Os ':' (dois pontos) indicam que isso é o valor que será passado como parâmetro.
Com isso, podemos fazer uma consulta bem mais simples:
SQL = 'select nome from clientes where id = :id';
procedure pesquisarCliente(id: integer);
begin
query.Close;
query.ParamByName('id').AsInteger := id;
query.Open;
end;
Postado por
Medina
às
12:49
0
comentários
Marcadores: Iniciantes, Recursos
Canvas - O que é?
Boas pessoal, meu primeiro post no blog e resolvi fazer uma introdução sobre o que é e como utilizar o Objeto Canvas.
Apesar de ter varias citaçoes sobre canvas na internet, nao achei nenhuma que aborde de forma clara o que seja, em sua maioria, são código ja utilizando a propriedade (ou Objeto) para algum tipo de resultado gráfico.
Na verdade a classe TCanvas é um encapsulamento de controles graficos que possui propriedades e metodos que permitem desenhar linhas, graficos, textos, acessar caracteristicas de uma imagem, e acesso ao Windows GDI(Dispositivo de interface grafica), permitindo assim que aplicações possam exibir graficos e textos tanto na tela como na impressora.
Bom, e qual a aplicação real do Canvas?
Durante o desenvolvimento de um projeto qualquer, utilzamos os componentes padrões do IDE como Buttons, edits, toolbars, forms, etc, estes componentes ja tem uma aparencia padrão herdada do Sistema Operacional, e as vezes esta parencia é uma pouco desagradável qua fogem um pouco da interface da Aplicação.
Podemos utilizar entao a propriedade Canvas de alguns desses componentes ou entao instanciar o Objeto Tcanvas para desenhar uma nova aparencia para os controles, um exemplo disso são os componentes Skins.
Outra possibilidade e talvez uma das mais utilizadas é de se poder desenhar gráficos e textos nas areas dos componentes e até mesmo poder acessar suas caracteristicas.
Se utilizarmos a propriedade canvas do form por exemplo, poderemos desenhar linhas, formas(retangulos, circulos, etc), imagens na area do form, se for um TImage, o procedimento sera praticamente o mesmo.
Exemplos:
//Escrevendo um texto no form utilizando canvas:
Form1.canvas.TextOut(10,10,'Isto é um teste');
//Desenhando uma linha
form1.canvas.LineTo(10,50);
//Desenhar uma figura na área do form, que esteja em um TImage:
form1.canvas.StretchDraw(form1.ClientRect,image1.Picture.Graphic);
Podemos trabalhar com o canvas para varias finalidades que necessitem de gráficos desde desenhar uma figura em uma determinada área até plotagem de gráficos de funçoes matematicas.
Bom é isso, espero que este texto possa ser util para seu aprendizado.
Um abraço
NewZeek
Postado por
Eduardo [ NewZeek ]
às
11:03
4
comentários
Marcadores: Iniciantes, Propriedades, Recursos