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

Zeile einer Tabelle markieren und Wert entnehmen

 

Benjamin2011
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2012, 19:54     Titel: Zeile einer Tabelle markieren und Wert entnehmen
  Antworten mit Zitat      
Hallo zusammen,

ich habe einen Tabelle angehängt. Hier möchte ich eine Zeile markieren.
Die markierte Zeile möchte ich dann in einer Variable speichern.
Also klicke auf z.B. AA dann soll die ganze Zeile markiert werden und AA in einer Variable gespeichert werden. AA möchte ich für diese Zeile vorher festlegen.

Vielen Dank für die Unterstütung im Voraus.

Grüße Benjamin

matlabGUI.JPG
 Beschreibung:

Download
 Dateiname:  matlabGUI.JPG
 Dateigröße:  112.64 KB
 Heruntergeladen:  703 mal
Private Nachricht senden Benutzer-Profile anzeigen


Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 19.06.2012, 23:51     Titel:
  Antworten mit Zitat      
Hey,

das wird so mit reinem Matlab nicht möglich sein. Du kannst aber hier vorbeischauen
-> http://undocumentedmatlab.com/?s=uitable

oder auch mal die gomatlab suche benutzen dieses Thema kam schon öfter auf

-> http://www.gomatlab.de/gui-tabelle-.....69,highlight,uitable.html

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin2011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2012, 20:05     Titel:
  Antworten mit Zitat      
Hey,

vielen Dank für die Antwort. Ich bin jetzt soweit, dass ich beim markieren den passenden String ausgebe (disp). Ich möchte Ihn jedoch in einer Variablen speichern. Kann mir da jemand helfen?

Grüße Benjamin

Benja_table_sortable.m
 Beschreibung:

Download
 Dateiname:  Benja_table_sortable.m
 Dateigröße:  4.16 KB
 Heruntergeladen:  397 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin2011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2012, 20:55     Titel:
  Antworten mit Zitat      
Ich hab jetzt noch
Code:
function My_Cell_Sel_CB(hObj,evd)
% willst du handles laden
% handles = guidata(gcf);

symbol = {'MMM', 'AA', 'AXP', 'T'};
row = get(hObj,'SelectedRow');
%column = get(hObj,'SelectedColumn');
%Sel_data = str2double(char(hObj.getValueAt(row)));
%erg = Sel_data+5;
ergebnis = symbol(plus(row,1))
disp(symbol(plus(row,1)));
assignin('base','symbole',ergebnis);


hinzugefügt und es wird die entsprechnde Zeile wie gewünscht angezeigt jedoch nur immer die letzte ausgewählte Zeile gespeichert.
Wie kann ich sämtliche markierte Zielen in einer Variable speichern?
Private Nachricht senden Benutzer-Profile anzeigen
 
mr90

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 10:35     Titel:
  Antworten mit Zitat      
Wenn du die Tabelle in einer GUI eingefügt hast geht das auch wesentlich leichter.

Für die tabelle kannst du dann das CellSelectionCallback auswählen.
In dieser CellSelectionCallback kannst du mit dem Befehl eventdata.Indices die Spalte und die Zeile welche angeklickt wurde ausgeben lassen.

Damit kannst du dir dann leicht die Information aus der Tabelle holen!
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 26.06.2012, 14:05     Titel:
  Antworten mit Zitat      
Hey,

@mr90 Normalerweise hast du recht aber da dies ein Woraround mittels Java ist funktioniert das nicht mehr.

Man könnte es wie folgt machen (vorrausgesetzt man läd sich das findjobj M-File vom Matlab File Exchange herunter):
Code:

function test_table
f = figure;
htable = uitable('parent',f,'Data',magic(10));
jtable = findjobj('property',{'UIClassID','CellSpanTableUI'});

set(jtable,'nonContiguousCellSelection',0)
set(jtable,'MouseReleasedCallback',{@My_Cell_Sel_CB,htable})

function My_Cell_Sel_CB(hObj,evd,htable)
% willst du handles laden
% handles = guidata(gcf);

% Daten der Tabelle erhalten
Data = get(htable,'Data');

if evd.isMetaDown % Mouse rechtsclick
   
elseif evd.isShiftDown % Shift gedrückt
    rows = get(hObj,'SelectedRows');
    SelectedData = Data(rows+1,:)
else % Sonst
    row = get(hObj,'SelectedRow');
    column = get(hObj,'SelectedColumn');
   
    rows = get(hObj,'SelectedRows');
    SelectedData = Data(rows+1,:)
end
 


Es ist darauf zu achten, dass es nur via Maus funktioniert nicht wenn der User die Tastatur (also z.B. die Pfeiltasten) benutzt. Dafür müsste man noch andere Callbacks definieren. Des weiteren ist darauf zu achten, dass Java immer bei 0 anfängt zu Zählen und nicht wie Matlab bei 1. Darum auch die +1 in der vorletzten Zeile. Mit get(hObj) im Callback kann man sich alle Properties der Tabelle anschauen. Dies ist hilfreich wenn man nach Funktionalitäten sucht.
Ich habe hier auch noch nach Rechtsclick, Mausclick mit Shift und sonst unterteilt. Dies muss man natürlich nicht, aber man kann dadurch auch noch weitere Funktionalitäten gut steuern...


Greetings
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.