undeclared identifier: ´paint´
[color=violet:6b669eedcd]Ola pessoal,
Estou criando um componente Bitbtn, e entre outros metodos, preciso adicionar o metodo paint. implementei o seguinte:[/color:6b669eedcd]
[color=darkred:6b669eedcd] Quando compilo recebo a mensagem:[/color:6b669eedcd][color=blue:6b669eedcd] undeclared identifier: ´paint´[/color:6b669eedcd]
[color=red:6b669eedcd]
O pode ser? (Se precisarem de mais alguma informação me avisem please...)[/color:6b669eedcd]
_________________________
[b:6b669eedcd]Editando...[/b:6b669eedcd]
Tópico anterior excluído e observação ´[b:6b669eedcd][i:6b669eedcd]desculpe, tirei uma parte q tava comentada, considerem essa:[/i:6b669eedcd][/b:6b669eedcd]´ retirada.
Acrescentado também a tag [code].
Sandra/Moderação
Estou criando um componente Bitbtn, e entre outros metodos, preciso adicionar o metodo paint. implementei o seguinte:[/color:6b669eedcd]
Protected procedure Paint; Override;
procedure TColorBtnF.Paint;
var
ESpace: Integer;
begin
LockWindowUpdate(Canvas.Handle);
[color=green] inherited Paint;[/color]
with Canvas do begin
Brush.Style := bsClear;
Brush.Color := Color;
Font.Assign(FFont);
Pen.Width := BorderWidth;
if HasMouse then begin
if IsMouseDown then begin
{Remove old frame}
Pen.Color := Color;
Rectangle(0,0,Width-1,Height-1);
Pen.Color := BorderColor;
Rectangle(1,1,Width,Height);
{Draw Button}
Pen.Color := Brush.Color;
Rectangle(2,2,Width-1,Height-1);
end
else begin
Pen.Color := ShadowColor;
Rectangle(1,1,Width,Height);
Pen.Color := BorderColor;
Rectangle(0,0,Width-1,Height-1);
{Draw Button}
Pen.Color := Brush.Color;
Rectangle(1,1,Width-2,Height-2);
end;
end
else begin
{Remove old frame}
Pen.Color := Color;
Rectangle(0,0,Width-1,Height-1);
{Remove shadow}
Rectangle(1,1,Width,Height);
{Draw Button}
Rectangle(2,2,Width-1,Height-1);
end;
if not FEnabled then Font.Color := clGrayText;
if HasMouse then begin
if IsMouseDown then ESpace:=1 else ESpace:=0;
end
else ESpace:=1;
TextOut(((Width-TextWidth(FCaption)) div 2)+Space+ESpace,
((Height - TextHeight(FCaption)) div 2)+ESpace,FCaption);
end;
LockWindowUpdate(0);
end;[color=darkred:6b669eedcd] Quando compilo recebo a mensagem:[/color:6b669eedcd][color=blue:6b669eedcd] undeclared identifier: ´paint´[/color:6b669eedcd]
[color=red:6b669eedcd]
O pode ser? (Se precisarem de mais alguma informação me avisem please...)[/color:6b669eedcd]
_________________________
[b:6b669eedcd]Editando...[/b:6b669eedcd]
Tópico anterior excluído e observação ´[b:6b669eedcd][i:6b669eedcd]desculpe, tirei uma parte q tava comentada, considerem essa:[/i:6b669eedcd][/b:6b669eedcd]´ retirada.
Acrescentado também a tag [code].
Sandra/Moderação
Michelli88
Curtidas 0
Respostas
Michelli88
16/06/2005
Eu estava fazendo esse código para colocar meu botão sem a borda 3D.
Mas, dessa forma nao cheguei a lugar nenhum. No fim analisando o codigo, descobri uma coisa obvia, que eu devia ter visto a muito tempo... hehhe...
Consegui o efeito desejado, soh que de outra forma:
Criei um componente herdado do TButton, com as propriedades:
[color=blue:61ff81d4ca]
Color: TColor,
BorderColor: TColor,
ShowBorder: Boolean,
Flat : Boolean.[/color:61ff81d4ca]
Quando o Flat for TRUE, o botão nao vai ter aparencia 3D...
código:
[color=darkred:61ff81d4ca]POIS EH, MAIS FACIL DO QUE PENSEI, VALEU, BEIJOS[/color:61ff81d4ca]
Mas, dessa forma nao cheguei a lugar nenhum. No fim analisando o codigo, descobri uma coisa obvia, que eu devia ter visto a muito tempo... hehhe...
Consegui o efeito desejado, soh que de outra forma:
Criei um componente herdado do TButton, com as propriedades:
[color=blue:61ff81d4ca]
Color: TColor,
BorderColor: TColor,
ShowBorder: Boolean,
Flat : Boolean.[/color:61ff81d4ca]
Quando o Flat for TRUE, o botão nao vai ter aparencia 3D...
código:
unit ColorButton; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TDrawButtonEvent = procedure(Control: TWinControl; Rect: TRect; State: TOwnerDrawState) of object; TColorButton = class(TButton) private FShowBorder: Boolean; FFlat: Boolean; FCanvas: TCanvas; IsFocused: Boolean; FOnDrawButton: TDrawButtonEvent; FBorderColor: TColor; procedure SetBorderColor(value: TColor); procedure SetShowBorder(Value: Boolean); procedure SetFlat(Value: Boolean); protected procedure CreateParams(var Params: TCreateParams); override; procedure SetButtonStyle(ADefault: Boolean); override; procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; procedure CNMeasureItem(var Message: TWMMeasureItem); message CN_MEASUREITEM; procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM; procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; procedure DrawButton(Rect: TRect; State: UINT); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property Canvas: TCanvas read FCanvas; published property OnDrawButton: TDrawButtonEvent read FOnDrawButton write FOnDrawButton; property Color; property ShowBorder: Boolean read FShowBorder write SetShowBorder default False; property Flat: Boolean read FFlat write SetFlat default True; property BorderColor: TColor read FBorderColor write SetBorderColor default clWindowFrame; end; procedure Register; implementation procedure TColorButton.SetBorderColor(value: TColor); begin if Value <> FBorderColor then begin FBorderColor := Value; Repaint; end; end; procedure TColorButton.SetShowBorder(value: Boolean); begin if Value <> FShowBorder then begin FShowBorder := Value; Repaint; end; end; procedure TColorButton.SetFlat(value: Boolean); begin if Value <> FFlat then begin FFlat := Value; Repaint; end; end; procedure Register; begin RegisterComponents(´Michelli´, [TColorButton]); end; constructor TColorButton.Create(AOwner: TComponent); begin inherited Create(AOwner); FCanvas := TCanvas.Create; Flat:=True; end; destructor TColorButton.Destroy; begin inherited Destroy; FCanvas.Free; end; procedure TColorButton.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do Style := Style or BS_OWNERDRAW; end; procedure TColorButton.SetButtonStyle(ADefault: Boolean); begin if ADefault <> IsFocused then begin IsFocused := ADefault; Refresh; end; end; procedure TColorButton.CNMeasureItem(var Message: TWMMeasureItem); begin with Message.MeasureItemStruct^ do begin itemWidth := Width; itemHeight := Height; end; end; procedure TColorButton.CNDrawItem(var Message: TWMDrawItem); var SaveIndex: Integer; begin with Message.DrawItemStruct^ do begin SaveIndex := SaveDC(hDC); FCanvas.Lock; try FCanvas.Handle := hDC; FCanvas.Font := Font; FCanvas.Brush := Brush; DrawButton(rcItem, itemState); finally FCanvas.Handle := 0; FCanvas.Unlock; RestoreDC(hDC, SaveIndex); end; end; Message.Result := 1; end; procedure TColorButton.CMEnabledChanged(var Message: TMessage); begin inherited; Invalidate; end; procedure TColorButton.CMFontChanged(var Message: TMessage); begin inherited; Invalidate; end; procedure TColorButton.WMLButtonDblClk(var Message: TWMLButtonDblClk); begin Perform(WM_LBUTTONDOWN, Message.Keys, Longint(Message.Pos)); end; procedure TColorButton.DrawButton(Rect: TRect; State: UINT); var Flags, OldMode: Longint; IsDown, IsDefault, IsDisabled: Boolean; OldColor: TColor; OrgRect: TRect; TipoFlat: Longint; begin OrgRect := Rect; if Flat then //AQUI ELE DIZ O Q FAZER QUANDO É 3D OU NAO Flags := DFCS_ADJUSTRECT or DFCS_FLAT else Flags := DFCS_ADJUSTRECT or DFCS_BUTTONPUSH; IsDown := State and ODS_SELECTED <> 0; IsDefault := State and ODS_HOTLIGHT <> 0; IsDisabled := State and ODS_DISABLED <> 0; if IsDown then Flags := Flags or DFCS_FLAT; if IsDisabled then Flags := Flags or DFCS_INACTIVE; if IsFocused or IsDefault then begin FCanvas.Pen.Color := BorderColor; FCanvas.Pen.Width := 1; FCanvas.Brush.Style := bsClear; FCanvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom); InflateRect(Rect, - 1, - 1); end; if IsDown then begin FCanvas.Pen.Color := clBtnShadow; FCanvas.Pen.Width := 1; FCanvas.Brush.Color := clBtnFace; FCanvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom); InflateRect(Rect, - 1, - 1); end else DrawFrameControl(FCanvas.Handle, Rect, DFC_BUTTON, Flags); if IsDown then OffsetRect(Rect, 1, 1); OldColor := FCanvas.Brush.Color; FCanvas.Brush.Color := Color; FCanvas.FillRect(Rect); FCanvas.Brush.Color := OldColor; OldMode := SetBkMode(FCanvas.Handle, TRANSPARENT); FCanvas.Font.Color := Font.Color; if ShowBorder then begin FCanvas.Pen.Color := BorderColor; FCanvas.Pen.Width := 1; FCanvas.Brush.Style := bsClear; FCanvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom); InflateRect(Rect, - 1, - 1); end; if IsDisabled then DrawState(FCanvas.Handle, FCanvas.Brush.Handle, nil, Integer(Caption), 0, ((Rect.Right - Rect.Left) - FCanvas.TextWidth(Caption)) div 2, ((Rect.Bottom - Rect.Top) - FCanvas.TextHeight(Caption)) div 2, 0, 0, DST_TEXT or DSS_DISABLED) else DrawText(FCanvas.Handle, PChar(Caption), - 1, Rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER); SetBkMode(FCanvas.Handle, OldMode); if Assigned(FOnDrawButton) then FOnDrawButton(Self, Rect, TOwnerDrawState(LongRec(State).Lo)); if IsFocused and IsDefault then begin Rect := OrgRect; InflateRect(Rect, - 4, - 4); FCanvas.Pen.Color := clWindowFrame; FCanvas.Brush.Color := clBtnFace; DrawFocusRect(FCanvas.Handle, Rect); end; end; end.
[color=darkred:61ff81d4ca]POIS EH, MAIS FACIL DO QUE PENSEI, VALEU, BEIJOS[/color:61ff81d4ca]
GOSTEI 0