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]