Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bitmaps auf eigener Komponente (https://www.delphipraxis.net/78192-bitmaps-auf-eigener-komponente.html)

TheMiller 30. Sep 2006 17:02


Bitmaps auf eigener Komponente
 
Hallo,

egal wie ich es versuche, ich kann keine Bitmaps auf meiner Komponente anzeigen lassen. Es wird zwar alles gespeichert, aber nicht angezeigt. Diese Komponente ist vom Typ TCustomControl und ich habe folgenden Code:

Delphi-Quellcode:
constructor TRollOver.Create(AOwner: TComponent);
var
  glyph: TBitmap;
begin
  inherited Create(AOwner);
  glyph:=TBitmap.Create;
  glyph.Width:=30;
  glyph.Height:=30;
  glyph.LoadFromFile('C:\test.bmp');
end;
Bei einer Ableitung von TSpeedButton funktioniert das Anzeigen, aber die Eigenschaft "Width" für das Bild wird nicht übernommen, obwohl ich das eingestellt hatte.

mkinzler 30. Sep 2006 17:05

Re: Bitmaps auf eigener Komponente
 
1. Mußt du Glyph nicht als loakle Variable sondern als (privaten) Member der Klasse deklarieren.
2. mußt du noch dafür sorgen, daß dein Bitmap beim Zeichenn des Fenster auch auf den Canvas gezeichnet wird.

TheMiller 30. Sep 2006 17:11

Re: Bitmaps auf eigener Komponente
 
Ok, das habe ich jetzt beides gemacht.

Doch wenn ich

Delphi-Quellcode:
Canvas.Assign(Glyph);
eingebe, dann kommt folgende Fehlermeldung:

Delphi-Quellcode:
TBitmap kann nicht zu TControlCanvas zugewiesen werden
Hm... weiß nicht weiter. Komme mir ziemlich dumm vor, aber es gibt leider nicht all zu viele TUTs zur OOP...Sorry

mkinzler 30. Sep 2006 17:13

Re: Bitmaps auf eigener Komponente
 
Tcanvas und TBitmap sind auch nicht kompatibel. Ein Canvas besitzt aber die Methode .Draw()

TheMiller 30. Sep 2006 17:23

Re: Bitmaps auf eigener Komponente
 
Das habe ich auch schon probiert:

Delphi-Quellcode:
constructor TRollOver.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  glyph:=TBitmap.Create;
  glyph.Width:=30;
  glyph.Height:=30;
  glyph.LoadFromFile('C:\Admin.bmp');
  canvas.Draw(0,0,glyph);
end;
und dabei kommt die Meldung

Delphi-Quellcode:
...ist eine Exception der Klasse EInvalidOperation aufgetreten. Meldung: 'Element '' hat kein übergeordnetes Fenster

Khabarakh 30. Sep 2006 17:26

Re: Bitmaps auf eigener Komponente
 
mkinzler hat es schon gesagt: Du musst beim OnPaint-Ereignis zeichnen.

mkinzler 30. Sep 2006 17:27

Re: Bitmaps auf eigener Komponente
 
Zu diesem Zeitpunkt existiert u.U. der Canvas noch nicht.
Du mußt .Paint() implementieren, so daß dein Bild bei jedem Neuzeichnen deiner Komponente gezeichnet wird.

TheMiller 30. Sep 2006 18:32

Re: Bitmaps auf eigener Komponente
 
Juhuu!! Das klappt!

Ist ja geil! Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz