|
mimi |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2008, 09:02
Titel: ActiveX TreeView
|
|
|
|
|
Hallo zusammen
Ich möchte das ActiveX Element TreeView verwenden. Dabei sollte es alles darstellen wenn sich das Fenster öffnet. Deshalb habe ich die Knotenerzeugung in die OpeningFcn des TreeView geschrieben. Starte ich nun alles über den Guide funktioniert es ohne Probleme, öffne ich es jedoch über ein m-File mit Hilfe von open TreeViewTest.fig öffnet sich ein leeres TreeView. Weiss jemand woran das liegen könnte?
Dann noch eine andere Frage, kann man den GUI Daten übergeben beim öffnen. Ich möchte die Daten welche im TreeView darstellt werden sollen der OpeningFcn des TreeViews übergeben damit dieser weiss was er darstellen soll?
Die Knoten erzeuge ich so:
RootNode:
ChildNode:
Beim Child direkt bei der Initialisierung den Parent zu definieren
erzeugt bei mir eine Fehlermeldung. Deshalb mache ich es etwas umständlich.
Ich hoffe ich habe mich verständlich ausgedrückt und hoffe, dass jemand mir helfen kann. Danke schon im voraus.
gruss mimi
|
|
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 13.02.2008, 10:13
Titel:
|
|
Die ActiveX in MATLAB GUI's laufen nicht gerade robust...
Wie wärs mit der undokumentierten Funktion UITREE? Experimentiere mal damit.
Beispiele findest Du wenn Du die Funktion im Editor(!) öffnest
>> edit uitree
MfG
Zuletzt bearbeitet von outsider am 13.02.2008, 10:52, insgesamt einmal bearbeitet
|
|
|
mimi |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2008, 10:31
Titel: TreeViewTest_OpeningFcn wird nicht aufgefrufen
|
|
hallo zäme
Habe gerade bemerkt, dass wenn man das Gui über open name.fig öffnet die openingFcn nicht aufgerufen wird. Dies passiert nicht nur bei diesem Gui bei welchem ich das ActiveX Element verwenden sondern auch bei einem anderen GUI ohne ActiveX Elemente.
Öffnet man die GUIs über den Guide mit der Play taste, wird in beiden Fällen die openingFcn aufgerufen. Weiss jemand woran das liegt.
gruss mimi
|
|
|
mimi |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2008, 10:43
Titel: Lösung
|
|
Hallo
Ich habe herausgefunden wieso es die OpeningFcn nicht öffnet. Wenn man open name.fig benutzt wird sie nicht aufgerufen. Man muss das m-File des GUIs aufrufen, dann funktionierts.
Evt. hift das jemand anderem auch, wenn er auf das Forum stösst, deswegen hab ich das hier noch reingeschrieben.
Ein Problem habe ich noch:
Wie kann ich dem GUI Daten übergeben. Unabhängig ob es ein ActiveX Element ist oder nicht?
Hoffe hier weiss jemand Rat.
Gruss mimi
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 13.02.2008, 11:00
Titel:
|
|
Zitat: |
Wenn man open name.fig benutzt wird sie (OpeningFcn) nicht aufgerufen. Man muss das m-File des GUIs aufrufen, dann funktionierts. |
Kannst mir sagen wo geschrieben steht, das man eine GUI-Anwendung mit OPEN('.FIG') startet? Ist das nicht selbstverständlich, das man den zugehörigen M-File startet?
Zitat: |
Wie kann ich dem GUI Daten übergeben. |
in dem Du den M-File einfach mit Parametern aufrufst. Diese sind dann über VARARGIN in der OpeningFcn alle Abrufbar. Vergiess nicht die Parameter an den Handles-Strukt zu hängen, damit die auch in den Callbacks sichtbar werden
also
>> mygui('hallo',magic(3))
in der OpeningFcn muss stehen:
===
handles.par_1 = varargin{1} ; % 'hallo'
handles.par_2 = varargin{2} ; % magic(3)
guihandles(hObject,handles); somit wird der neue Handles_struct aktualisiert.
===
MfG
|
|
|
mimi |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2008, 11:19
Titel: Danke
|
|
Hallo outsider
Das mit dem Open hab ich in irgendeinem Forum gefunden, weiss nicht mehr genau wo. Aber ist ja nicht mehr so wichtig, funktioniert jetzt.
Bezüglich des Übergabewertes, es funktioniert fast so wie du es beschrieben hast. Das updaten des handles musste ich anders lösen. Die Funktion guihandles erwartet nur einen Parameter. Deshalb habe ich nun guidata(hObject,handles) verwendet. D.h. diese Zeile ist schon automatisch in der OpeningFcn, also schrieb ich die Zeilen
handles.par_1 = varargin{1} ; % 'hallo'
handles.par_2 = varargin{2} ; % magic(3)
vor guidata(hObject,handles). So funktioniert nun alles.
Danke für deine Hilfe
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 13.02.2008, 12:31
Titel:
|
|
natürlich GUIDATA...
mein Fehler... habe GUIDATA gemeint, aber GUIHANDLES geschrieben.
MfG
|
|
|
mimi |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.02.2008, 09:52
Titel: Node finden mit bestimmtem Key
|
|
Ich habe mich nun einigermassen in das TreeView Activex eingelesen und es funktioniert auch schon sehr viel.
Nun bin ich aber auf ein Problem gestossen:
Ich möchte bei einem bestimmten Node, dessen Key ich kenne, die Texteigenschaft ändern. Wie finde ich diesen Node am schnellsten. Mein erster (brute-force) Ansatz ist einfach alle Nodes durchzusuchen und die Keyeigenschaft mit dem bekannten Key zu vergleichen. Jedoch funktioniert dies nicht, da
die Fehlermeldung:
??? No appropriate method or public field Bold for class
Interface.Microsoft_Windows_Common_Controls_6.0__SP6_.INodes.
erzeugt. Auch
funktioniert nicht.
Weiss jemand wie ich vorgehen soll. Danke für eure Hilfe
|
|
|
mimi |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.02.2008, 14:29
Titel: Funktion Find
|
|
Hallo zusammen
Ich habe wieder etwas weiteres herausgefunden:
es gibt eine find(string key,bool searchinChildnodes) funktion auf der NodeCollection also wollte ich
handles.activex.Nodes.find(key,true) ausführen und so den Knoten suchen lassen mit key. Ich weiss, dass dieser Knoten existiert, aber es gibt mir handle: 0-by-1 zurück.
Weiss jemand wieso. danke für eure Hilfe, wenn mir überhaupt jemand helfen kann (Habe das Gefühl, dass über das Thema activex nicht so viele bescheid wissen, hoffen kann man jedoch)
gruss mimi
|
|
|
mimi |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2008, 15:47
Titel: Lösung gefunden
|
|
Hallo zusammen
Kurz als info für alle die es interessiert, die find Funktion funktioniert bei mir im Matlab nicht. Ich konnte es jedoch so lösen:
so kann man den i-ten Node aus der Collection auslesen:
actualNode = get(handles.activex2.Nodes, 'Item', i);
Ich lese alle Knoten aus und vergleiche den Key mit dem gesuchten Key. Ist nicht sehr elegant, aber funktioniert. Vielleicht hilft es mal jemandem der auf dieses Forum stösst.
Gruss mimi
p.s. wie kann man dieses Thread beantwortet markieren?
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|