AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi eine Ressource für mehrere Instanzen von Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

eine Ressource für mehrere Instanzen von Komponenten

Ein Thema von usnzi02n4m · begonnen am 3. Dez 2005 · letzter Beitrag vom 6. Dez 2005
 
usnzi02n4m
(Gast)

n/a Beiträge
 
#1

eine Ressource für mehrere Instanzen von Komponenten

  Alt 3. Dez 2005, 13:28
Hallo,

dies ist eine zweite Frage zu einer Komponente, mit der ich mich gerade beschäftige. Ich hoffe, zwei Fragen zu einer Komponente in zwei Threads zu stellen ist legitim.

Wie schon in dem zuerst erstellten Thread erwähnt, möchte ich eine Komponente entwickeln, die eine Spielkarte aus einem Kartenspiel simuliert. Diese hat eine Eigenschaft Wert, über die der Kartenwert eingestellt wird und dementsprechend wird dann das Bild der Karte auf die Canvas-Oberfläche meiner Komponente (abgel. von TGraphicControl) gezeichnet.

Auf meiner Festplatte habe ich eine Datei "Karten.bmp" (beinhaltet 32 Karten, die in 4 Zeilen und 8 Spalten nebeneinander gekachelt sind) die in der Create-Methode meiner Komponente in ein TBitmap-Objekt (var bmp: TBitmap) geladen wird. In der Paint-Methode der Komponente wird nun, abhängig vom eingestellten Kartenwert, ein ganz bestimmter Teil des bmp-Objekts auf die Komponenten-Oberfläche gezeichnet.

Ich hoffe mit Quellcode-Ausschnitten wird erkenntlich, wich ich's meine:
Delphi-Quellcode:
type
  TKartenwert = 0..32;
  TSpielkarte = class(TGraphicControl)
  private
    { Private-Deklarationen }
    bmp: TBitmap;
    value: TKartenwert;
    constructor Create(AOwner : TComponent); override;
    procedure Paint; override;
  
  ...

constructor TSpielkarte.Create(AOwner : TComponent);
begin
  inherited;
  bmp := TBitmap.Create;
  bmp.LoadFromFile('C:\Karten.bmp');
  bmp.Transparent := True;
  ...

procedure TSpielkarte.Paint;
var i: Byte;
    x,y: Word;
begin
  y := ((value-1) div 8) * Height;
  x := ((value-1) mod 8) * Width;
  Canvas.CopyRect(Rect(0, 0, Width, Height), bmp.Canvas,
                  Rect(x, y, x + Width, y + Height));
  ...
Allerdings sehe ich ein Problem darin, dass bei jeder Instanz meiner Komponente immer die "Karten.bmp" geladen wird, was sich sicherlich nicht vorteilhaft auf den Speicherbedarf und Zeitbedarf der benutzenden Programme auswirkt.
Gibt es irgendeine Möglichkeit, dass die Instanzen überprüfen können, ob das Kartenbild schon eingelesen wurde und wenn ja, auch darauf zugreifen können. (bei Objekten gibts doch sowas wie globale Klassenvariablen?). Oder händelt das Delphi von alleine?

Viele Grüsse
Markus
  Mit Zitat antworten Zitat
 


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 10:36 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