2 Stimmen

Delphi 4 Fehler: - Inkompatible Typen : "TBitmap" und "TObject"

Ich erhalte diese Fehlermeldung, wenn ich versuche, ein Projekt zu kompilieren/erstellen

       Incompatible Types : “TBitmap” and “TObject”

Der Cursor zeigt auf Bitmap := FSectionList.BackgroundBitmap

Helfen Sie mir bitte, es herauszufinden. Struck hier wie ein Krankenwagen im dichten Verkehr

Hier ist der Teil des Codes:-

procedure ThtmlViewer.DoBackground1(ACanvas: TCanvas; ATop, AWidth, AHeight, FullHeight: integer);
var
  ARect: TRect;
  Bitmap, Mask: TBitmap;
  PRec: PtPositionRec;
  BW, BH, X, Y, X2, Y2, IW, IH, XOff, YOff: integer;
  Fixed: boolean;

begin
ARect := Rect(0, 0, AWidth, AHeight);
Bitmap := FSectionList.BackgroundBitmap;    
if FSectionList.ShowImages and Assigned(Bitmap) then
  begin
  Mask := FSectionList.BackgroundMask;
  BW := Bitmap.Width;
  BH := Bitmap.Height;
  PRec := FSectionList.BackgroundPRec;
  Fixed := PRec[1].Fixed;
  if Fixed then
    begin  {fixed background}
    XOff := 0;
    YOff := 0;
    IW := AWidth;
    IH := AHeight;
    end
  else
    begin   {scrolling background}
    XOff := 0;
    YOff := ATop;
    IW := AWidth;
    IH := FullHeight;
    end;
  CalcBckgrndLoctionAndTilng(PRec, ARect, XOff, YOff, IW, IH, BW, BH, X, Y, X2, Y2);

  DrwBckgrnd(ACanvas, ARect, X, Y, X2, Y2, Bitmap, Mask, BW, BH, PaintPanel.Color);
  end
else
  begin  {no background image, show color only}
  DrwBckgrnd(ACanvas, ARect, 0,0,0,0, Nil, Nil, 0, 0, PaintPanel.Color);
  end;
end;

Vielen Dank und herzliche Grüße Vas

6voto

Francesca Punkte 21286

Ich kann nur raten, aber nach der Fehlermeldung und dem Namen von FSectionList ist es eine Art Liste, die generische TObject-Instanzen enthält, und BackgroundBitmap ist eine von ihnen.

Sie müssten es als TBitmap zurückwerfen:

Bitmap := FSectionList.BackgroundBitmap as TBitMap;

1voto

Ken White Punkte 120217

Es sieht so aus, als ob der Compiler die in Windows.pas definierte TBitmap und die in Graphics.pas definierte TBitmap-Klasse verwechselt. Er scheint zu denken, dass Sie versuchen, eine Graphics.TBitmap einer Windows.TBitmap zuzuweisen.

Sie können das Problem beheben, indem Sie die Deklaration von Bitmap entweder in Windows.TBitmap oder Graphics.TBitmap ändern. Sie haben keine Angaben zu FSectionList gemacht, aber die Ursache des Problems liegt wahrscheinlich in der Zeile

var
  Bitmap, Mask: TBitmap;

Ändern Sie dies in eine der folgenden Möglichkeiten:

  Bitmap, Mask: Graphics.TBitmap;

or

  Bitmap, Mask: Windows: TBitmap;

Ich kann dir nicht sagen, welche du verwenden sollst, weil ich nicht weiß, was FSectionList dort enthält; wenn du eine von ihnen hinzufügst und dann versuchst zu kompilieren, solltest du das für dich entscheiden. Aufgrund der Fehlermeldung vermute ich allerdings, dass Sie Windows benötigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X