AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign nicht-visuelle Komponente mit Top/Left property macht ärger
Thema durchsuchen
Ansicht
Themen-Optionen

nicht-visuelle Komponente mit Top/Left property macht ärger

Ein Thema von KodeZwerg · begonnen am 28. Jul 2020 · letzter Beitrag vom 28. Jul 2020
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 09:34
In einer selbst erstellten nicht-visuellen Komponente, habe ich Top und Left properties.
Nun habe ich festgestellt das Delphi, wenn ich die Komponente auf ein Formular ziehe und speicher zwei mal diese Eigenschaft samt zwei Unterschiedlichen Werten erzeugt.

In der von Delphi erzeugten dfm Datei:
Die ersten Top/Left Werte beziehen sich auf die Komponenten Eigenschaft.
Die zweiten Top/Left Werte beziehen sich auf die Position vom Icon der Komponente.

Soweit so gut...

Beende ich Delphi und starte es mit diesem Projekt neu malt Delphi die Komponente (das Icon/Bild) immer an Position 0,0.

Mache ich an dieser Stelle etwas falsch oder Delphi?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#2

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 09:59
Hmm, die ist wohl kaputt ...
Hast Du mal ein bisschen Quellcode?
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 10:02
Ich erstelle zu morgen eine micro demo, Danke schonmal für's Lesen!

//edit
Es läuft darauf hinaus das ich im "Public" part halt "propery Left: Integer read FLeft write SetLeft default 1" habe. (Das gleiche nochmal für "Top")
Demo kommt morgen, nichts desto trotz um es zu zeigen.
Gruß vom KodeZwerg

Geändert von KodeZwerg (28. Jul 2020 um 10:16 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#4

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 10:33
Top und Left sind halt Eigenschaften visueller Komponenten, um diese sowohl im Designer, als auch im laufenden Programm an eine bestimmte Stelle eines Formulars ... zu positionieren.

Eventuell hat Delphi ja ein Problem damit, diese Eigenschaften bei nicht visuellen Komponenten richtig "einzuordnen", hier also zu ignorieren.

Welchen Vorfahren hat denn Deine Komponente? Verfügt die auch schon über die Eigenschaften Top und Left, so dass es sich hierbei in Deiner Komponenten um vererbete Eigenschaften handelt?

Benenne Deine Eigenschaften Top und Left doch einfach mal in IconTop und IconLeft um, dann kann man am Namen der Eigenschaft erkennen, dass hier die Position des Icons der Komponente gemeint ist und Delphi kann da kein Irrtum bei der Interpretation der Eigenschaften unterlaufen.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 10:38
TComponent ist der Vater.
Left und Top von meiner Komponente wird letzten Endes dafür genutzt um ein dynamisch generiertes Window auf diese Position zu schubsen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 10:51
Dann nimm doch die geerbten Left und Top zur Positionierung, oder benenne alternativ Deine selbst deklarierten Eigenschaften entsprechend um (WindowLeft und WindowTop oder so).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#7

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 10:58
TComponent hat doch garkein Top und Left.

Vermutlich will hier Delphi Top und Left für das nicht existierende dynamische Window nutzen. Und das scheitert kläglich.

Der einfachheithalber Namen von Eigenschaften, die bereits delphiweit für bestimmte Funktionen genutzt werden, nicht für anders zu nutzende Eigenschaften verwenden.

Bei 'ner anderweitigen Nutzung der Eigenschaft Name oder Owner oder ComponentCount oder ... könnte ich mir ähnliche, unspezifizierte "Nebenwirkungen" vorstellen.

Manchmal ist es durchaus sinnvoll, sich an Namenskonventionen zu halten, auch wenn sie im konkreten Einzelfall nicht zwingend als sinnvoll erscheinen.

Geändert von Delphi.Narium (28. Jul 2020 um 16:26 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 15:25
Doch, hat es, aber nicht so, wie du denkst.

Top und Left existieren nur "virtuell", da eine nicht-visuelle Komponente "eigentlich" keine Top/Left hat bzw. braucht, aber im FormDesigner doch eine "Position" besitzt.
Intern wird es in Component.DesignInfo gespeichert und die "Property" in der DFM werden erst beim Speichern "generiert".
Delphi-Referenz durchsuchenTComponent.DefineProperties

Lösung: anderer Name
oder DefineProperties überschreiben.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: nicht-visuelle Komponente mit Top/Left property macht ärger

  Alt 28. Jul 2020, 15:47
Krasses Ding @himitsu
Bin mal deinem Link gefolgt und da stehts auch so beschrieben.
Das Umbenennen eine Möglichkeit ist war mir schon klar aber wieso weshalb warum und vor allem woher das kam war mir nicht bewusst da mir TComponent kein Left/Top angezeigt hatte.
Warum ich diese Namen nutzte hat ja Delphi.Narium gut erkannt/beschrieben.
Da ich noch weniger Ahnung habe wie ich TFiler zu benutzen habe werde ich den Vorschlag mit WindowLeft/WindowTop nachkommen.

Aus dem link von himitsu:
Zitat:
TComponent overrides the DefineProperties method defined in TPersistent to define "fake" Top and Left properties. These are defined so that components that are not controls can be manipulated at design time. However, the Top and Left properties are hidden, that is, they are not published, because only controls appear at run time.
Damit ist das Thema für mich erfolgreich beendet, eine Demo kommt demzufolge nicht mehr da nun verstanden und geklärt wurde worum es mir ging.

Vielen Dank an alle beteiligten!
Gruß vom KodeZwerg

Geändert von KodeZwerg (28. Jul 2020 um 15:50 Uhr)
  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 03:37 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