2016-07-25 15 views
1

In einer Dolphin Smalltalk Treeview würde ich gerne ein benutzerdefiniertes Symbol verwenden, abhängig vom Status des angezeigten Objekts (abweichender Status, anderes Symbol) Wie kann ich das tun?Wie benutze ich ein benutzerdefiniertes Icon in einem Delfin Smalltalk Treeview?

Ich kann nicht wirklich verstehen, wie man ein "mein" Symbol verwendet. Ich habe eine Klasse "Verbindung" mit einer Instanzvariable "verbunden" und zwei Klassenmethoden "connectedIcon und unconnectedIcon, die Symbolbilder zurückgibt. Dann eine Instanz Funktion" Symbol ", die das eine oder das andere Bild basierend auf der zurückgibt Verbindungszustand.

ich Instanzen dieser Klasse zu einer Baumansicht hinzufügen und den Namen der Verbindungen sehen. Aber wie meine Icons zeigen?

ich versuchte, den getImageBlock meines Moderatoren Ansicht mit der sustitute folgender Ausdruck [: obj | obj icon] aber es funktioniert nicht (nichts scheint zu passieren.)

Dies ist in meinem Presenter gemacht initialisieren:

initialisieren Super initialisieren. treePresenter-Ansicht getImageBlock: [: obj | obj icon]

was ist los damit? Mit freundlichen Grüßen Maurizio

Antwort

3

Wenn Sie eine TreeView bearbeiten, ist eine der Eigenschaften getImageBlock. Standardmäßig ist es nicht wirklich ein Block, sondern ein anderes Objekt, das die Nachricht # 'value:' versteht (die Klasse IconicListAbstract). Sie können diese Eigenschaft durch einen Codeblock (oder ein anderes Objekt, das # 'value:' versteht) ersetzen und das Bild beantworten, das angezeigt werden soll.

+0

Danke, ich fand auch nützlich die Delphin Blog-Tutorials "mit Symbolen" und "Schönheit mit weniger Tier". Ich werde experimentieren ... –

+0

Ich kann nicht wirklich verstehen, wie man ein "mein" Icon benutzt. Ich habe eine Klasse "Verbindung" mit einer Instanzvariable "verbunden" erstellt –

+0

Scheint, dass der in getImageBlock definierte Block einen numerischen Index zurückgeben soll: (das muss wohl der Index meines Bildes sein) wenn zum Beispiel Setze ich den Block auf [: obj | 1] Alle Elemente der Liste zeigen ein internes Symbol , wenn ich den Block auf [: obj | 2] Alle Elemente der Liste zeigen ein anderes Symbol an und so weiter. Die Frage ist: Wo sollte ich meine Symbole und wie bekomme ich den zugehörigen Index? Btw, ich habe den Block in der createSchematicWiring-Methode meines Presenter gesetzt. Ist das der richtige Ort? Maurizio –

1

In Microsoft Windows werden Symbole normalerweise in einer DLL gespeichert. Sie sollten in der Lage sein, einen Icon-Explorer oder ein Bearbeitungswerkzeug zu verwenden, um die Symbole in einer DLL zu sehen. Zum Beispiel, holen Sie IconExplorer von http://www.mitec.cz/iconex.html und versuchen Sie, DolphinDR7.dll zu öffnen. Passen die Symbole und Zahlen zu dem, was Sie sehen, wenn Sie eine Nummer in Ihrer Anwendung zurückgeben?

Informationen zum Ermitteln (oder Überschreiben) der verwendeten Ressourcenbibliothek finden Sie unter SessionManager >> # 'defaultResLibPath'.

In der Regel wird der getImageBlock mithilfe des Eigenschafteneditors im GUI-Editor festgelegt, die Einstellung über Code kann jedoch ebenfalls funktionieren.

0

Wundervoller Delphin Smalltalk!

hatte ich zwei Probleme

1), wie und wo die getImageBlock Methode meiner Treepresenter zu ändern. 2) Wohin mit den Symbolen und wie der Bildindex jedes Symbols angezeigt wird.

Dies ist die Lösung:

1) es ist nicht erforderlich. Die Strukturansicht sendet eine #iconImageIndex "Nachricht an mein Modell Dies wird von der Standardmethode (in der Object-Klasse) behandelt, die an mein Objekt die Nachricht #icon sendet und an das Ergebnis dieser Nachricht (ein Symbol) die Nachricht # iconIndex Diese Nachricht wird von dem Symbol verstanden, das mit seinem eigenen iconIndex antwortet.

So ist die einzige Methode, die ich impement müssen, ist #icon in meiner Klasse Verbindung , die ich wie folgt umgesetzt:

Symbol ifTrue geöffnet: [^ Anschluss connectedIcon] ifFalse: [^ Anschluss unconnectedIcon]

In der Klasse selbst werden die beiden Symbole in das Bild importiert, indem die createIconMethod, , wie im Blog-Artikel 'Schönheit mit weniger Tier' beschrieben, ausgewertet wird.

So sind meine Probleme gelöst.

Danke an alle. Maurizio.