Avatar billede thehawk Nybegynder
23. marts 2003 - 00:16 Der er 3 kommentarer og
1 løsning

TBitmap i TGraphicControl komponent

Jeg har for 1. gang i Delphi støt ind i et problem jeg ikke kan løse. Af en eller anden grund kan jeg ikke lave et objekt af klassen TBitmap inde i mit TGraphicControl komponent. Jeg har prøvet med et TPicture objekt istedet hvilket virker fint.... Da jeg blot skal bruge bitmappen til double buffering, er der jo egentlig ikke nogen grund til at have 'et helt' Picture objekt. Fejlbeskeden som kompileren kommer med er:

'Object or class type required'

Linie som forårsager fejlen er:

bmpTemp := TBitmap.Create;

Cursoren står sidst i linien

Når jeg bruger code-completion på bmpTemp dukker der nogle private felter (vars) op istedet for egenskaber og metoder..... Nogle der ved hvad der sker?!!

-TheHawk
Avatar billede agree21 Nybegynder
23. marts 2003 - 09:52 #1
Jeg arbejder pt. med stort set det samme og jeg har ingen problemer med at bruge TBitMap. Her er et 'klip' af min kode:

type
  TGame = class(TGraphicControl)
  private
    FBackGround: TBitMap;
  protected
    procedure SetBackGround(Value: TBitMap);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property BackGround: TBitMap read FBackGround write SetBackGround;
  end;

procedure Register;

implementation

constructor TGame.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FBackGround := TBitMap.Create;
end;

procedure TGame.SetBackGround(Value: TBitMap);
begin
  FBackGround.Assign(Value);
end;

destructor TGame.Destroy;
begin
  FBackGround.Free;
  inherited Destroy;
end;
Avatar billede thehawk Nybegynder
23. marts 2003 - 21:48 #2
Jeg har selv fundet ud af hvad det er der sker. Jeg prøvede forsøgs mæssigt at lave linie om til:

bmpTemp := TPicture.Create;

Dette resulterede i følgende fejl:

Incompatible types: 'tagBITMAP' and 'TPicture'

tagBitmap findes i Windows uniten:

  PBitmap = ^TBitmap;
  {$EXTERNALSYM tagBITMAP}
  tagBITMAP = packed record
    bmType: Longint;
    bmWidth: Longint;
    bmHeight: Longint;
    bmWidthBytes: Longint;
    bmPlanes: Word;
    bmBitsPixel: Word;
    bmBits: Pointer;
  end;
  TBitmap = tagBITMAP;

Bemærk den sidste linie!!!

Problemet kunne jeg løse ved at bytte om på Windows og Graphics i uses listen, så Graphics stod til sidst. Fatter dog ikke hvad den type definition laver i windows uniten.... Mystisk!!!
Avatar billede hermandsen Juniormester
23. marts 2003 - 23:38 #3
Husk at lukke spørgsmålet! ;)
Avatar billede thehawk Nybegynder
15. april 2003 - 23:14 #4
Spørgmålet er lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester