[gelöst] Windows.DrawText oder Canvas.Textrect - keines tut, was es soll?

Für Fragen von Einsteigern und Programmieranfängern...
PascalDragon
Beiträge: 830
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: [gelöst] Windows.DrawText oder Canvas.Textrect - keines tut, was es soll?

Beitrag von PascalDragon »

Jim Knopf hat geschrieben:
Di 3. Aug 2021, 10:54
@PacalDragon: Auch danke für die Info.
Dass man bei DrawText den Record mitgeben kann, hat mich schon gewundert - eben deshalb, weil es ja nur temporär sein kann. Obwohl - er wird dann ja doch an den Canvas übergeben. Der ganze Record lässt sich aber mühelos austauschen und damit scheint es dann doch ...? Wo ist da unterm Strich der Unterschied? Das Textstyle-Property verweist doch direkt nach FTextStyle mitten in TCanvas. Warum dann solche Restriktionen? Dadurch wird man nur dazu angeleitet, sich zur Vereinfachung Funktionen wie diese zu machen, die das ganze ›Sicherheitssystem‹ einfach aushebeln.
Es steht aber nirgendwo geschrieben, dass eine Eigenschaft auf ein Feld verweisen muss, es kann ja auch eine Funktion sein. Und wenn dir dann jemand unter der Haube das umändert (zum Beispiel wenn in der LCL jemand auf die Idee käme, dass eine Funktion sinnvoller wäre), dann hast du viel Spaß beim Debuggen. Oder wenn der Getter ein Feld, der Setter aber eine Funktion wäre: der Setter führt eventuell Konsistenzprüfungen durch, die bei einer direkten Änderung des Feldes umgangen würden. Deswegen wird das konsistent gehandhabt und schlichtweg verboten.
Jim Knopf hat geschrieben:
Di 3. Aug 2021, 13:22
@wp_xyz: Danke, dann bin ich mal beruhigt, dass ich via winapi DrawText verwenden kann. Von der Windows-Unit werde ich also nachhaltig die Finger lassen.
Die Includedatei heißt nur deshalb WinAPI, weil sie verschiedene in Delphi gebräuchliche Funktionen der WinAPI in einer Cross Platform Variante bereitstellt. Das heißt jedoch nicht, dass sämtliche WinAPI Funktionen verfügbar sind (nur zur Sicherheit ;) ).
FPC Compiler Entwickler

Benutzeravatar
Jim Knopf
Beiträge: 98
Registriert: So 18. Mai 2014, 15:16
OS, Lazarus, FPC: Win10
CPU-Target: 64Bit
Wohnort: Klagenfurt
Kontaktdaten:

Re: [gelöst] Windows.DrawText oder Canvas.Textrect - keines tut, was es soll?

Beitrag von Jim Knopf »

PascalDragon hat geschrieben:
Di 3. Aug 2021, 13:50
Die Includedatei heißt nur deshalb WinAPI, weil sie verschiedene in Delphi gebräuchliche Funktionen der WinAPI in einer Cross Platform Variante bereitstellt. Das heißt jedoch nicht, dass sämtliche WinAPI Funktionen verfügbar sind (nur zur Sicherheit ;) ).
Danke. Gut zu wissen, dass winapi ungefährlich ist. Wenn was fehlt, dann merke ich es eh.

Antworten