AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Warum zum Teufel ist TControl.LocalToAbsolute public, aber .LocalToScreen protected!?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum zum Teufel ist TControl.LocalToAbsolute public, aber .LocalToScreen protected!?

Ein Thema von Medium · begonnen am 11. Mai 2022 · letzter Beitrag vom 12. Mai 2022
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#1

Warum zum Teufel ist TControl.LocalToAbsolute public, aber .LocalToScreen protected!?

  Alt 11. Mai 2022, 23:03
Es geht um FMX, passte leider nicht mehr in den Titel, und ein Präfix dafür haben wir leider nicht.

Ich bin gerade dabei, eine (Desktop-)Anwendung zu entwickeln, die intensiv Scaling verwendet. Dabei möchte ich gelegentlich Fenster an bestimmten Stellen aufpoppen lassen, die über die Position von Controls in einem Frame, in einem Panel, in einem Form bestimmt sind.

TControl.LocalToAbsolute liegt hier leider ziemlich daneben wenn mein Programm skaliert, nicht fullscreen und nicht in der oberen linken Ecke ausgeführt wird. TControl.LocalToScreen dagegen macht das gewünschte. Das ist aber leider protected, und kann daher nicht ohne Umwege außerhalb des Controls genutzt werden, für das ich es aufrufen möchte.
Wer kam bitte auf die ... ähm, "seltsame" (man soll ja nett sein) Idee, diese zwei sehr sehr artverwandten Methoden unterschiedlich zu deklarieren? Warum nicht beide public? Der Person würde ich gern ein kleines Schimpfwörtchen übermitteln.

Kann ich das noch irgendwie lösen, ohne weite Teile meines bereits recht großen Programms anfassen zu müssen?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#2

AW: Warum zum Teufel ist TControl.LocalToAbsolute public, aber .LocalToScreen protect

  Alt 11. Mai 2022, 23:15
Um an protected members einer anderen Klasse zu kommen kann man entweder einen class helper oder eine interposer-Klasse verwenden.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Warum zum Teufel ist TControl.LocalToAbsolute public, aber .LocalToScreen protect

  Alt 12. Mai 2022, 09:41
Hier lässt sich die Funktionalität ja ganz einfach selbst umsetzen, entweder extern oder als class helper, denn es geht ja nur um die zusätzliche Übersetzung über Scene, wenn denn eine da ist, wie man im Quelltext sieht.

Je nachdem wie oft dies benötigt wird, lohnt sich ggf. ein class helper, aber wenn es nur um eine bestimmte Stelle geht, kann man die paar Zeilen natürlich auch einfach so nutzen.

Dass das protected ist, ist leider übliche Vorgehensweise bei Delphi. Ich musste schon oft ganze Units kopieren oder im Speicher ein paar Jumps hinzufügen, nur weil Sachen absichtlich versteckt oder hardcoded gemacht wurden... ohne Not... verstehen tue ich das auch nicht, dass man den Entwicklern so das Leben schwer macht. (Entsprechende Tickets, dass es Sinn macht, etwas zu veröffentlichen, werden immer wieder auch geschlossen. Probieren sollte man es natürlich dennoch...)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Warum zum Teufel ist TControl.LocalToAbsolute public, aber .LocalToScreen protect

  Alt 12. Mai 2022, 12:55
Dann habe ich das mit den helpern jetzt auch endlich mal gemacht

Funktioniert sogar! Danke euch!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:19 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