WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

ActiveX TreeView

 

mimi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2008, 10:02     Titel: ActiveX TreeView
  Antworten mit Zitat      
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:
Code:
hNode = handles.activex1.Nodes.Add([],[],'keyRoot','TextRoot');

ChildNode:
Code:
hChildNode = handles.activex1.Nodes.Add([],'tvwChild','keychild','textchild');
set(hChildNode,'Parent',hNode);

Beim Child direkt bei der Initialisierung den Parent zu definieren
Code:
hChildNode = handles.activex1.Nodes.Add(hNode,'tvwChild','keychild','textchild');
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

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 13.02.2008, 11:13     Titel:
  Antworten mit Zitat      
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, 11:52, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
mimi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2008, 11:31     Titel: TreeViewTest_OpeningFcn wird nicht aufgefrufen
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 13.02.2008, 11:43     Titel: Lösung
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 13.02.2008, 12:00     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
mimi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2008, 12:19     Titel: Danke
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 13.02.2008, 13:31     Titel:
  Antworten mit Zitat      
natürlich GUIDATA...
mein Fehler... habe GUIDATA gemeint, aber GUIHANDLES geschrieben. Embarassed


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
mimi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2008, 10:52     Titel: Node finden mit bestimmtem Key
  Antworten mit Zitat      
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
Code:
handles.activex2.Nodes(i).Key

die Fehlermeldung:
??? No appropriate method or public field Bold for class
Interface.Microsoft_Windows_Common_Controls_6.0__SP6_.INodes.
erzeugt. Auch
Code:
get(handles.activex2.Nodes(i),'Key')
funktioniert nicht.

Weiss jemand wie ich vorgehen soll. Danke für eure Hilfe
 
mimi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2008, 15:29     Titel: Funktion Find
  Antworten mit Zitat      
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 Sad (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: ---
     Beitrag Verfasst am: 25.02.2008, 16:47     Titel: Lösung gefunden
  Antworten mit Zitat      
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?
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.