Oh, das hatte ich vergessen:
1. Bei meinem Programm handelt es sich um einen speziellen Editor, der mittels Kommandosprache oder Buttonklicks Daten innerhalb oder auch zwischen den einzelnen Vorlagen austauschen kann. Das Attribut Plain ist daher überall true. Insoweit gibt es keine Schriftgrößenunterschiede innerhalb der Vorlage. Ich nutze daher auch keine proportionale Schrift sondern CourierNew.
2. Im Pascalcode sieht man, dass die Prozedurversorgung sowohl Big und Hoehe enthält, wobei Big = Font.Size und Hoehe = Font.Height entspricht. Im Test zeigte sich, dass das Ändern eines Parameters genügt (der jeweils andere wird automatisch angepasst). Dabei ergab sich keine Funktionsverbesserung ob ich beide oder nur einen der beiden geändert habe (gleichwertig).
2. Die with-Anweisung ist etwas für Schreibfaule, dient der Comliper-Optimierung und ist zwingend erforderlich, wenn es um Bearbeitung innerhalb einer Schleife geht. Die Definition von Fi (File) ist
var Fi = array [1..cAnzahlVorlagen] of TRichedit
und enthält die einzelnen Vorlagen. Mit der for-Anweisung und der nachgeschalteten "with Fi[i]" -Anweisung weiß der Compiler, um welche Vorlage es sich handelt. Ohne with wäre die volle schreibweise z.B.
Delphi-Quelltext
1: 2: 3: 4: 5:
| if Form1.Richedit1.modified then begin Form1.Richedit1.Lines.Insert(FiLinAct,s); Form1.Richedit1.Font.Height:=hoehe; .. end |
und dann alles mit Form1.Richedit2. modified, Richedit3, usw. bis Richedit13
Nochmals: meine Lösung funktioniert ja, mein Unverständnis beruht darin, dass in einer leeren oder gespeicherten Vorlage die Height- und Size-Parameter zwar geändert werden, wenn man dann jedoch auf die Vorlage den Focus setzt und schreibt, sich diese Änderung nicht ausgewirkt hat (im Gegensatz zu einer Vorlage mit modified=true)
Könnte ja sein, dass ein XE-Compiler sich anders verhält. Dies kann ich derzeit aber noch nicht testen. Zumindest gibt es für jemanden der gleiches feststellt einen Lösungsansatz.