Não seria somente criar uma propriedade do tipo "UseDefaultLayout" como 
boolean, e dentro da procedure que faz o repaint, vc verificaria esta 
propriedade... caso fosse false, então utilizaria apenas um "inherited 
WMNCPaint Message); Exit;" o que não iria alterar nada dentro do layout, caso 
contrário, vc faria as modificações....

Seria uma maneira simples de resolver... mas tem que testar pra ver se funciona 
x)

[]'s

Eric D. - Desenvolvimento e Soluções de Tecnologia 
[EMAIL PROTECTED] 
"Talk is cheap, show me the code..." 
  ----- Original Message ----- 
  From: Rafael Marques 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Thursday, February 08, 2007 12:58 PM
  Subject: Re: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes


  só + uma perguntinha tb!!

  eu fiz aqui e fico bem legal, inclusive coloquei a propriedade pro 
programador escolher a cor da borda!!

  mas como faço pra ativar ou desativar esse visual!??! (poderia ser atraves d 
uma propriedade do tipo sim/nao)

  eu tentei aqui e num consegui. Uma vez colocada procedure como vc me 
descreveu, o edit fica com visual excelente e do jeito q eu gostaria realmente, 
mas quero tentar colocar algo pra se o programador quiser q ele volte ao estilo 
"normal" ele consiga , e eu num achei nada q desative, q faça o compilador nao 
"entrar" na rotina descrita!!

  valeu

  Rafael

  ----- Original Message ----- 
  From: Henrique Netzka (Vetor Sistemas) 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Thursday, February 08, 2007 11:45 AM
  Subject: Re: [delphi-br] Mudar Cor da Linha do Contorno dos Componentes

  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: delphi-br@yahoogrupos.com.br 
  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: delphi-br@yahoogrupos.com.br 
  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: delphi-br@yahoogrupos.com.br 
  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: delphi-br@yahoogrupos.com.br 
  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: delphi-br@yahoogrupos.com.br 
  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: delphi-br@yahoogrupos.com.br 
  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]

  ----------------------------------------------------------
  Esta mensagem foi verificada pelo E-mail Protegido Terra.
  Scan engine: McAfee VirusScan / Atualizado em 07/02/2007 / Versão: 5.1.00/4958
  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]

Responder a