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 TBitmap.Create in Komponente geht nicht (https://www.delphipraxis.net/88061-tbitmap-create-komponente-geht-nicht.html)

scrat1979 9. Mär 2007 14:28


TBitmap.Create in Komponente geht nicht
 
Hallo,

um mich etwas mit Canvas herumzuschlagen schreibe ich mir momentan meine eigene Progressbar. Die funktioniert im Prinzip auch schon tadellos, nur möchte ich jetzt noch einen Gradienten-Stil einfügen. Abgeleitet wurde von TGraphicsControl, wobei ich die Paint-Prozedur überschreibe.
In dieser möchte ich nun intern ein TBitmap erstellen, doch irgendwie funktioniert das überhaupt nicht. Bin ich jetzt schon zu bl*d eine TBitmap-Instanz zu erstellen? :wall:

Delphi-Quellcode:
procedure TMyGauge.Paint;
VAR MyRect        : TRect;
    BarRect       : TRect;
    SmallRect     : TRect;
    TempBitmap    : TBitmap;
    Text          : String;
[...]

begin
  // Interne Variablen initialisieren
  TempBitmap := tBitmap.Create;  // <-- Das funktioniert nicht
  MyRect := ClientRect;
  BarRect := ClientRect; InflateRect(BarRect, -1, -1);
  [...]
end;
NUR mit der Variablendeklaration lässt sich der Source einwandfrei compilieren, nur in der Zeile "TempBitmap := tBitmap.Create" kommt die Compilermeldung "[Pascal Error] MyGauge.pas(176): E2003 Undeclared identifier: 'Create'". HOffe Ihr könnt meinen Fehler aufdecken, ich verstehe die Welt nicht mehr :shock:

SCRaT

Hawkeye219 9. Mär 2007 14:35

Re: TBitmap.Create in Komponente geht nicht
 
Hallo SCRaT,

in der USES-Anweisung sollte die Unit Windows vor der Unit Graphics stehen. Bei mehrdeutigen Bezeichnern (hier TBitmap) wird immer der aus der zuletzt aufgeführten Unit verwendet.

Gruß Hawkeye

scrat1979 9. Mär 2007 15:14

Re: TBitmap.Create in Komponente geht nicht
 
Habe es zwar aus Zeitgründen noch nicht getestet, aber bei mir stehen die Units tatsächlich in der anderen Reihenfolge im Code. Wird wohl daran liegen. :firejump: Das muss man auch erst einmal wissen! Respekt und Danke. Sollte es nicht gehen melde ich mich noch einmal :-)

SCRaT

turboPASCAL 9. Mär 2007 15:25

Re: TBitmap.Create in Komponente geht nicht
 
...und vermeide es bitte ein Bitmap im OnPaint zu erstellen. Die Paintrout. wird sehr oft aufgerufen
was zu Leistungseinbusen führen kann.

scrat1979 9. Mär 2007 15:55

Re: TBitmap.Create in Komponente geht nicht
 
Funktioniert! Lag tatsächlich an den units :-)

@turboPASCAL: Alles klar, ich nehme mir Deinen Tip zu Herzen. Jetzt verstehe ich auch, warum die "anderen" es im Konstruktor erstellen.

Danke Euch beiden...

SCRaT


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 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