AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmaps auf eigener Komponente

Ein Thema von TheMiller · begonnen am 30. Sep 2006 · letzter Beitrag vom 30. Sep 2006
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 18:02
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 18:05
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 18:11
Ok, das habe ich jetzt beides gemacht.

Doch wenn ich

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

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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 18:13
Tcanvas und TBitmap sind auch nicht kompatibel. Ein Canvas besitzt aber die Methode .Draw()
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 18:23
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

...ist eine Exception der Klasse EInvalidOperation aufgetreten. Meldung: 'Element '' hat kein übergeordnetes Fenster
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 18:26
mkinzler hat es schon gesagt: Du musst beim OnPaint-Ereignis zeichnen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 18:27
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Bitmaps auf eigener Komponente

  Alt 30. Sep 2006, 19:32
Juhuu!! Das klappt!

Ist ja geil! Danke!
  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 06:33 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