Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   D11 Caption bei TcxTabSheet verschwindet beim kompilieren. (https://www.delphipraxis.net/211416-d11-caption-bei-tcxtabsheet-verschwindet-beim-kompilieren.html)

Kostas 13. Sep 2022 10:00


D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,

jetzt muss ich mal fragen ob das ein D11 Problem ist oder eher DevExpress.
Ich habe eine relativ große VCL Anwendung in dieser DevExpress sehr intensiv eingesetzt wird.
Das Problem: Auf der Form sind TcxPageControls mit einigen TcpTabSheets. Im Objektinspektor setze ich das Prop. Caption für die TabSheets. Ich speichere die Form, öffne sie und alles ist ok. Ich kompiliere, starte die Anwendung und dann passiert es, dass nicht bei alle aber bei 2-4 TabSheets ist das Caption weg. Ich beende die Anwendung gehe in das Form und im Objektinspektor sehe ich dass das Caption weg ist. Das passiert nicht nur mit einer Form sondern völlig wild durch alle Forms. Die Captions werden ausschließlich über den Objektinspektor zur Entwurfszeit gesetzt und nicht im Code.

[Edit] auch passiert es dass zur Entwurfszeit das Caption am Tab angezeigt wird jedoch nicht im Objektinspektor, Siehe Bild. Beim Ausführen der Anwendung fehlt dann das Caption und nur das Image ist zu sehen.

Ist diese Problem bekannt oder wieder einmal nur bei mir?



Gruß Kostas

Sinspin 13. Sep 2022 12:35

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Hallo,
Delphi 11, Update x?
Welche DevExpress Version ist das?
Verwendest Du ein Übersetzungstool? Wenn ja, welches?

Ich kenne sowas, allerdings bisher nur im Zusammenhang mit einem buggigen Übersetzungstool.

Kostas 13. Sep 2022 13:25

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Sorry,

Delphi 11 Update 1
DevExpress VCL 22.1.2

ich verwende kein Übersetzungstool. Nur DevExpress VCL.
Übrigens, dieses Problem hatte ich mit Delphi 10.4.2 nicht. Ich bin mir nicht sicher ob das Problem sofort mit dem Umstieg auf D11 sich gezeigt hat. Aber das Probleme habe ich mindestens seit D11.1 und DevExpress 21.2.8

Gruß Kostas

himitsu 13. Sep 2022 14:08

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Nach dem Speichern und Kompilieren steht die Caption aber auch immernoch in der DFM?

Hier merke ich nichts, aber bei uns kommt die Caption aus einem eigenen Property (TextNr) und darüber wird die Caption beim Laden aus der DB geholt.

BerndS 13. Sep 2022 14:23

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Ich habe zwar kein DevExpress , aber sollte dem Tabsheet eine Action zugewiesen sein, was ich im Screenshot nicht erkennen kann, dann wäre das eine Möglichkeit. Solltest du die Quellen haben, dann schau mal, ob beim Property Caption eine stored Funktion existiert. Falls ja, sollte man dort die Ursache finden.

Kostas 13. Sep 2022 14:26

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Zitat:

Zitat von himitsu (Beitrag 1511736)
Nach dem Speichern und Kompilieren steht die Caption aber auch immernoch in der DFM?

NEIN, nicht nur der Text fehlt sondern das property "caption" samt Inhalt fehlt in der .dfm!

Kostas 13. Sep 2022 14:29

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Zitat:

Zitat von BerndS (Beitrag 1511740)
Ich habe zwar kein DevExpress , aber sollte dem Tabsheet eine Action zugewiesen sein, was ich im Screenshot nicht erkennen kann, dann wäre das eine Möglichkeit. Solltest du die Quellen haben, dann schau mal, ob beim Property Caption eine stored Funktion existiert. Falls ja, sollte man dort die Ursache finden.

Nein, das Tabsheet wurde keine Action zugewiesen. Ich klatsche es auf die Form um setze manuell das caption für jedes Tab.

himitsu 13. Sep 2022 14:51

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Ich hab hier grade nur eine 21.2.5 im XE (11.0 aktuell nicht kompiliert) und da ist (noch) nichts zu sehen (stored, default und Co., sowohl normal oder als [Attribut]),
abgesehn von der schon erwähnten Action.

Delphi-Quellcode:
  TControl = class(TComponent)
    property Caption: TCaption read GetText write SetText stored IsCaptionStored;

  TcxTabSheet = class(TCustomControl)
    property Caption;

function TControl.IsCaptionStored: Boolean;
begin
  Result := (ActionLink = nil) or not ActionLink.IsCaptionLinked;
end;

Sinspin 13. Sep 2022 14:58

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Zitat:

Zitat von Kostas (Beitrag 1511735)
Ich bin mir nicht sicher ob das Problem sofort mit dem Umstieg auf D11 sich gezeigt hat. Aber das Probleme habe ich mindestens seit D11.1 und DevExpress 21.2.8

Das ist dann ein guter Grund erstmal bei 21.2.5 zu bleiben. :roll:
Denn D11.1 scheint es nicht zu sein. Mir ist jedenfalls bisher nichts aufgefallen.

Hast du Sonderzeichen in den betroffenen Captions?

himitsu 13. Sep 2022 15:00

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
In 11.2 soll ja nun alles noch viel besser sein.

Kostas 2. Jan 2023 16:00

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,

zunächst ein gutes und gesundes neues Jahr an alle.

Das Problem dass Eigenschaften verloren gehen, ist nicht nur TabSheet sondern auch anderen Elementen. Aktuell in einer TFDQuery verschwindet das property LookupDataSet.

Aktueller Fall in einem anderen kleinen Projekt. Auch hier ist DevExpress im Einsatz aber ich glaube das hat damit nichts zu tun!

-Öffne das Projekt, kompiliere, starte, alles ok.
-Öffne die Form in Delphi, auf der Form ist ein TabControl. Wechsle NUR das Tab, kompiliere, starte, Delphi zeigt exception
Code:
"Lookup-Information für Feld 'RollenText' ist unvollständig." Manchmal reciht es auch NUR die Form zu öffnen ohne irgend eine Änderung und das Prop verschwindet.
-schaue im Object Inspektor, prop LookupDataSet ist nicht gesetzt. Öffne das .dfm in Delphi als Text fehlt es hier.
-Beende das Projekt ohne speichern.
-Öffne das .dfm in NotePad++ das Prop ist gesetzt.
-Starte Delphi, öffne diesmal die Form nicht und kompiliere das gesamte Projekt neu, alles ok.

Das macht mir große sorgen wenn ich mich nicht darauf verlassen kann. Was kommt als nächstens.

[Edit]
Jetzt ist mir folgendes aufgefallen:
Das DataSet befindet sich nicht auf der Form sondern auf ein DataModul.
Wenn ich das DataModul zuerst öffne und dann die Form, bleibt das Prop erhalten.
Auf der Form sind jedoch weitere Elemente die auf Elemente des gleichen DataModuls zugreifen die eben nicht verschwinden. Es ist also nicht nachvollziehbar warum genau dieses prop verschwindet!


Gruß Kostas

Kostas 20. Jan 2023 16:01

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Hallo Zusammen,

das Problem ist noch viel gravierender. Jetzt auch bei FDQuery.

Aktuell hatte ich den Fall dass in einer FDQuery aus einem, LookUpField das LookupKeyField rausgeflogen ist.
Ich habe die Form NUR geöffnet, einen Reiter gewechselt und neu kompiliert. Ausführen kommt dann natürlich eine Exception. Ich muss jetzt jede Form über GIT vergleichen was sich genau geändert hat. Das ist wirklich nicht mehr lustig.

Hat sonst niemand dieses Problem?

Gruß Kostas

himitsu 20. Jan 2023 16:15

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Öffne mal das TDM1 im Designer
und dann schau, ob alles da bleibt.

Kostas 20. Jan 2023 16:46

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich das TDM1 über den Designer als Text(nicht Form) öffne, fehlen die Eigenschaften. Das .dfm File wird also neu geschrieben und dabei werden Eigenschaften völlig Wild entfernt. Derzeit ist es mir NUR aufgefallen in TabPages und FDQuerys. Wobei ich den FDQuery Fall jetzt neu dazu bekommen habe. Ich muss jetzt viel öfters einchecken damit ich die .dfms kontrollieren kann. Gerade eben schon wieder.

himitsu 20. Jan 2023 19:24

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Ähhhh wie jetzt, DM1 ist die "aktuelle" Form, also jene, in welcher auch die Property verschwinden?
Klang mehr nach einem DatenModul.

Kostas 20. Jan 2023 19:56

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Sorry, beides. Es ist nicht so dass nur der Eigenschaftswert fehlt, es fehlt die Eigenschaft samt Wert aus der .dfm Dabei.

Ich habe das in Forms und auch in Datamoduls. Ich kann kein Muster erkennen unter welchen Umständen das passiert. Es ist auch nicht so dass ich das Control anfassen muss. Ich öffne die Form oder das Datamodul und bei der nächsten Änderung wird die Form gespeichert. Dabei verschwinden die Eigenschaften.

Interessant ist folgendes:
Ich habe das Projekt heute mehrfach kompiliert. Bei einem Kompiliervorgang bei dem ich an der Form im Bild nichts verändert hatte ist mit zur Laufzeit aufgefallen dass das TabPage kein Caption hat. Ich beende die Anwendung und schaue mit den Tab an. Das Caption am Tab ist zu sehen wie im Bild. Dann schaue ich im Objektinspektor und sehe dass das Caption fehlt. Im Designer wechsle ich auf Textmodus, suche das Control und sehe dass die Eigenschaft Caption fehlt. Ich trage im Designer "Details" ein und speichere die Form. Wechsle wieder in Textmodus und die Eigenschaft samt Wert ist da. Ich habe in D11.1 CnPack installiert, ansonsten keine IDE Erweiterungen.

himitsu 20. Jan 2023 20:40

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Bei unseren Datenmodulen sind die auch nochmal als DesigntimePackage geladen (um damit auch im Designer eine Datenverbindung zu haben)

Da gab es früher auch öfters Probleme, wenn der Name nicht aufgelöst werden konnte.
Daher hatten Viele dann immer das/die Datenmodule geöffnet (wobei auch das nicht immer zu 100% half)

Inzwischen hab ich mich in die Namensauflösung reingehängt und wenn der ModulName kommt, dann gebe ich explizit das interne Datenmodul, anstatt aus der eventuell geöffneten Unit.
Das Datenmodul kann man dann auch in Ruhe bearbeiten und die Unit auch schließen (wenn dort eine offene Form am Datenmodul oder eine FormAbleitung dran hängt, bekommt man diese Units nicht mehr geschlossen)

Im Designer ist es nicht ganz Spaßig, aber man kann sich notfalls auch via Event über ein DesignTimePackage oder mit dem Debugger (die IDE debuggen) in den TReader, bzw. hier den TWriter reinhängen und schauen was der macht.

Kostas 20. Jan 2023 22:14

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
:-) Ich habe nicht alles verstanden was du geschrieben hast, aber derart gravierende Probleme hatte ich bisher noch nie. Es ist absolut gefährlich wenn man sich nicht darauf verlassen kann was man zur Designzeit eingestellt hat. Ich trau mich kaum eine Form zu ändern. Das kann es doch nicht sein. Für mich ist das ein absolutes Alarmzeichen. Dieses Projekt hat über 300 Forms. Ich kann unmöglich anzweifeln ob die Eigenschaften die zur Designzeit gesetzt wurden, noch gesetzt sind, und auf keinen Fall ist es tolerierbar wenn Eigenschaften in FDQuerys verloren gehen. Bisher hatte ich nur einen Fall. Wenn ich mir vorstelle, eine Master-Detail Beziehung würde verloren gehen, das merkst man halt nicht beim Kompilieren sondern erst im produktiven Umfeld beim Kunden. All die Jahre habe ich mit Delphi in einer VMWare-Workstation gearbeitet mit Desktop OS. Seit Delphi 10 haben wir umgestellt auf VMWare Esxi und in den VMs laufen Windows 2019 Datacenter Server. Das Projekt wurde vor etwa zwei Jahre auf den Server verschoben und lief unter Delphi 10 problemfrei. Auch zu Anfangs lief es unter Delphi 11 problemfrei. Seit wann genau die Probleme da sind konnte ich nicht ausmachen. Ich mache mir wirklich große sorgen. An die Server kann es fast nicht liegen und Anwenderfehler können es fast auch nicht sein da wie gesagt NICHT der Eigenschaftswert fehlt sondern die gesamte Eigenschaft samt Wert. Wenn die Server ein Problem hätten, dann würde vielleicht eine Änderung nicht gespeichert werden. Aber was kann die Ursache sein dass Eigenschaften verschwinden? Aus meiner Sicht nur die IDE.

