Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   DFM DIFF ... IDE oder Komponente speichert falsch? (https://www.delphipraxis.net/210814-dfm-diff-ide-oder-komponente-speichert-falsch.html)

haentschman 15. Jun 2022 09:00

DFM DIFF ... IDE oder Komponente speichert falsch?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...8-)

Es nervt ziemlich, gerade bei DevExpress, daß wenn man die Form speichert, u.a. die DFM Einträge "verschoben" sind. :?
Auch bei DevExpress:
Manchmal werden die Properties automatisch reingenommen, machmal wieder entfernt. :? Berühmt dafür:
Delphi-Quellcode:
DockedDockingStyle = dsNone
DockedLeft = 0
DockedTop = 0
DockingStyle = dsNone
Wer ist dafür zuständig. Die IDE oder die Fremdkomponente? :gruebel:

Jedes Mal den DIFF zeilenweise kontrollieren nervt. :evil:

...Luft abgelasssen. :wink:

Sherlock 15. Jun 2022 09:36

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
DFMs sind ein steter Quell der Freude. Wir ignorieren eigenmächtige DFM Änderungen wie diese oder irgendwelche Datumsänderungen in entsprechenden Controls einfach per VCS. Nur wenn tatsächlich absichtliche Änderungen durch einen Entwickler vorgenommen wurden, wird dieses DFM committet, alles andere verworfen.

Sherlock

Uwe Raabe 15. Jun 2022 09:47

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Entscheidend für die Reihenfolge der Properties ist die Reihenfolge in der sie published sind.

Eine Möglichkeit für den Effekt den du da siehst wäre, wenn das Offsets Property in einem Vorfahren protected war und erst im Nachfahren published, jetzt aber schon im Vorfahren published ist. Solange du diese Änderung nicht im VCS übernimmst, wird dir das Diff erhalten bleiben.

Gemein wird es, wenn man die DFM mit unterschiedlichen Design-Packages öffnet (alt/neu). Dann geht es ständig hin und her.

Sinspin 15. Jun 2022 10:34

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Mit diesem Irrsinn sollten ja alle Nutzer der neueren Versionen schon Erfahrung haben.

Denn Emba selber macht es ja nicht besser! Diese Explizit* Einträge die die ganze Zeit auftauchen und wieder verschwinden sind die Pest!

Was ich bei DevExpress furchtbar finde ist, bei einigen Komponenten ein Teil der Daten Binär zu speichern. Oder keinen Zugriff zur Laufzeit zu ermöglichen. Die TdxBar ist darin Spitze.
Oder TcxGrid wenn man den InplaceEditor verwendet. Das Ding ist ja schon zur Designzeit ein absolutes Verbrechen.

mjustin 15. Jun 2022 10:43

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Zitat:

Zitat von Sinspin (Beitrag 1507354)
Denn Emba selber macht es ja nicht besser! Diese Explizit* Einträge die die ganze Zeit auftauchen und wieder verschwinden sind die Pest!

Gegen die Explicit* Einträge hilft der DDevExtensions Experte (Seite "Form Designer", "Do not store the Explicit* Properties into the DFM").

haentschman 15. Jun 2022 10:47

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Zitat:

Nur wenn tatsächlich absichtliche Änderungen durch einen Entwickler vorgenommen wurden, wird dieses DFM committet, alles andere verworfen.
...das mache ich aus so. Das entbindet dich aber nicht von dem Anschauen der jeweiligen Zeile...könnte ja wichtig sein. :?

Sherlock 15. Jun 2022 10:53

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Zitat:

Zitat von haentschman (Beitrag 1507360)
Zitat:

Nur wenn tatsächlich absichtliche Änderungen durch einen Entwickler vorgenommen wurden, wird dieses DFM committet, alles andere verworfen.
...das mache ich aus so. Das entbindet dich aber nicht von dem Anschauen der jeweiligen Zeile...könnte ja wichtig sein. :?

Ich bin da gnadenlos auf Krawall gebürstet, wenn es nach einem Pull knallt, weil die DFM Änderung doch Absicht war, aber vergessen wurde reinzustellen, muss ich mit diesem Sonderfall leben, aber ich vergeude keine Zeit mit DFM Kontrolle (mehr).

Sherlock

haentschman 15. Jun 2022 11:10

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Zitat:

Entscheidend für die Reihenfolge der Properties ist die Reihenfolge in der sie published sind.
@Embacadero: ...ist das sooo ein großer Aufwand das nach dem Alphabet, unhabhängig von der Position, zu sortieren und zu speichern? :roll:

himitsu 15. Jun 2022 11:12

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Da müsste man das vorher in eine Liste schreiben und erst am Ende in die DFM.
Zu viel Aufwand.

Es geht einfach in der Reihenfolge, wie es gefunden wird (RTTI).

Einige komponenten gehen auch davon aus, dass bestimmte Property zuerst geladen werden,
was dann bei Änderung der Reihenfolge knallt.
Aber hier sollten die Entwickler eh langsam mal lernen, dass man nicht ALLES sofort im SETTER behandelt, sondern beim csLoading das dan erst "einmal" im Loaded zu machen hat.




Nett ist auch, wenn man mit unterschiedlichen IDE-Versionen arbeitet. (z.B. noch das alte Delphi und Einige schonmal mit dem neuen Delphi)


Ich verwerfe sowas auch "meistens".
Bei kleinen Änderungen, lade ich dann nur das Gewollte hoch.

Bzw. bei großen Änderungen an der Unit dann auch mal sowas gleich mit (z.B. wenn sich an der DFM so viel geändert hat, dass Dieses eh nicht auffällt),
aber besser solche Änderungen als eigenen Commit, damit Sie bei Rückblicken (wann hatte sich was geändert) nicht störend einmischen (man die eine eigentlich geänderte Zeile nicht mehr sieht).



Natürlich könntest du nur beim Vergleichen, oder vor dem Commit einen Hook einsetzen, der die DFM sortiert, bzw. einen Comparer für DFMs hinzufügen, der es ohne Berücksichtigung der Reihenfolge vergleicht. (so ähnlich, wie es gern für XML Welche gibt, denen Formatierung und eventuell auch die Reihenfolge egal sind)

Uwe Raabe 15. Jun 2022 12:22

AW: DFM DIFF ... IDE oder Komponente speichert falsch?
 
Zitat:

Zitat von haentschman (Beitrag 1507366)
@Embacadero: ...ist das sooo ein großer Aufwand das nach dem Alphabet, unhabhängig von der Position, zu sortieren und zu speichern? :roll:

Das mag vielleicht möglich sein, aber es gibt auch Fälle, bei denen die Reihenfolge der Properties relevant ist. Beispiele aus der VCL sind TStandardColorMap, TActionManager, TMonthCalendar, TComboBoxEx, TComboBox. DevExpress hat da auch noch einige anzubieten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr.
Seite 1 von 2  1 2      

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