ich benötige für mein GUI 2 voneinander abhängige Listboxen. Nun möchte ich gerne diese beiden mehr oder weniger miteinander verbinden, d.h. wenn ich bei einer der beiden Listboxen scrolle, dann soll die andere auch mitscrollen. Markiere ich einen odere mehrere Einträge einer Listbox, sollen diese auch bei der anderen Listbox markiert werden.
Das "Feature" mit dem gegenseitigen Einträge markieren habe ich bereits durchgeführt, jetzt würde nur noch das mit dem scrollen fehlen. Ich vermute das es irgendwie mit der Eigenschaft 'ListboxTop' funktioniert, habe es allerdings nicht geschafft beide Listboxen zu "synchronisieren".
gute Frage. Man könnte es über die figure Callbacks realisieren. Soweit ich weiß bietet Matlab keine Möglichkeit die Sliderinformationen der Listbox via Callback abzugreifen.
z.B.
Code:
function figure1_WindowScrollWheelFcn(hObject, eventdata, handles) ifstrcmp(get(gco,'Tag'),'listbox1')% tag der "haupt"-listbox set(handles.listbox2,'ListboxTop',get(handles.listbox1,'ListboxTop'));% "nebenlistbox" setzen end
function figure1_WindowButtonMotionFcn(hObject, eventdata, handles) ifstrcmp(get(gco,'Tag'),'listbox1') set(handles.listbox2,'ListboxTop',get(handles.listbox1,'ListboxTop'));
end
function listbox1_Callback(hObject, eventdata, handles) set(handles.listbox2,'ListboxTop',get(handles.listbox1,'ListboxTop'));
danke für deine Antwort und Bemühung. Dein Lösungsvorschlag kommt meiner Vorstellung ziemlich nahe, allerdings mit einer Einschränkung.
Aber mal von vorne.
Also, wenn ich den Balken der "Hauptlistbox (listbox1)" mit der Maus greife und dann nach Belieben nach oben oder unten verschiebe, so verschiebt sich der Balken der "Nebenlistbox (listbox2) sofort und fehlerfrei mit. Genauso sollte es ja sein. Das funktioniert soweit also sehr gut.
Nun das Szenario wenn ich ein Element in der "Hauptlistbox" markiere (selbes Element wird bei mir auch in der 2ten oder Nebenlistbox markiert) und dann die Pfeiltasten (oben/unten) der Listbox klicke, dann wird zwar der Inhalt der "Hauptlistbox" bewegt, nicht aber der Inhalt der "Nebenlistbox". Zumindest nicht sofort, erst wenn ich die Maus bewege (zB. weg von den Pfeiltasten der Hauptlistbox), dann wird die Scrollbar synchronisiert.
Letztlich praktisch nur ein wenn man so will Schönheitsfehler, aber gibt es dazu noch eine Optimierung. Hast du dazu noch eine Idee?
ja da hast du recht. Das liegt daran wie oben beschrieben, dass man keine Informationen über die Scrollbar der Listbox abrufen kann wenn diese via drücken auf die Pfeile abrufen kann. Es fehlt hierfür schlicht und einfach die Möglichkeit einen Callback für dieses zu definieren. Weder die figure Callbacks noch die Listbox Callbacks werden abgefeuert. Wenn du dieses machen möchtest müsstest du dich mit Java auseinandersetzen. Z.B. mittels des findjobj M-File vom MFE
danke für deinen Nachtrag. Ich habe schon gedacht das es auf die Anwendung von Java rauslaufen wird. Soweit ich das beurteilen kann und verstehe stehen die Java-Dinge immer mit "undocumented Matlab" im Zusammenhang.
Was ich damit sagen will ist, ich bin mir nicht ganz sicher ob man/ich auf die Technik zurückgreifen soll.
Dennoch gut zu wissen wie es damit funktioniert.
Schöne Grüße
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
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.