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/)
-   -   Delphi TLabel durch TJVLabel ersetzen (https://www.delphipraxis.net/151269-tlabel-durch-tjvlabel-ersetzen.html)

JonnyGuitar 10. Mai 2010 15:20


TLabel durch TJVLabel ersetzen
 
Hallo,

ich habe folgendes Problem, in meinem Programm sind durchgängig TLabel verbaut.
Kommen durch per DXGetText Sprachen wie griechisch dazu so kann das normale
TLabel die Sonderzeichen nicht richtig darstellen. Beim TJVLabel bestehen
diese Probleme nicht. Also war meine erste Idee in den .pas und .dfm Dateien
TLabel durch TJVLabel zu ersetzen. Kompilieren tut er danach, die Anzeige ist
trotzdem fehlerhaft. Erst wenn ich wirklich im GUI Editor die TLabel durch TJVLabel
ersetze ist der Fehler behoben. Leider ist der Aufwand dann natürlich dementsprechend
grösser.

Meine Frage, gibt es eine Möglichkeit das halbwegs zu automatisieren?
Ich arbeite mit Delphi 2007


Gruss Jonny

DeddyH 10. Mai 2010 15:23

Re: TLabel durch TJVLabel ersetzen
 
Die GExperts bringen eine Funktion namens "Replace Components" mit, das könnte hilfreich sein.

HeikoAdams 10. Mai 2010 15:43

Re: TLabel durch TJVLabel ersetzen
 
Der GExpert macht im Prinzip ja auch nichts anderes als ein Search&Replace im Source des Forms. 8-)

BTW:
Zitat:

Also war meine erste Idee in den .pas und .dfm Dateien
TLabel durch TJVLabel zu ersetzen
Das Ersetzen in den .pas Dateien hätte völlig gereicht. Den Rest hätte Delphi bzw. der Compiler automatisch angepasst sobald das Form im Designer geöffnet wird :wink:

uligerhardt 10. Mai 2010 16:12

Re: TLabel durch TJVLabel ersetzen
 
Zitat:

Zitat von HeikoAdams
Das Ersetzen in den .pas Dateien hätte völlig gereicht. Den Rest hätte Delphi bzw. der Compiler automatisch angepasst sobald das Form im Designer geöffnet wird :wink:

AFAIK andersrum - Ersetzen in der DFM. Und der Compiler ersetzt gar nix, es ist die IDE. Dazu muss allerdings die betroffene Form zum Speichern gezwungen werden, entweder manuell oder mit Andys Automatisch-auf-und-wieder-Zumach-Tool (DFMCheck). :)

HeikoAdams 11. Mai 2010 07:28

Re: TLabel durch TJVLabel ersetzen
 
Zitat:

Zitat von uligerhardt
AFAIK andersrum - Ersetzen in der DFM. Und der Compiler ersetzt gar nix, es ist die IDE. Dazu muss allerdings die betroffene Form zum Speichern gezwungen werden, entweder manuell oder mit Andys Automatisch-auf-und-wieder-Zumach-Tool (DFMCheck). :)

Überredet :-D

himitsu 11. Mai 2010 07:53

Re: TLabel durch TJVLabel ersetzen
 
Ich mach sowas recht selten und da reichte mir die manuelle Methode bisher vollkommen aus:
- entweder über einen externen Texteditor die DFM und die PAS editieren
(vorallem nötig wenn man Komponenten ersetzen will, welche die eigene IDE nicht kennt)
- oder über die IDE mit "als Text anzeigen" die DFM und dann die PAS bearbeiten.
Bei Beidem einfach nur Suchen+Ersetzen.

Wenn man über einen externen Editor eine Unit (.pas) bearbeitet und dann wieder in die IDE wechselt, dann bekommt diese von der Änderung was mit und fragt, ob sie die geänderte Datei neu laden soll ... falls diese gerade in der IDE geladen ist.

Zitat:

Zitat von uligerhardt
es ist die IDE

bei mir hatte die IDE noch nie was in der PAS ersetzt, nur weil ich was in der DFM geändert hab.

PS: Es ist nichtmal nötig, daß ein Feld in der Form für jede Komponente existiert.
Wenn man niemals auf diese Komponente zugreift (z.B. bei vielen Labels, welche einfach nur "statisch" etwas anzeigen), wozu braucht man dann dafür überhaupt einen "Zeiger" (die Objektvariable) dafür?
Diese Variable kann man sich also auch ganeusogut einsparen. (je 4 Byte weniger in der Formular-Instanz :roll: )

uligerhardt 11. Mai 2010 08:15

Re: TLabel durch TJVLabel ersetzen
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von uligerhardt
es ist die IDE

bei mir hatte die IDE noch nie was in der PAS ersetzt, nur weil ich was in der DFM geändert hab.

Dann hast du noch nicht das Richtige ausprobiert. :P
  • Such dir ein Formular mit bspw. einem Button.
  • Geh in den DFM-Textmodus (Alt-F12)
  • Ersetze den Klassennamen TButton durch tbitbtn.
  • Alt-F12 und speichern ==> Die IDE will die Klassendeklaration anpassen.

himitsu 11. Mai 2010 08:19

Re: TLabel durch TJVLabel ersetzen
 
ahhhhhhh, grad ausprobiert ... war nur noch nie auf die Idee gekommen gleich danach zu speichern. :oops:

uligerhardt 11. Mai 2010 08:31

Re: TLabel durch TJVLabel ersetzen
 
Zitat:

Zitat von himitsu
ahhhhhhh, grad ausprobiert ... war nur noch nie auf die Idee gekommen gleich danach zu speichern. :oops:

Ich find die Funktionalität sehr nützlich und benutze sie nahezu ausschließlich, wenn ich mal Komponenten austauschen will. Ansonsten bin ich ja eifriger GExperts-Nutzer, aber Replace Components ist nichts für mich - schmeißt z.B. die Reihenfolge der Komponenten durcheinander, was aufgeblähte Diffs im VCS zur Folge hat.


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