himitsu 20. Jan 2023 22:29

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Zitat:

Es ist absolut gefährlich wenn man sich nicht darauf verlassen kann was man zur Designzeit eingestellt hat. Ich trau mich kaum eine Form zu ändern.
Dafür/Dagegen gibt es ja Versionierungstools (Git und Co.).

Wenn Property praktisch immer gesetzt sein müsen, dann kann man beim / nach dem Laden auch eine Prüfung in die Komponente einbauen.

Eine mögliche Ursache : wenn Namen/Komponenten nicht aufgelöst/ausgelesen/gefunden werden können und dann beim Speichern der Name praktisch leer ist.
Wobei ich vom XE noch kenne, dass Namen beim Speichern OK sind, ebenso manchmal beim Editieren im PropertyEditor, aber wenn der Fokus nicht im Property liegt, dann sieht es leer aus ... auch bissl blöd, wenn man ständig denkt es könnte leer sein und muß dann immer erstmal genauer reingucken

Sinspin 24. Jan 2023 07:50

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Hey,

sowas wie Caption hat ja keine Referenz zu einem Datenmodul.
Verwendest du ein Übersetzungstool?
Ich hatte den gleichen Fehler als ich in unserem Übersetzungtools die automatisch aktive Sprache neu eingestellt habe.
Anstatt, wie zu erwarten wäre, in Fällen in denen die aktive Sprache leer ist, weiter die default Sprache zu verwenden, hat es einfach die Captions/Texte/Listen alle ausgekippt.
Delphi ist dann so nett die Größe der DFM zu optimieren und schmeißt die leeren Properties ganz aus der DFM.

