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

Popup-Menü mit variabler Anzahl von Auswahlmöglichkeiten f

 

teutopixx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 14:29     Titel: Popup-Menü mit variabler Anzahl von Auswahlmöglichkeiten f
  Antworten mit Zitat      
Hallo,

seit einiger Zeit zerbreche ich mir den Kopf an dieser Aufgabenstellung:

Ich habe ein Array (genannt: test), welches eine variable Anzahl (maximal 9) Spalten besitzt.
Hinter jeder der maximal 9 Spalten verbirgt sich ein Struct-Array.

So gibt mir z. B. der Befehl
Code:

test(1,2).Name
 

den Namen Müller aus.

oder
Code:

test(1,2).Name
 

den Namen Mustermann.

Das geht bis maximal test(1,9).Name.


Nun möchte ich folgendes bewirken:

Es soll in meinem GUI ein Popup-Menü geben, in dem die Namen angezeigt werden.
Diese Aufgabe klingt recht einfach, nur bekomme ich die "Dynamik" da nicht rein.

Es kann nämlich Fälle geben, in dem die Spalten 3-9 gar nicht existieren. Also würde

Code:

test(1,9).Name
 

die Fehlermeldung "Index exceeds matrix dimensions" ausgeben.


Bisher habe ich an folgendes gedacht

Code:

popup01 = test(1,1).Name
popup02 = test(1,2).Name
 


Und dann
Code:

set(handles.popup_Name, 'String', {popup01 popup02});
 


Aber was passiert, wenn ich die Namen 1 - 9 auch noch anzeigen will, oder es nur die Namen 1-6 gibt?
Kann ich das irgendwie mit einer Laufvariable (z. B. n = 9) und einer Überprüfung, ob die Spalten existieren, kombinieren?


Und dann noch eine Frage:
In einem weiteren Popup möchte ich die Vornamen anzeigen lassen. Aber nur die Vornamen von Personen, die mit Nachnamen "Müller" heissen. Oder "Mustermann". Oder oder oder. Gibt es also in test(1,9).Name und test(1,3).Name den Namen Mustermann, sollen in einem anderen Popup deren Vornamen (z. B. Peter und Gaby) erscheinen.
Das GUI muss also in den Feldern test(1,x).Name überprüfen, ob der Name y vorhanden ist, und wenn ja, die Vornamen, die z. B. in test(1,x).Vorname stehen anzeigen.
_________________

----
teutoPIXX
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.05.2011, 09:04     Titel: Re: Popup-Menü mit variabler Anzahl von Auswahlmöglichkeit
  Antworten mit Zitat      
Hallo teutopixx,

Man kann bei "test(1, 9).Name" übrigens die erste Dimension weglassen. "test(9).Name" ist kompakter und sogar etwas schneller.

Code:
test(1).Name = 'Heinz';
test(2).Name = 'Anna';
test(3).Name = 'Kurt';

NameList = {test.Name};
% Das ist eine Abkürzung für:
% NameList = {test(1:numel(Name)).Name};

set(handles.popup_Name, 'String', NameList);
 


Zitat:
In einem weiteren Popup möchte ich die Vornamen anzeigen lassen. Aber nur die Vornamen von Personen, die mit Nachnamen "Müller" heissen.

Code:
NameList = {test.Name};
VornameList = {test(strcmp(NameList, 'Müller')).Vorname};

Hier wird der LOGICAL-Vektor, den STRCMPI zurück gibt, direkt zur Indizierung verwendet. Das ist effizienter, als zuerst per FIND einen Index-Vektor zu erzeugen - siehe "logical indexing".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
teutopixx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2011, 13:10     Titel:
  Antworten mit Zitat      
Hey Jan,
soweit erstmal vielen Dank!

Kannst Du mir auf die Schnelle einen Tipp geben, wie z. B. das Kriterium für die Überprüfung nach Wortteilen (also z. b. nur Mül) lautet?
Also dass ich nicht nach dem exakten Namen "Müller" suche, sondern nach allen in denen die Buchstabenfolge "mül" vorkommt.
_________________

----
teutoPIXX
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.05.2011, 13:28     Titel:
  Antworten mit Zitat      
Hallo teutopixx,

Den Befehl STRCMP hatte ich bereits gezeigt. Wenn Du dann etwas suchst, das etwas ähnliches macht, schau Dir die "See also: " Zeile von "help strcmp" an. Dort findest Du nützliche Hinweise, die Mathworks extra für solche Suchen dort hingeschrieben hat.

In Deinem Fall: STRCMPI falls der String-Abschnitt am Anfang stehen soll, REGEXP für beliebige Muster-Vergleiche.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2025 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.