Sobald man etwas Systemspezifisches macht, ist es nicht mehr plattformunabhängig.
Hier wird ja eine
WinAPI direkt verwendet, welche irgendein HDC (bei Microsofts das
Handle für einen
Device
Context) haben will und dann entweder den Text zeichnet und/oder berechnet.
Wie man sieht, ginge das auch ohne ein Canvas, aber bei den Beispielkomponenten kommt man an dieses
Handle nunmal über das Canvas sehr leicht dran.
Ein Canvas ist ja auch nur eine Schnittstelle, welche den Zugriff auf den HDC und damit zusammenhängene Befehle vereint/vereinfacht.
GetDC(Edit.Handle) und schon hat man aus den Window-
Handle ein
DC-
Handle gemacht, welches man direkt nutzen,
oder über ein Canvas verwenden könnte.
das erwähnte TControlCanvas ist auch nur ein TCanvas, welches das GetDC noch mit eingebaut hat.
So, nochmal zum plattformunabhängig.
Jetzt mußt du nur noch Schnittstellen/APIs für die anderen
OS suchen und könntest das in einer Komponente verpacken, bzw. mehreren Komponenten mit der selben Schnittstelle.
Vorteil: plattformunabhängig
Nachteil: da es schwer sein wird, überall etwas mit genau dem selben Funktionsumfang zu finden, wird diese unabhängige Komonente nur noch das beinhalten dürfen, was überall möglich ist ... sie wird also nur noch einen "kleinen" Teil dessen bieten, was eigentlich möglich wäre, denn sonst wäre es nicht mehr unabhängig.
Oder man "emuliert" einige der fehlenden Funktionen, auf den jeweils anderen Systemen => eventuell aufwändiger/langsamer.
Also beschwer dich nicht über das arme TCanvas, denn eigentlich ist es ganz lieb/nützlich ... denn ich wette du willst nicht
immer direkt mit
WinAPI oder den APIs der anderen
OS zu tun haben.
Das wäre teilweise sehr aufwändig ... das was diese Wrapper für dich schön handlich zusammengefaßt haben.