Caption zur Laufzeit ändern

8. Juni 2007 10:12

Hallo,

ist es Möglich, die Caption einer Spalte zur Laufzeit zu ändern?

Ich habe eine Tabelle mit den Spalten 1 - 12, die die letzten Monate wiederspiegeln.
Feld 12 ist der Vormonat, Feld 11 der davor usw.
Jetzt währe es schöner wenn Feld 12 z.B. Mai07 anzeigen würde.

Geht das?
Gruß Mikka

8. Juni 2007 10:23

Moin Mikka,

im Verkaufsauftrag wird je nach Boolean "Preise inkl. MWSt." im Kopf die Caption der beiden Felder VK-Preis und Zeilenbetrag in der Zeile geändert bzw. angepaßt.
Meinst Du so in dieser Art ?

In einigen Matrix-Forms kann auch der Spaltennamen anstelle des Codes oder des Datums angezeigt werden, Saldo nach Dim. z.B.

Wolfgang

P.S.: Schade, dass Du morgen nicht dabei bist ... :-/

8. Juni 2007 10:38

Hallo Mikka,

dies kann über die CaptionClass im Tabellenfeld erledigt werden. Schau dir dazu mal das von Voyager genannte Feld "Unit Price" in Tabelle 37 an. Hier gibt es einen Eintrag im Propertie CaptionClass das auf eine Funktion dieser Tabelle verweist. Diese gibt einen String zurück, der dann in der Codeunit 1 CaptionClassTranslate in eine Bezeichnung umgesetzt wird. Schau dir dazu auch den Documentation-Trigger der Codeunit 1 an.

Gruß
Frank

8. Juni 2007 11:11

*Fein*
Danke für die Info, ich hatte zwar davon gehört jedoch keinen Ahnung wo und wie ich es einbinden kann.

Voyager hat geschrieben:P.S.: Schade, dass Du morgen nicht dabei bist ... :-/

Danke für die Anteilnahme, ich währe sehr gerne gekommen, hat mehrere Gründe das ich nicht kommen kann :-(
Vielleicht kannst du für mich ein Bier trinken?


Edit by Mikka
Hier ist bereits ein Beitrag zum Thema:
CaptionClass wird leer ausgegeben

3. September 2007 10:29

Kann ich auf diese oder ähnliche Weise auch die Caption eines Buttons ändern ...?

EDIT: Habs jetzt selber ausprobiert: Diesmal auf die Form eine Funktion mit Rückgabewert Text 80, dort über eine CASE-Anweisung entsprechende EXITs belegt und diese Funktion unter der Button-Eigenschaft CaptionClass eingetragen.

Habs mir komplizierter vorgestellt. Ich dachte, da wäre immer ein Umweg über ein Codeunit notwendig oder so ;-)

3. September 2007 11:21

Hallo Natalie,

bei mir funktioniert das mit der Caption eines Buttons nicht. Ich habe auf der Form eine neue Funktion mit der Bezeichnung GetCaption. Diese Bezeichnung trage ich in der Button-Eigenschaft CaptionClass ein. In der Funktion steht der folgende Code:

Code:
EXIT('Test');

Was hast du denn anders?

Gruß, Marc

3. September 2007 11:37

Nee, das klingt erst einmal völlig identisch ....

Ist dies ein Button ohne MenuItems? Nicht dass du die Caption versehentlich auf ein MenuItem gesetzt hast.
Ich gehe davon aus, dass die Funktion GetCaption einen Rückgabewert von Text 80 (ohne Namen) hat?

Edit: Ich weiß nicht, ob dies eine Auswirkung hat, aber leere mal die Caption-Eigenschaft des Buttons.

3. September 2007 13:13

Marc Teuber hat geschrieben:bei mir funktioniert das mit der Caption eines Buttons nicht. Ich habe auf der Form eine neue Funktion mit der Bezeichnung GetCaption. Diese Bezeichnung trage ich in der Button-Eigenschaft CaptionClass ein. In der Funktion steht der folgende Code:

Code:
EXIT('Test');

Gruß, Marc

Was hast du denn genau in der CaptionClass jetzt stehen?

mit deiner Funktion GetCaption müßte der Eintrag
'1,5,,' + GetCaption
lauten.

3. September 2007 13:17

Nö, braucht er nicht. Siehe mein Beitrag über seinem ersten: Ganz einfache Funktion ohne Übergabeparameter und dafür mit einem Text-Rückgabewert.

3. September 2007 13:17

habe auch so meine Probleme mit CaptionClass...

- bei Buttons geht's überhaupt nicht
- bei Labels funktioniert es nur, wenn das Label ein Parent-Control (Typ Textbox) hat und im Caption-Class des Parent-Controls der entsprechende Ausdruck steht.
die CaptionClasTranslate in Codeunit 1 wird anscheinend nur dann aufgerufen

- ist bei mir jedenfalls so

wie kriegt man's auf dem Button hin?

3. September 2007 13:20

