Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Koordinatenangabe in Canvas.Textout (https://www.delphipraxis.net/171787-koordinatenangabe-canvas-textout.html)

Mojito 25. Nov 2012 14:29

Koordinatenangabe in Canvas.Textout
 
Hallo liebe Delphi-Freunde,

ich möchte in einen Drawgrid über Canvas.Textout in die einzelnen Zellen einen String eintragen.
Delphi-Quellcode:
DrawGridMain.Canvas.TextOut(Spalte, Zeile, output)));
Nur leider wird dabei immer nur in die erste Zelle ein String eingetragen. Anscheinend kann man nicht direkt über die Spalten/Zeilennummer auf eine Zelle zugreifen? Habt ihr einen Rat?

sx2008 25. Nov 2012 14:47

AW: Koordinatenangabe in Canvas.Textout
 
Bei einem Drawgrid darf man grundsätzlich nur innerhalb des Event OnDrawCell zeichnen.
Hier ein Beispiel für die Beschriftung eines Schachbretts
Delphi-Quellcode:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
   if ACol = 0 then
   begin
      // Beschriftung vertikal
      if ARow <> 0 then
         DrawGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, IntToStr(ARow));
   end
   else if ARow = 0 then
   begin
      // Beschriftung horizontal
      DrawGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, chr(Ord('A')+ACol-1));
   end
end;

Mojito 25. Nov 2012 15:03

AW: Koordinatenangabe in Canvas.Textout
 
Mit rect.left+2 und rect.top+2 funktioniert es danke sx2008.

Ich verstehe jedoch noch nicht, was da genau passiert. Wie ich es verstehe, wird so die Position innerhalb der Zeile/Spalte angegeben. Wenn ich rect.top+2 jedoch gegen jedoch gegen rect.bottom austausche wird mir gar nichts mehr in den Zellenangezeigt. Wieso das?

Medium 25. Nov 2012 15:08

AW: Koordinatenangabe in Canvas.Textout
 
Das Grid lässt das Zeichnen nur innerhalb des übergebenen Rects zu, welches genau der Zelle entspricht, für die das Event gerade ausgelöst wurde. Du kannst in dem Event nicht ausserhalb dieser Zelle malen, und wenn die obere linke Ecke eines Textes am unteren Rand der Zelle liegt, kann der Text nur komplett ausserhalb der Zelle sein. Das Grid schneidet das weg.

Mojito 25. Nov 2012 15:40

AW: Koordinatenangabe in Canvas.Textout
 
Ah habs verstanden, das macht Sinn. THX


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