2010-07-13 20 views
3

J'essaie de changer dynamiquement la valeur d'une étiquette dans un ApplicationModel dynamiquement pendant l'exécution de mon programme. J'ai essayé:Comment modifier activement la chaîne d'un label dans Visualworks smalltalk

(self builder labelAt: #Label4) labelString: 'Dynamic text here'. 

Mais obtenir un labelString pas compris l'erreur. Quand je lance:

(self builder labelAt:#Label4) 

je reçois "UndefinedObject". Ce qui suggère évidemment que je ne retourne pas mon objet Label.

Répondre

3

Essayez

(self builder componentAt: #Label4) widget labelString: 'whatever' 

ou

(self widgetAt: #Label4) labelString: 'whatever' 
0

Si vous avez un modèle pour votre nouvelle valeur il est assez facile à utiliser en lecture seule lié InputField à votre modèle. J'ose dire qu'avoir un Modèle pour une valeur changeante est généralement une bonne idée.

Si vous définissez InputField en lecture seule et sans bordure, il ressemblera exactement à une étiquette de texte normale. Du point de vue de l'utilisateur, la seule différence réside dans la possibilité de sélectionner et de copier du texte à partir du champ de saisie en lecture seule, ce qui est utile dans de nombreux cas.

D'autre part, les étiquettes peuvent avoir un aspect beaucoup plus riche. Vous pouvez utiliser Text, ComposedText ou Image pour eux.