Thema: Delphi TProgressbar ohne Rahmen

Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TProgressbar ohne Rahmen

  Alt 13. Feb 2008, 00:38
Hi,

du hast ja leider nicht angegeben welche Delphiversion du hast, bis Delphi 7 kannst du die Komponente jedenfalls unter dem Menü Component-> Install Component installieren.

Oder wenn du sie nicht gleich installieren möchtest, dann erstellst du ein neues Projekt. Dann setzt du eine TProgressBar auf das Formular und fügst diesen Code ein.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TProgressBar = class(ComCtrls.TProgressBar)
    procedure WMNCPAINT(var Msg: TMessage); message WM_NCPAINT;
  private
    FShowFrame: boolean;
    procedure SetShowFrame(Value: boolean);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property ShowFrame: boolean read FShowFrame write SetShowFrame;
  end;

type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TNProgressBar  }

constructor TProgressBar.Create(AOwner: TComponent);
begin
  inherited;
  FShowFrame := false;//True;
  self.Position:= 20;//Test
end;

procedure TProgressBar.SetShowFrame(Value: boolean);
begin
  if FShowFrame <> Value then begin
    FShowFrame:= Value;
    RecreateWnd;
  end;
end;

procedure TProgressBar.WMNCPAINT(var Msg: TMessage);
var
  DC: HDC;
  RC: TRect;
begin
  if ShowFrame then begin
    inherited;
    Invalidate;
  end else begin
    DC := GetWindowDC(Handle);
    try
      Windows.GetClientRect(Handle, RC);
      with RC do begin
        Inc(Right, 2);
        Inc(Bottom, 2);
      end;
      Windows.FillRect(DC, RC, Brush.Handle);
    finally
      ReleaseDC(Handle, DC);
    end;
  end;
end;

end.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat