AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TScrollBox: in den Hintergrund zeichnen (Canvas)
Thema durchsuchen
Ansicht
Themen-Optionen

TScrollBox: in den Hintergrund zeichnen (Canvas)

Offene Frage von "sieppl"
Ein Thema von sieppl · begonnen am 4. Aug 2006
Antwort Antwort
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

TScrollBox: in den Hintergrund zeichnen (Canvas)

  Alt 4. Aug 2006, 11:53
Hi!

Ich versuche eine Scrollbox-Komponente zu bekommen, die einen Canvas besitzt.
Folgendes Beispiel ist aus einer Newsgroup:
Delphi-Quellcode:
  TCanvasScrollBox = class(TScrollBox)
  private
    FCanvas: TCanvas;
  protected
    procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_EraseBkgnd;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
    procedure PaintWindow(DC: HDC); override;
    procedure Paint; virtual;
    property Canvas: TCanvas read FCanvas;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

constructor TCanvasScrollBox.Create(AOwner: TComponent);
begin
  inherited;
  FCanvas := TControlCanvas.Create;
  TControlCanvas(FCanvas).Control := Self;
end;

destructor TCanvasScrollBox.Destroy;
begin
  FCanvas.Free;
  inherited;
end;

procedure TCanvasScrollBox.Paint;
begin
  Canvas.TextOut(0,0, 'TEST TEST TEST');
end;

procedure TCanvasScrollBox.PaintWindow(DC: HDC);
begin
  inherited;
  FCanvas.Lock;
  try
    FCanvas.Handle := DC;
    try
      Paint;
    finally
      FCanvas.Handle := 0;
    end;
  finally
    FCanvas.Unlock;
  end;
end;

procedure TCanvasScrollBox.WMEraseBkgnd(var Message: TWmEraseBkgnd);
begin
  Message.Result := 1;
end;

procedure TCanvasScrollBox.WMPaint(var Message: TWMPaint);
begin
  PaintHandler(Message);
end;
Problem:
Der Text (hier als Beispiel) erscheint nicht. Desweiteren wird der Hintergrund nicht gelöscht.
Letzeres ist ja gewollt, da man diesen durch ein eigenes Bild ersetzen möchte, aber es klappt ja nicht.
Ich habe eine Weile herumprobiert, aber bekomme es nicht hin.
Vielleicht interessiert es ja noch jemanden..

Grüße

Sebastian

PS: Klar könnte man auch eine Paintbox oder sonst was hineinlegen, aber umschiffen wollen wir es nicht..
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz