Sobre pintura com Canvas...
Pessoal precizo pintar o Formulário principal da aplicação... meu código funciona se executá-lo depois que o formulário já está totalmente construido... (no envento de um botão por exemplo)... mas no [b:e286f94a2e]OnShow[/b:e286f94a2e] ou no procedimento protegido [b:e286f94a2e]DoShow[/b:e286f94a2e] ele não funciona... o q fazer :?:
Bruno Belchior
Curtidas 0
Respostas
Massuda
22/08/2005
...meu código funciona se executá-lo depois que o formulário já está totalmente construido... (no envento de um botão por exemplo)... mas no [b:c5f7644e75]OnShow[/b:c5f7644e75] ou no procedimento protegido [b:c5f7644e75]DoShow[/b:c5f7644e75] ele não funciona...
Coloque o seu código de desenho no canvas do form no evento OnPaint do form. Mas atenção: esse evento é gerado sempre que o form precisa ser desenhado, não apenas no momento que o form é criado.GOSTEI 0
Bruno Belchior
22/08/2005
Massuda já fiz esse teste e não funcionou...
GOSTEI 0
Massuda
22/08/2005
Será que dá para você postar sua rotina de desenho aqui? Deveria funcionar no OnPaint, já que é nessa hora que o form está pronto para ser exibido.
GOSTEI 0
Bruno Belchior
22/08/2005
taí...
Procedure PreencherStatusBar; var Icone: TIcon; Rect: TRect; begin StsBrPrincipal.SimpleText := ´´; Icone := TIcon.Create; with Rect do begin TopLeft.X := 2; TopLeft.Y := 3; BottomRight.X := 18; BottomRight.Y := 18; end; DtMdlAuditoria.ImgListPrincipal.GetIcon(4, Icone); with StsBrPrincipal.Canvas do begin Brush.Color := Self.Canvas.Brush.Color; Font.Style := [fsBold]; Font.Color := clRed; StretchDraw(Rect, Icone); TextOut(30, 6, DtMdlAuditoria.Auditoria.UsuarioAtual.Nome); end; end;
GOSTEI 0
Massuda
22/08/2005
Você está desenhando num StatusBar, não no form, por isso não funciona.
Para desenhar no StatusBar, o correto é definir no StatusBar um painel com estilo psOwnerDraw e usar o evento OnDrawPanel do StatusBar para desenhar no painel (o StatusBar necessariamente deve estar com a propriedade SimplePanel em False).
Este exemplo é o que está na Ajuda do Delhi, no tópico TStatusBar.OnDrawPanel...Esse exemplo desenha uma imagem que está em um ImageList em um painel do StatusBar.
Para desenhar no StatusBar, o correto é definir no StatusBar um painel com estilo psOwnerDraw e usar o evento OnDrawPanel do StatusBar para desenhar no painel (o StatusBar necessariamente deve estar com a propriedade SimplePanel em False).
Este exemplo é o que está na Ajuda do Delhi, no tópico TStatusBar.OnDrawPanel...
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); begin with StatusBar1.Canvas do begin Brush.Color := clRed; FillRect(Rect); Font.Color := clYellow; ImageList1.Draw(StatusBar1.Canvas,Rect.Left,Rect.Top,Panel.Index); TextOut(Rect.left + 30, Rect.top + 2, ´Panel´ + IntToStr(Panel.Index)); end; end;
GOSTEI 0
Bruno Belchior
22/08/2005
era isso mesmo Massuda... tinha ouvido falar em [b:b138de365c]OwnerDraw[/b:b138de365c] apenas com TMenuItem... :oops:
GOSTEI 0