elf hat geschrieben:habe auch so meine Probleme mit CaptionClass...
- bei Buttons geht's überhaupt nicht
wie kriegt man's auf dem Button hin?

Hab ich doch weiter oben beschrieben ... *wunder*

3. September 2007 13:31

hab's (glaube ich) genau so gemacht wie beschrieben:

eine Funktion GetCap in der Form wie beschrieben mit Rückgabewert 'test'

ins Property CaptionExpr des Button GetCap() geschrieben
- nix passiert

wenn ich im Codeunit1 in die Funktion 'CaptionClassTranslate' ein Message('xx') reinschreibe, dann wir dieses überhaupt nicht aufgerufen,
nur dann wenn es so wie oben beschrieben über ein Parent-Control einer TextBox gemacht wird

3. September 2007 14:27

Hi Natalie,

mit welcher Navision-Version hast du das gemacht? Ich hab die identischen Probleme wie Edgar.

Gruß, Marc

3. September 2007 14:32

5.0.
Vielleicht habe ich aber auch unsauber getestet, und der Default-Wert passte zufällig mit meinem gewünschten Ergebnis (weil Test auf die Schnelle, und direkt im Anschluss habe ich erfahren, dass ich die dynamische Überschrift doch nicht brauche und sie gelöscht).

3. September 2007 14:50

ich habe 3.7 und 4.01 - bei beiden geht's nicht
5.0 habe ich 'ne Demo, kann ich aber nicht installieren, da es XP verlangt :-( - habe "nur" 2000.
Ich würde diese Funktion wirklich gerne benutzen, aber scheint wirklich nur für Labels mit Parent zu gehen - schade

3. September 2007 17:22

Hallo,

auch bei mir funktionieren CaptionClasses weder unter 3.7 noch unter 5.0.

Man kann bei Buttons aber dynamische Beschriftung "hintricksen". Das Prinzip ist das Gleiche, dass auch für die Anzeige in den Forms genutzt wird, ob eine Bemerkung vorhanden ist oder nicht. Einfach eine Textbox (Border=Nein, BackTransparent=Ja,Editable=Nein,Focusable=Nein) unter den Button legen, der ebenfall BackTransparent=Ja hat und weiterhin ShowCaption=Nein. Der Textbox kann dann eine Textvariable zugewiesen werden, die wie auch immer gefüllt wird.

Ist ein bischen geschummelt aber funzt.

Gruß
Frank

3. September 2007 17:28

ja, das ist auch die Lösung die ich bisher "zurechtgeschummelt" habe - ist halt "von hinten durch die Brust ins Auge" geschustert. Wäre schöner, wenn man die Caption (und auch einige andere Properties) zur Laufzeit ändern könnte.

Aber: man kann ja nicht alles haben....

4. September 2007 22:06

Habt Ihr diesen Beitrag schon gesehen:

Caption Class

5. September 2007 06:16

ja, danke das ist wirklich ein nettes Trickchen, hatte es auf meiner Suche nach einer Lösung auch schon mal gesehen.
Die Codeunit1 ist aber nicht so sehr das Problem, das Problem ist, dass der Trigger 15 (CaptionClassTranslate) in Codeunit 1 bei Buttons und Labels (ohne Parent) erst gar nicht aufgerufen wird

Gruß
Edgar

5. September 2007 09:18

Hast du schon versucht, für den Button ein Label zu machen, in dem dann die CaptionClass einzutragen und das Label unter den durchsichtigen Button mit deaktivierter ShowCaption zu legen?

5. September 2007 09:34

ja, auch das habe ich schon getan - aber: CaptionClass für ein Label funktioniert ebensowenig wie für einen Button. Um das Caption eines Labels zur Laufzeit zu ändern braucht dieses ein ParentControl, dort kann ich dann in CaptionClass etwas eintragen was dann das Caption des Labels verändert. Ich muss also zusätzlich zu dem Button ein Label einrichten, das als Parent eine TextBox hat, über die CaptionClass dieser Textbox (die noch dazu irgendwie versteckt werden muss) kann ich dann den gewünschten Effekt erzielen...

Da ist es schon einfacher hinter den Button gleich eine Textbox zu legen und den Inhalt der Textbox zu verändern - so wie es Frank beschrieben hat

5. September 2007 09:46

Ich habe mich missverständlich ausgedrückt, das Label soll als Parent den Button haben, und im Button dann die CaptionClass eintragen, das geht auch nicht?
Dann ist die Methode mit der Textbox hinter dem Button wirklich die einfachste.

5. September 2007 09:58

nö, geht auch nicht

anscheinend geht CaptionClass wirklich nur für TextBoxen

Re: Caption zur Laufzeit ändern

16. April 2009 14:41

hab mal ne "dumme" Frage: wie bekomme ich die Textbox UNTER den Button?

Re: Caption zur Laufzeit ändern

16. April 2009 15:06

das hat Frank weiter oben beschrieben (letzter Beitrag von Frank)