Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#23

AW: Text zur Anzeige kürzen mit Punkte hinten

  Alt 30. Okt 2011, 20:39
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.
$2B or not $2B

Geändert von himitsu (30. Okt 2011 um 20:43 Uhr)
  Mit Zitat antworten Zitat