AGB  ·  Datenschutz  ·  Impressum  







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

Memory Programm

Offene Frage von "abisch"
Ein Thema von KillerMary · begonnen am 10. Mär 2015 · letzter Beitrag vom 14. Jun 2015
Antwort Antwort
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#1

AW: Memory Programm

  Alt 12. Jun 2015, 22:16
Allerdings finde ich keine Möglichkeit, die Zellen, ähnlich wie beim StringGrid, einzeln über die Koordinaten anzusprechen.
Ich sitze nun schon ziemlich lange daran und verzweifle langsam. Daher wäre ich über einen rettenden Tipp sehr froh!
Hallo! So etwas gibt's beim DrawGrid nicht. Stattdessen musst du einen Handler für das "OnDrawCell" Event schreiben. Also im visuellen Designer das DrawGrid auswählen, dann im Objektinspektor zu den Events und "OnDrawCell" doppelklicken. Außerdem würde ich für die Bilder kein TImage nehmen, sondern TPicture oder TBitmap. TImage ist nämlich eine visuelle Komponente, also ein GUI, das du ebenso wie einen Button oder ein DrawGrid auf einer Form platzieren kannst. Aber für deine Zwecke ist das ja gar nicht nötig!
Die Unterschiede zwischen TImage, TPicture, TGraphic usw. sind verwirrend, nicht nur für Anfänger. Hier eine kurze Erklärung auf Englisch.

Da deine Bilder alle Bmp-Dateien sind, nehmen wir am besten TBitmap. Sieht dann ungefähr so aus:

Delphi-Quellcode:
var
  Memory: array [1..4,1..5] of Integer;
  Bilder: array [0..9] of TBitmap;

procedure BilderLaden;
var i : Integer;
begin
  for i := 0 to 9 do
  begin
    Bilder[i] := TBitmap.Create;
    Bilder[i].LoadFromFile(Pfad[i]);
  end
end;

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
  State: TGridDrawState);
var
  BildNr: Integer;
begin
  // Das DrawGrid hat keine festen Zellen (FixedCols=0, FixedRows=0), sonst müssten
  // wir das hier bei den Koordinaten berücksichtigen.

  // Das Bild ermitteln, das zur aktuellen Zelle (ACol, ARow) gehört
  // Memory-Array hat 1-basierte Koordinaten
  BildNr := Memory[ARow + 1, ACol + 1];

  // Bild auf die Zelle malen (BildNr ist 1-basiert?)
  DrawGrid1.Canvas.StretchDraw(Rect, Bilder[BildNr - 1]);
  // oder: DrawGrid1.Canvas.Draw(Rect.Left, Rect.Top, Bilder[BildNr - 1]);
  end;
end;
  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:28 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