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

Element in Listbox löschen

 

Peter Quint
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 21.02.11
Wohnort: Lübeck
Version: R2010b
     Beitrag Verfasst am: 07.06.2011, 15:49     Titel: Element in Listbox löschen
  Antworten mit Zitat      
Hallo,
ich habe eine GUI mit Guide erstellt. In dieser befindet sich eine ListBox und (ich vereinfach mal meine GUI) ein Button zum Löschen vom markierten Eintrag der Listbox.

Leider bekomme ich einen Warnung (die meine ListBox verschwinden lässt) wenn ich das letzte Element in der Liste löschen will (alle anderen Elemente kann ich fehlerfrei löschen).

Code:

Warning: single-selection listbox control requires that Value be an integer within String range
Control will not be rendered until all of its parameter values are valid
 


Code:

tmpNr=get(handles.JobList, 'Value');
tmpStr=get(handles.JobList, 'String');
tmpStr(tmpNr)=[];
set(handles.JobList, 'String', tmpStr);
guidata(hObject, handles);


Ein kleines Beispiel:
tmpStr =

'Initialisiere SASSU'
'Initialisiere Motor'
'1: 180 '
'2: 180 '
'3: 180 '
'4: 180'

Wenn tmpNr == 1,2,3,4 oder 5 ist, funktioniert alles prima, bei tmpNr==6 macht er Probleme
Private Nachricht senden Benutzer-Profile anzeigen


Peter Quint
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 21.02.11
Wohnort: Lübeck
Version: R2010b
     Beitrag Verfasst am: 07.06.2011, 15:55     Titel:
  Antworten mit Zitat      
Wie dem so immer ist, gerade wenn man die Frage gepostet hat, fällt einem die richtige Idee ein:

Wenn man das letzte Element makiert hat und dieses löschen will, ist die Liste kürzer als der Value.
Sprich: Die Liste ist 2 Zeilen lang und ich makiere Zeile 2 (->Value==2), dann kann ich diese Zeile nicht löschen, da die Liste nur 1zeilig ist, aber Value noch auf 2 steht.

Die Lösung: Davor Value auf Value -1 stellen.
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 28.06.2011, 07:56     Titel:
  Antworten mit Zitat      
Ich hab das gleiche Problem aber bei mir funktioniert das nicht so.
Ich habe hier mal den Callback meines edit_fensters gepostet.

Ich will Messwerte suchen die die im edit-Fenster eingegebenen Anfangsbuchstaben haben. Jedoch habe ich das Problem dass eben die listbox verschwindet wenn bei einer neuen Suchanfrage im schlechtesten Fall überhaupt keine Messwerte gefunden werden.

Code:

function edit_suchemesswerte_Callback(hObject, eventdata, handles)

set(handles.listbox_messvars,'Value',-1);
[handles.messelemente.name handles.messelemente.typ] = IncaBrowseMeasureElements([get(hObject,'String'),'*'],get(handles.main.devicename,'String'));
set(handles.listbox_messvars,'String',handles.messelemente.name,'MAX',length(handles.messelemente.name));

guidata(hObject,handles);
 


Hat jemand ne Idee woran das liegt??
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 28.06.2011, 08:17     Titel:
  Antworten mit Zitat      
Peter Quint hat doch die Lösung dazu gepostet. Das ist vermutlich auch bei dir das Problem. Welche Fehlermeldungen treten auf?
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 28.06.2011, 08:22     Titel:
  Antworten mit Zitat      
Die Value hab ich ja gleich in der ersten Zeile des Callbacks auf -1 gesetzt.
s.o.

Fehlermeldung:
Warning: multi-selection listbox control requires that Value be an integer within String
range
Control will not be rendered until all of its parameter values are valid
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 28.06.2011, 08:50     Titel:
  Antworten mit Zitat      
Habe es jetzt so gelöst:
Code:

function edit_suchemesswerte_Callback(hObject, eventdata, handles)

[handles.messelemente.name handles.messelemente.typ] = IncaBrowseMeasureElements([get(hObject,'String'),'*'],get(handles.main.devicename,'String'));
if strcmp(handles.messelemente.name,'')
    set(handles.listbox_messvars,'String','-','Value',1);
else
    set(handles.listbox_messvars,'String',handles.messelemente.name,'Value',1,'MAX',length(handles.messelemente.name));
end

guidata(hObject,handles);
 


Setze die Value einfach immer auf 1 und wenn nichts gefunden wird wir ein '-' eingefügt.

Nicht soo schön aber ok, die Auswahl komplett aufheben geht ja anscheinend nicht.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter Quint
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 21.02.11
Wohnort: Lübeck
Version: R2010b
     Beitrag Verfasst am: 28.06.2011, 08:54     Titel:
  Antworten mit Zitat      

Element in Listbox löschen
Klicke hier, um den Artikel bei Amazon.de anzuschauen.

mawi hat Folgendes geschrieben:
Die Value hab ich ja gleich in der ersten Zeile des Callbacks auf -1 gesetzt.


Der Wert Value muss immer größer als 0 sein.

Der Wert von get(handles.listbox_messvars,'Value') ist die Zeile, die gerade in der Listbox markiert ist. Da die Listbox immer min. eine Zeile haben muss, darf 'Value' nicht null oder kleiner sein - oder (wie in dem ursprünglichen Problem) größer als die Anzahl von Zeilen.

Die Lösung Deines Problemes:

Code:

if get(handles.listbox_messvars,'Value') >1  
   set(handles.listbox_messvars,'Value',get(handles.listbox_messvars,'Value') -1);
end
 
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.