quinta-feira, 21 de junho de 2012
Identificar componente ao passar o mouse por cima do mesmo
> Crie um tipo [Record]
TRectControles = record
uRect: TRect;
uControle: TControl;
end;
> Em [private], crie um array dinâmico do tipo [TRectControles], um método, para pegar a posição inicial dos controles [AtualizaPosicaoControles], e um método para retornar informações sobre o controle [ConsultaControle]
private
{ Private declarations }
vp_Rect: array of TRectControles;
procedure AtualizaPosicaoControles;
function ConsultaControle: string;
[implementation]
// AtualizaPosicaoControles
procedure TForm1.AtualizaPosicaoControles;
var
vl_i, vl_TamVetor: Integer;
begin
for vl_i := 0 to Self.ComponentCount - 1 do
begin
if Components[vl_i].InheritsFrom(TControl) and (Components[vl_i].ClassType <> TForm) then
begin
vl_TamVetor:= Length(vp_Rect);
SetLength(vp_Rect, vl_TamVetor + 1);
with vp_Rect[High(vp_Rect)] do
begin
uRect:= TControl(Components[vl_i]).BoundsRect;
uControle:= TControl(Components[vl_i]);
end;
end;
end;
end;
// ConsultaControle
function TForm1.ConsultaControle: string;
function PosMouseForm: TPoint;
var
vl_ponto: Tpoint;
begin
vl_ponto:= Self.ClientOrigin;
with vl_ponto do
begin
x:= Mouse.CursorPos.x - x;
y:= Mouse.CursorPos.y - y;
if (x < 0) or (x > Self.Width) or (y < 0) or (y > Self.Height) then
begin
y:= -1;
x:= -1;
end;
end;
Result:= vl_ponto;
end;
Var
vl_mp : TPoint;
vl_i: Integer;
vl_ClassRef: TClass;
begin
vl_mp:= PosMouseForm;
for vl_i := 0 to Length(vp_Rect) - 1 do
begin
If PtInRect(vp_Rect[vl_i].uRect, vl_mp) Then
Begin
if vp_Rect[vl_i].uControle <> nil then
begin
vl_ClassRef := vp_Rect[vl_i].uControle.ClassType;
with vp_Rect[vl_i].uControle do
begin
while vl_ClassRef <> nil do
begin
Result:= Result + vl_ClassRef.ClassName + #13;
vl_ClassRef := vl_ClassRef.ClassParent;
end;
ShowHint:= True;
Hint:= Result;
end;
Exit;
end;
End;
end;
end;
> No evento [onCreate] do Form;
procedure TForm1.FormCreate(Sender: TObject);
begin
AtualizaPosicaoControles;
end;
> Coloque um componente TTime no Form com intervalo = 1 e Enable = True, no evento [onTimer];
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ConsultaControle;
AtualizaPosicaoControles;
end;
quarta-feira, 13 de junho de 2012
Projeto Controlador post 3
... Olá galera, hoje criaremos mais uma propriedade para nosso componente, criaremos a propriedade [Ativo], que indicará o estado do componente.
... Olá galera, hoje criaremos mais uma propriedade para nosso componente, criaremos a propriedade [Ativo], que indicará o estado do componente.
- Abra o arquivo CompControlador.pas.
- Em [private], adicione a variável F_Ativo do tipo Booleana
- Adicione os métodos [GetAtivo, SetAtivo]
- Em [published], adicione a propriedade [Ativo], [defaut] >> false, nosso componente, terá a propriedade [Ativo], como valor inicial defaut falso.
- No método [Create], adicione [Ativo:= False]
- Salve tudo e compile
- Abra um novo projeto ou form, coloque o componente, e verifique a existência da nova propriedade
...é isso ai galera, até a próxima onde criaremos nosso primeiro efeito visual, a grid...
Embarcadero promove concurso de
desenvolvimento de aplicações móveis e premia melhores aplicativos para iOS...
desenvolvimento de aplicações móveis e premia melhores aplicativos para iOS...
site para inscrição: http://www.edobrasil.net/concursocultural/
terça-feira, 12 de junho de 2012
Projeto Controlador post 2
...Olá galera, vamos definir novas propriedades e eventos para nosso componente, abra o arquivo CompControlador.pas
Em [published], defina;
...No proximo post iremos definir uma propriedade chamada [Ativo], que definirá o estado de nosso componente, ainda temos muito trabalho pela frente, até a proxima...
...Olá galera, vamos definir novas propriedades e eventos para nosso componente, abra o arquivo CompControlador.pas
- Definiremos um controle para nosso componente então criaremos uma propriedade chamada [Controle];
- Declare uma variável em [private] do tipo TWinControl;
- Declare dois metodos;
Em [published], defina;
- Implemente GetControle;
- Implemente SetControle;
- Compile seu componente, irá aparecer uma tela;
- Clica em [OK].
- Agora se formos usar nosso componente, veremos que o mesmo tem uma propriedade chamada Controle
...No proximo post iremos definir uma propriedade chamada [Ativo], que definirá o estado de nosso componente, ainda temos muito trabalho pela frente, até a proxima...
segunda-feira, 11 de junho de 2012
Projeto Controlador post 1
- Criaremos o esqueleto do componente;
- Criaremos o esqueleto do componente;
- Crie uma pasta no seu computador com o nome Controlador
- No Delphi [File - New - Package]
- [File - Save All], salve com o nome Controlador, na pasta que você criou.
- Dentro da pasta serão criados 4 arquivos e uma pasta chamada _History
- Voltando ao Delphi, vá em [File - New - Other... - Delphi Files - Component]
- Clica no botão [OK].
- Agora selecionaremos a classe que iremos herdar para nosso componente, como o mesmo não será visual então herdaremos de TComponent, e clica em [Next].
No Delphi você já pode ver o esqueleto do componente
- Vá em [File - Save All] e salve a unit como CompControlador.pas
- Agora escreveremos o método Create e Destroy do mesmo
- No Project Manager Selecione o projeto, e com botão direito do mouse clica em [Compile]
- Faça a mesma ação mas agora selecione [Install].
- Salve tudo, crie um projeto qualquer ou um form, vá em seu [Tool Palette], e observe o seu novo componente
- Você já poderá adicionar a seu projeto ou form
- Arquivos da pasta.
(... é isso ai galera, o primeiro post é esse, no próximo post, iremos adicionar as novas propriedades e eventos, até a próxima...)
domingo, 10 de junho de 2012
Olá Delphianos, vou postar um artigo de criação de um componente que chamarei de Controlador, e o dividirei em varias partes...
O que o componente fará;
- Movimentar outros controles em rum-time.
- Salvar Layouts em arquivo (*.xml), compatível para qualquer ClientDataSet.
- Criar para o usuário uma interface de ajuda (Incluindo uma grid para desenho).
- Carregar e executar layout.
No próximo post começaremos com a criação do mesmo, e nos posts seguintes iniciaremos a inclusão das propriedades e eventos..., até a próxima...
sexta-feira, 1 de junho de 2012
Para quem gosta de estilizar a IDE do Delphi como a imagem abaixo, segue o link de um programa que facilita o trabalho:
http://dl.dropbox.com/u/12733424/Blog/Delphi%20IDE%20Theme%20Editor/Setup_DelphiIDEThemeEditor.exe
http://dl.dropbox.com/u/12733424/Blog/Delphi%20IDE%20Theme%20Editor/Setup_DelphiIDEThemeEditor.exe
Assinar:
Postagens (Atom)