Deswegen, niemals ohne Versionsveraltung programmiern! Es gibt schon genug andere Gründe sich die Haare auszureißen.

Kostas 24. Jan 2023 12:21

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Zitat:

Zitat von Sinspin (Beitrag 1517772)
Hey,

...
Verwendest du ein Übersetzungstool?
...

Nein, ich habe kein Übersetzungstool. Ich setzt GIT ein. Aber Git hilft mir NUR wenn ich vor dem eincheken alle zu versionierende .dfms anzweifle und überprüfe ob ein Property verschwunden ist. Dieses Problem habe ich von Delphi1 bis Delphi 10 NICHT gesehen. Ich konnte mich immer darauf verlassen dass das was ich zur Designzeit einstelle auch erhalten bleibt. Ich möchte auch ausdrücklich sagen, ich verdächte nicht automatisch NUR Delphi und dass nur Delphi hier etwas falsch macht. Wenn Captions von Tabs verschwinden, ist schon schlimm. Es ist nichts im Vergleich dazu dass Propertys von FireDac Controls verschwinden. Da kann ein großer Schaden entstehen wenn plötzlich Verknüpfungen nicht mehr greifen.

Übrigens, die Captions wurden bisher NUR vom TcxPageControl sporadisch entfernt. Ein Caption von anderen Controls ist mir noch nicht aufgefallen.
Bisher hatte ich NUR einen Fall bei dem ein FireDac Prop. verschwunden ist. Theoretisch könnte das auch zufällig andere Ursachen gehabt haben. Ich habe es automatisch in dieselbe Schublade gesteckt wie die Captions da wieder in das DFM das Property und der Wert gefehlt haben.

