AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualStringTree, CellPaint und der grafische Offset
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree, CellPaint und der grafische Offset

Ein Thema von Codehunter · begonnen am 5. Jul 2016 · letzter Beitrag vom 8. Jul 2016
 
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#1

VirtualStringTree, CellPaint und der grafische Offset

  Alt 5. Jul 2016, 17:37
Hallo!

Ich bastle derzeit an einem neuen VST-Descendant und stehe dabei (wie schon einige Male in der Vergangenheit) vor folgendem Problem:

Einige Zeichenroutinen wie z.B. OnAfterCellPaint übergeben ein eigenes Canvas-Objekt und ein CellRect. Dabei bildet der VST sozusagen ein mehrfach virtuelles Koordinatensystem, das mir regelmäßig Kopfzerbrechen bereitet.

Delphi-Quellcode:
procedure TForm1.TreeAfterCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellRect: TRect);
begin
 // ...
end;
Dabei bildet TargetCanvas lediglich das Rechteck des jeweiligen Nodes ab, CellRect dann das Rechteck der mit Column angegebenen Spaltenzelle. Den horizontalen Offset relativ zu Tree.ClientRect bekomme ich notfalls über Header.Columns[n].Width heraus. Allerdings finde ich wirklich keine Möglichkeit, den vertikalen Offset relativ zu Tree.ClientRect zu bestimmen. Zur Verdeutlichung ein kleines Kunstwerk im Anhang...

Relevant wird das Ganze, wenn man Mausereignisse innerhalb einer Zelle abfangen will, weil dort OwnerDraw-Elemente vorhanden sind die interaktive Mausbedienung ermöglichen sollen. Dann muss ich von den globalen Mauskordinaten auf die relativen Control-Koordinaten (ClientToScreen und umgekehrt) herunter rechnen, komme dann aber mit den weiteren "Unter-Koordinatensystemen" nicht weiter weil ich nicht ermitteln kann, wo sich der aktuelle Node im Viewport befindet.

Grüße
Cody
Angehängte Grafiken
Dateityp: png Image1.png (259,9 KB, 29x aufgerufen)
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  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 18:52 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