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

GUI Tabelle->Zeile markieren

 

h0schi
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 30.05.12
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 30.05.2012, 22:12     Titel: GUI Tabelle->Zeile markieren
  Antworten mit Zitat      
Hallo!

Ich möchte, dass bei einem Klick auf eine Zelle die ganze Zeile markiert wird. Der Benutzer soll so einfach Datensätze auswählen, die jeweils in Zeilen dargestellt sind. Wenn nur eine Zelle markiert ist, funktioniert das zwar auch, verwirrt aber den Benutzer.

Ich habe leider noch keine möglichkeit gefunden, über den Code die Marierungen zu setzen. Kann mir da jemand ein Tipp geben?


Gruß

h0schi
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: 31.05.2012, 16:06     Titel:
  Antworten mit Zitat      
Das geht leider nicht mit Matlab allein. Du könntest mit findjobj (kannste beim Matlab file exchange runterladen) die Javacomponente finden und dann beim Javaobject das passende Property setzten. Einzufügen in deiner Opening fcn wenn du mit GUIDE arbeitest (du kannst natürlich auch mehrere Propertys beeinflussen, wie unten im Beispiel beschrieben):

Code:

set(hObject,'Visible','on')% figure muss sichtbar sein
j3 = findjobj('property',{'UIClassID','CellSpanTableUI'});% Tabelle suchen
set(j3,'sortable',1,... % sortierbar
    'sortingEnabled',1,... % dafault sortier method
    'nonContiguousCellSelection',0,...
    'cellSelectionEnabled',0,... % einzelne Zeillen selektierbar
    'rowSelectionAllowed',1,... % einzelne Zeilen selektierbar
    'columnSelectionAllowed',0,... % einzelne Spalten selektierbar
    'autoResizeMode',2,... % Breite der Tabelle wird automatisch angepasst
    'rowResizable',1,... % Breite der Zeilen vom User anpassbar
    'rowMargin',2,... % Breite der Zeilenlinien (alternativ intercellSpacing [1 1] für beide Linienarten)
    'Name','ÜbersichtsTabelleOktavDatei');
set(j3.SelectionModel,'SelectionMode',0); % Multiselection 'off' (nur eine Zeile auf mal selektierbar)
drawnow
 


Alternativ müsstest du dafür eine Matlab listbox benutzen, wobei du dann den textinhalt entsprechend Formatieren müsstest, dass es so aussieht wie eine Tabelle...

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
h0schi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 30.05.12
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 02.06.2012, 23:39     Titel:
  Antworten mit Zitat      
Hi Marco,

danke! Funktioniert soweit erstmal. Very Happy
Folgender code in der OpeningFcn hat den gewünschen effekt bewirkt:

Code:
set(hObject,'Visible','on')% figure muss sichtbar sein
j3 = findjobj('property',{'UIClassID','CellSpanTableUI'});% Tabelle suchen
set(j3,'nonContiguousCellSelection',0)


Ich habe nun ein neues Problem Shocked :

Ich bekomme nun kein CellSelectionCallback mehr wenn ich auf eine Zeile der Tabelle klicke. Über diesen Callback habe ich mir die Indices der markierten Zellen geholt, die in eventdata übergeben werden.
Die Indices in eventdata habe ich mir in die handles Struktur eingefügt damit ich diese in anderen Callbacks zur Verfügung habe. Das passiert jetzt aber nicht mehr.

Wie komm ich nun an die Indices der markierten Zellen bzw. Zeile?

Gruß
h0schi
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: 04.06.2012, 08:53     Titel:
  Antworten mit Zitat      
Hey,

ja das ist richtig, das funktioniert dann nicht mehr. Du kannst aber folgendes machen:
Code:

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

set(jtable,'nonContiguousCellSelection',0)
set(jtable,'MousePressedCallback',@My_Cell_Sel_CB,'KeyPressedCallback',@My_Cell_Sel_CB)

function My_Cell_Sel_CB(hObj,evd)
% willst du handles laden
% handles = guidata(gcf);
row = get(hObj,'SelectedRow');
column = get(hObj,'SelectedColumn');
Sel_data = str2double(char(hObj.getValueAt(row,column)));
erg = Sel_data+5

% handles update
% guidata(gcf,handles)
 

Zu beachten ist, dass Java bei 0 anfängt zu zählen nicht wie Matlab bei 1.

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.