Jetzt hast du mir ein interessanten Hinweis gegeben dass Delphi das Caption entsorgt wenn es keinen Wert hat. Das habe ich soeben ausprobiert und es ist wirklich so. Somit kann ich nicht mehr ausschließen dass ich selbst versehentlich ohne es zu bemerken den Feldinhalt gelöscht habe. Was würde mich sehr beruhigen!

Gruß Kostas

Uwe Raabe 24. Jan 2023 12:46

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Zitat:

Zitat von Kostas (Beitrag 1517778)
Jetzt hast du mir ein interessanten Hinweis gegeben dass Delphi das Caption entsorgt wenn es keinen Wert hat.

Das Streaming-System unterdrückt alle Properties deren Wert dem Default entspricht. Dieser wird über die gleichnamige Direktive, ein entsprechendes Attribut oder einen impliziten Wert bestimmt. Bei Strings ist letzterer eben der Leerstring.

Kostas 24. Jan 2023 12:59

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Es wäre mir sehr recht wenn ich das Problem wäre und nicht Delphi! :-)

Rolf Frei 24. Jan 2023 13:29

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Dass es Delphi ist, halte ich für sehr, sehr unwahrscheinlich, sonst hätte wir alle das selbe Problem. Entweder liegt es an der cxXXX Komponente selber oder ein Addon oder sowas verursacht diesen Effekt.

Kostas 24. Jan 2023 13:52

AW: D11 Caption bei TcxTabSheet verschwindet beim kompilieren.
 
Vermutlich ist das Problem wieder einmal vor dem Monitor. Ich wusste nicht dass Delphi die Property ohne Wert (default value) entsorgt. Deshalb habe ich angenommen, hier liegt ein Problem vor. Speziell das verschwinden der Captions bei TabPage ist doch relativ häufig passiert. Dass ich jedes mal versehentlich den Wert entfernt habe ohne es zu bemerken, hört sich komisch an aber ausschließen kann ich es nicht. Ich beobachte es und betrachte mich als geohrfeigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 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