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

Editierbarkeit der Tabelle mit einer Schleife realisieren

 

anfänger91
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 18.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2013, 11:14     Titel: Editierbarkeit der Tabelle mit einer Schleife realisieren
  Antworten mit Zitat      
Hallo,

ich habe da eine Frage, ich habe über guide eine Tabelle erstellt. In meinem Programm wird in Abhängigkeit von einer eingegeben zahl in einem Editor-Feld (Variable a) die Anzahl der Spalten erstellt und der Spaltenkopf dem entsprechend beschriftet. also gibt man z.B. im Editor Feld eine 2 ein so erscheint eine Tabelle mit festgelegter Anzahl an zeilen und 2 Spalten im Spaltenkopf steht in der ersten Spalte nun Bereich1 und in der zweiten Bereich 2.... bisher habe ich das so realisiert:

Code:

if a>=1                
    ST = 'Bereich1';
    set(handles.tabelle,'ColumnEditable',[true]);
    if a>=2
       ST = {'Bereich1', 'Bereich2'};
        set(handles.tabelle,'ColumnEditable',[true true]);
        if a>=3
            ST = {'Bereich1', 'Bereich2', 'Bereich3'};
            set(handles.tabelle,'ColumnEditable',[true true true]);
            if a>=4
                ST = {'Bereich1', 'Bereich2', 'Bereich3','Bereich4'};
                set(handles.tabelle,'ColumnEditable',[true true true true]);
                if a>=5
            ST = {'Bereich1', 'Bereich2', 'Bereich3','Bereich4','Bereich5'};
            set(handles.tabelle,'ColumnEditable',[true true true true true]);
                end
           end
        end
    end
    set(handles.tabelle,'ColumnName',ST);
end
 


Ich würde dies aber nun gern auf maximal 15 Bereiche ausbauen mit Hilfe einer Schleife. Für die [true]-Matrix geht das glaub so: ein weiteres true anzuhängen, z.B. alt: M=[true,true] >>> neu: M=[M,true].
Bereich1, Bereich2 usw. muss aber in geschweiften Klammern stehen, da habe ich noch nichts gutes gefunden, wie man das schrittweise ergänzen kann.
Geht das überhaupt und wenn ja wie könnte das dann aussehen?

Vielen Dank

LG
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 18.09.2013, 11:39     Titel:
  Antworten mit Zitat      
sowas?
Code:
a=15;
ST=cell(1,a);
for k=1:a
   ST{k}={['Bereich',num2str(k)]};
end
set(handles.tabelle,'ColumnEditable',true(1,a))
set(handles.tabelle,'ColumnName',ST);

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
anfänger91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 18.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2013, 13:19     Titel:
  Antworten mit Zitat      
Leider funktioniert es nicht das in den Spaltenkopf Bereich1 , Bereich2 usw. geschrieben wird....
ich bekomme folgende Fehlermeldung:

Zitat:
Error using set
Cell array of strings may only contain string and numeric matrices
Error in set_ber5>AnzBer_Callback (line 219)
set(handles.tabelle,'ColumnName',ST);
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in set_ber5 (line 43)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)set_ber5('AnzBer_Callback',hObject,eventdata,guidata(hObject))

Error using waitfor
Error while evaluating uicontrol Callback



kann man daraus den Fehler erkennen?
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: 18.09.2013, 14:12     Titel:
  Antworten mit Zitat      
Hallo anfänger91,

Ja, mit etwas Raten findet man das Problem in der Fehlermeldung.
In Winkows Code muss es statt:
Code:
ST{k}={['Bereich',num2str(k)]};

heißen:
Code:
ST{k}=['Bereich',num2str(k)];

Etwas schneller wäre:
Code:
ST{k}=sprintf('Bereich%d', k);

Aber auf Geschwindigkeit kommt es bei der GUI-Erzeugung nicht wirklich an, da man sowieso wieder Sekunden aufwenden muss um sie zu lesen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
anfänger91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 18.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2013, 15:07     Titel:
  Antworten mit Zitat      
Vielen Dank es funktioniert sehr gut Wink

Viele Grüße
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.