Caros Ricardos (ehehhehe),
Já que o Berti lembrou a questão do xunxo, resolvi tentar fazer de um jeito
não-xunxo! hehehe... Mas até que ficou simpes... Aliás, falar em xunxo, vocês
já ouviram falar em POG? Dá pra dar umas boas risadas lendo sobre isso
ehhehe... Enfim, veja:
- Você herda o componente TEdit para o TColoredBorderEdit (hehehe)
- No protected, você declara:
procedure WMNCPaint(var Message: TWMNCPaint); message WM_NCPAINT;
- E a implementação desta ficará assim:
procedure TColoredBorderEdit.WMNCPaint(var Message: TWMNCPaint);
var
DC: HDC;
Rect: TRect;
Canvas: TCanvas;
begin
DC := GetWindowDC(Handle);
try
Windows.GetClientRect(Handle, Rect);
// Limpa o fundo edit, pintando tudo da cor definida em Color (original) :)
InflateRect(Rect, 4, 4);
Brush.Color := Color;
Windows.FillRect(DC, Rect, Brush.Handle);
// Desenha a borda!
Canvas := TCanvas.Create;
try
Canvas.Handle := DC;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color := clRed; // Cor da borda!
Canvas.Brush.Style := bsClear;
Canvas.Rectangle(0, 0, Width, Height);
finally
Canvas.Free;
end;
finally
ReleaseDC(Handle, DC);
end;
end;
- E pronto! Pra melhorar, em vez de deixar o clRed fixo ali, você pode criar
uma propriedade no componente que diga qual será a cor da borda! E mais legal
ainda, você pode sobrescrever os eventos DoEnter e DoExit para que, quando ele
entre, você sete a borda de uma cor, e quando saia, sete a borda de outra cor!
Abraços
Henrique
----- Original Message -----
From: Ricardo César Cardoso
To: [email protected]
Sent: Thursday, February 08, 2007 10:41 AM
Subject: Re: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes
Bom dia xará!
Olha... a unica maneira de se criar esses TShapes dinamicamente seria como vc
fez mesmo. Não existe outra alternativa.
Mas eu estava tentando achar no meio da JEDI VCL algum componente que tivesse
essa propriedade que vc precisa, o que evitaria a criação de um TShape
dinamicamente. Mas por enquanto não achei nada.
Até o momento é asua dica que está valendo!
Sds,
Ricardo.
Ricardo Berti <[EMAIL PROTECTED]> escreveu: Legal Ricardo (xará) : p ,
foi bem essa mesmo a idéia, só que no meu caso ele coloca sozinho o TShape
nos TEdit que estiverem na tela sem que haja TShape no form em tempo de
projeto, se q for só um Edit no Form, vale mais já colocar o Shape em Tempo de
Projeto mesmo ; ) Economiza memória!!!
PS: Conheces alguma outra forma de criar dinamicamente os Shapes? Ou o xunxo
(vi esse termo a uns dias aí na lista, rssrsrsr) que eu fiz é suficiente??
Abraços e Bom Código!
Ricardo Berti
----- Original Message -----
From: Ricardo César Cardoso
To: [email protected]
Sent: Wednesday, February 07, 2007 3:52 PM
Subject: Re: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes
Puts xará, fiz um estudo de caso identico ao seu e fiquei com vergonha de
publicar, mas no meu caso usei Left e Top -2 e Height e Width + 4.
Segue abaixo o código:
procedure TForm1.FormCreate(Sender: TObject);
begin
Shape1.Top := Edit1.Top -2;
Shape1.Left := Edit1.Left -2;
Shape1.Width := Edit1.Width + 4;
Shape1.Height := Edit1.Height + 4;
Edit1.Clear;
Memo1.Clear;
end;
OBS: mudei o CTL3D e o BorderStyle em tempo de projeto, mas a lógica é a
mesma.
Ricardo Berti <[EMAIL PROTECTED]> escreveu: Aew Galera, fiz um pequeno
"estudo de caso", hehehe, e vejam o que consegui.
Sou péssimo no que diz respeito a criação dinâmica de componentes, então, se
tiver um jeito melhor, por favor, postem, assim eu aprendo tbm!!!
Encham o seu form de edits e coloca isso no OnActivate.
procedure TForm1.FormActivate(Sender: TObject);
var
I: Integer;
Sp: TShape;
begin
for I := 0 to ComponentCount - 1 do
begin
if Components[I] is TEdit then
with Components[I] as TEdit do
begin
BorderStyle := bsNone; // Assim os edits ficam sem borda, não precisa nem
setar eles como CTL3D em False.
Sp := TShape.Create(Self); // Cria o Shape
Sp.Pen.Color := clLime; //Aqui vai a cor da borda pra ser mudada
Sp.Brush.Color := clBlack; //Eu coloquei em preto, pq ai eu vejo se "vazar"
algum shape
Sp.Left := Left - 1;
Sp.Top := Top - 1;
Sp.Height := Height + 2;
Sp.Width := Width + 2;
Sp.Parent := Form1;
end;
end;
end;
Bom Código
Ricardo Berti
----- Original Message -----
From: Ricardo Berti
To: [email protected]
Sent: Wednesday, February 07, 2007 11:48 AM
Subject: Re: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes
Deixa o Edit com BorderStyle em bsNone e coloca junto com ele um TShape
atrás, de forma que só apareça a borda... ou se quiser fazer isso em muitos
edits, cria uma procedure que leia todos os edits do form e desenhe um TShape
atrás de cada um...
Vou fazer alguns testes aqui e devolvo a vocês!
Bom Código
Ricard Berti
----- Original Message -----
From: Rafael Marques
To: [email protected]
Sent: Wednesday, February 07, 2007 11:31 AM
Subject: Re: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes
eu tentei pelo canvas mas tomei um pau danado e num consegui
:(
eheheehheheheeh
procurei nuns sites e num achei!! talvez alguem tenha algum exemplo
----- Original Message -----
From: Henrique Netzka (Vetor Sistemas)
To: [email protected]
Sent: Wednesday, February 07, 2007 10:11 AM
Subject: Re: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes
Canvas! hahahahaha
não tenho uma solução melhor, desculpe rs............. Só não sei se é tão
simples, já que o Delphi provavelmente mande o Windows desenhar os controles ao
invés de ele mesmo fazê-lo...
abraços
----- Original Message -----
From: Rafael Marques
To: [email protected]
Sent: Wednesday, February 07, 2007 8:38 AM
Subject: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes
Bom Dia!!
alguem sabe como alterar a cor da linha do contorno dos componentes qdo
desabilitamos a propriedade CTRL3D???
por exemplo os Edits. eles ficam sem o relevo e com o contorno em linha
preta!! eu gostaria de , por exemplo, trocar a cor dessa linha pra azul ou
vermelho
mto obrigado!!
Rafael
[As partes desta mensagem que não continham texto foram removidas]
[As partes desta mensagem que não continham texto foram removidas]
----------------------------------------------------------
Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: McAfee VirusScan / Atualizado em 06/02/2007 / Versão: 5.1.00/4957
Proteja o seu e-mail Terra: http://mail.terra.com.br/
[As partes desta mensagem que não continham texto foram removidas]
[As partes desta mensagem que não continham texto foram removidas]
[As partes desta mensagem que não continham texto foram removidas]
__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger
http://br.messenger.yahoo.com/
[As partes desta mensagem que não continham texto foram removidas]
[As partes desta mensagem que não continham texto foram removidas]
__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger
http://br.messenger.yahoo.com/
[As partes desta mensagem que não continham texto foram removidas]
[As partes desta mensagem que não continham texto foram removidas]