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

Zelle einer Column

 

TW1993
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 10:45     Titel: Zelle einer Column
  Antworten mit Zitat      
Ist es möglich, dass wenn ich auf eine Zelle einer Spalte klicke ein Fenster erscheint, in welcher sich ein .txt_file befindet und ich es dadurch auswählen kann?

Ich hoffe ihr wisst was ich meine...

ich wollte auch schon in jede Zelle ein Pop-Up-Menü einfügen dieser Files aber, so wie es aussieht gibt es dazu keine Lösung, denn ich komme auf keine und finde auch keine Anhaltspunkte mit denen ich arbeiten könnte -.-

Bin am verzweifeln nämlich, denn ich versuche das ganze mittlerweile seit einer Woche zu realisieren und ich finde keine Lösung -.-


Ich wäre sehr verbunden wenn jmd mir zumindest etwas weiterhelfen könnte ...
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2017, 11:20     Titel:
  Antworten mit Zitat      
Hallo,

uigetfile oder listdlg sollten helfen.
Falls nicht, bitte konkret schildern was du versucht hast und welche Probleme dabei aufgetreten sind.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 11:30     Titel:
  Antworten mit Zitat      
Also mit meinem Code (siehe Anhang) versuche ich wenn ich jetzt zum Beispiel eine Zelle der Column (P_i-Transient) anklicke, so will ich das ein Fenster auftaucht in dem ich meine .txt-Datei habe oder eine .csv, je nachdem halt ...

Ich denke ich muss dazu Callbacks verwenden aber ich weiß leider nicht wie ich das einbinden soll oder ob ich überhaupt richtig liege ...

uigetfile und listdlg glaub ich helfen mir nicht weiter hatte es schon damit versucht, aber vllt hab ich auch etwas falsch gemacht.

Der Code ist quasi mein Ausgangspunkt mit dem ich arbeiten will


Code:
% --- FIGURE -------------------------------------
handles.figure1 = figure( ...
  'Tag', 'figure1', ...
  'Units', 'characters', ...    
  'Position', [102.8 24.2307692307692 126.8 33], ...
  'Name', 'Parameter', ...
  'MenuBar', 'figure', ...
  'NumberTitle', 'off', ...
  'Color', [0.941 0.941 0.941]);
  % --- UITABLE -------------------------------------
  % Initialize empty string for components of the Data
  Data=cell(16,5);
  for i = 1:numel(Data)
      Data{i} = '';
  end
 

handles.uitable1 = uitable( ...
    'Parent', handles.figure1, ...
    'Tag', 'uitable1', ...
    'UserData', zeros(1,0), ...
    'Units', 'characters', ...
    'Position', [12.2 8 85.6 21], ...
    'BackgroundColor', [1 1 1;0.961 0.961 0.961], ...
    'ColumnEditable', [true,true,true,true,true], ...
    'ColumnFormat', {'char','char','char','char','char'}, ...
    'ColumnName',{'ID','<html>P<sub>i</sub> -stationary<br>[W]','<html>P<sub>i</sub> -transient<br>[W/t]','<html>&Omega','V'}, ... % '<html>P<sub>i</sup></html>[W]'für griechische Buchstaben in einer Column <HTML>&Buchstabe
    'ColumnWidth', {'auto','auto','auto','auto','auto'}, ...
    'Data',Data); % add the "string" Data

%%Test einlesen einer .csv-,.txt-Datein

tableDataNew= importdata('C:\bsp.txt',';');
tableData =get(handles.figure1,'Data');
  for i = 1:size(Data,1)
      Data{i} = tableDataNew{i};
  end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2017, 11:47     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
in dem ich meine .txt-Datei habe oder eine .csv

Willst du die Namen dieser Dateien haben oder deren Inhalt?
Was willst du dann jeweils damit machen?

Zitat:
hatte es schon damit versucht, aber vllt hab ich auch etwas falsch gemacht.

Wie gesagt: poste bitte genau, was du versucht hast und vor allem, welche Probleme dabei aufgetreten sind.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 13:25     Titel:
  Antworten mit Zitat      
Zitat:
Willst du die Namen dieser Dateien haben oder deren Inhalt?
Was willst du dann jeweils damit machen?


ich will den Inhalt. links steht die Leistung und rechts die Zeitdauer in der ich die Leistung haben will (zum Beipsiel 10s lang 40W, dann 5s lang 30 Watt und so weiter). Das ganze dient dazu das mein Arduino dies später "einliest" und so weiß wie er sein PWM-Signal über eine PID-Regelung zu regeln hat.

Zitat:
Wie gesagt: poste bitte genau, was du versucht hast und vor allem, welche Probleme dabei aufgetreten sind.


1. habe es ja versucht mit :

Code:
tableDataNew= importdata('C:\bsp.txt',';');
tableData =get(handles.figure1,'Data');
  for i = 1:size(Data,1)
      Data{i} = tableDataNew{i};
  end
 

aber dann taucht als Fehlermeldung das direkt auf;

Zitat:
Error using matlab.ui.Figure/get
There is no Data property on the Figure class.

Error in Edit_table (line 34)
tableData =get(handles.figure1,'Data');


und ich habe keine Ahnung was ihm nicht passt -.-
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2017, 13:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
und ich habe keine Ahnung was ihm nicht passt -.-

Das, was "er" sagt: du musst die Eigenschaft Data für den uitable ändern.
Ich würde Data erst mal komplett aktualisieren und dann

Code:
handles.uitable1.Data = ...


Wenn es um die Ansteuerung von Arduino geht, ist die Frage, ob der Nutzer tatsächlich den Dateiinhalt innerhalb der GUI sehen soll oder ob es nicht besser ist, ihn eine Datei auswählen zu lassen (uigetfile).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 13:56     Titel:
  Antworten mit Zitat      
Zitat:
Ich würde Data erst mal komplett aktualisieren und dann


Tut mir leid für die vielleicht dumme Frage aber was meinst du damit genau?


Zitat:
Wenn es um die Ansteuerung von Arduino geht, ist die Frage, ob der Nutzer tatsächlich den Dateiinhalt innerhalb der GUI sehen soll oder ob es nicht besser ist, ihn eine Datei auswählen zu lassen (uigetfile).


Ich will ja auch das ich oder ein anderer Nutzer der Gui, eine vorgefertigte .csv- oder .txt-Datei auswählen. Oder reden wir gerade aneinander vorbei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2017, 13:59     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
was meinst du damit genau?

Dass ich die Data-Eigenschaft nicht in der for-Schleife setzen würde, sondern zuerst die Variable in der for-Schleife belegen.

Zitat:
Ich will ja auch das ich oder ein anderer Nutzer der Gui, eine vorgefertigte .csv- oder .txt-Datei auswählen.

Für das Auswählen der Datei und vielleicht noch das Anzeigen des Dateinamens reicht uigetfile vollkommen. Aufwändig wird es erst, wenn du den Dateiinhalt tatsächlich in der GUI anzeigen willst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 14:21     Titel:
  Antworten mit Zitat      
Zitat:
Dass ich die Data-Eigenschaft nicht in der for-Schleife setzen würde, sondern zuerst die Variable in der for-Schleife belegen.


Ok danke für die Erklärung Smile

Zitat:
Für das Auswählen der Datei und vielleicht noch das Anzeigen des Dateinamens reicht uigetfile vollkommen. Aufwändig wird es erst, wenn du den Dateiinhalt tatsächlich in der GUI anzeigen willst.


Nein nein den Inhalt der .csv-Datei soll nicht angezeigt werden, der Name reicht vollkommen.

wie verknüpfe ich nun aber die column P_-transient mit dem uigetfile-Befehl?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2017, 14:41     Titel:
  Antworten mit Zitat      
Hallo,

mit
Code:
[fname, pname] = uigetfile(...)

bekommst du Dateiname und Verzeichnis. Mit fullfile kannst du das verketten.

Ich sehe da keinen Bedarf für ein uitable. Ein normales Textfeld sollte reichen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 14:43     Titel:
  Antworten mit Zitat      
Zitat:
Ich sehe da keinen Bedarf für ein uitable. Ein normales Textfeld sollte reichen.


Doch da ich noch in die anderen Spalten Werte für Widerstand und Spannung eintragen muss ^^

Aber du hilfst mir heute schon extrem weiter dafür danke ich dir schon mal Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2017, 14:48     Titel:
  Antworten mit Zitat      
Okay. Wenn du den Dateinamen hast, kannst du das da aber eintragen wie jeden anderen Text auch.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 14:57     Titel:
  Antworten mit Zitat      
Habe eine generelle Frage vllt kannst mir ja einen Tipp geben oder einen anderen Vorschlag machen dazu:

Und zwar habe ich nämlich in meinem Gui zwei verschiedene Modi zur Auswahl:

1. manuell
2. vordefiniert

wenn ich 1. wähle, dann soll mir meine Table erscheinen in der ich eintrage wie viele Heizelemente habe, dann wenn die Leistung über die Zeit konstant ist (P_i-stationary) oder wenn es sich über die Zeit ändert dann soll das bisher besprochene passieren. und dann halt noch die Eintragung des Widerstandes der thermische Abhängigkeit besitzt und die der Spannung. das ganze speichere ich dann einfach noch über einen Save-Button.

wähle ich 2. kann ich das nun schon konfigurierte Setup wählen oder ein anderes erstelltes Setup


Denke ich zu kompliziert oder macht das schon so sinn ? oder hast du andere Tipps und Hinweise ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2017, 15:09     Titel:
  Antworten mit Zitat      
Hallo,

letztlich musst du das beurteilen bzw. deine Endnutzer.

Ich würde dem Nutzer die Möglichkeit geben, die Einstellungen händisch zu ändern, und dann noch einen "Einstellungen laden"-Button, der vorgegebene Einstellungen lädt und dann damit die bisherigen Einstellungen überschreibt (ggf. vorher fragen, ob überschrieben werden soll).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
TW1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2017, 08:27     Titel:
  Antworten mit Zitat      
ich komme auf keinen Code den ich auf irgendeine Weise einbauen könnte in meinen bereits vorhandenen Code ... Sad

Code:
%%Test einlesen einer .csv-,.txt-Datein
function data_uitable1_CellSelectionCallback(hObject, eventdata, handles)
% hObject    handle to data_uitable (see GCBO)
% eventdata  structure with the following fields (see MATLAB.UI.CONTROL.TABLE)
%   Indices: row and column indices of the cell(s) currently selecteds
% handles    structure with handles and user data (see GUIDATA)
% disp(eventdata)
handles.datatable_row = eventdata.Indices(1);
handles.datatable_col = eventdata.Indices(2);
guidata(hObject, handles);

end
 


hatte diesen Code am Ende angehängt, aber tun tut sich leider nichts wenn ich auf eine Zelle klicke leider...

Was ist falsch bzw. was muss ich machen?
Brauch ich eine CallBack-Funktion, bin leider etwas ratlos momentan wie ich meine Zellen der Column P_i-Transient verbinden kann ... Sad Sad


Edit andere Variante:

Code:
function uitable1_CellEditCallback(hObject, eventdata, handles)
Columndata = get(hObject,'Data');
if strcmp(Columndata(1,1),'User Defined')

[FileName,PathName] = uigetfile({'*.txt'; '*.csv'},'Select the configuration');
FilePath = fullfile(PathName,FileName);
if isequal(FileName,0)
return
end
[pathstr, name, ext] = fileparts(FilePath);
ParameterList{end+1} = name;
set(handles.uitable1,'ColumnFormat',{ParameterList});

end
end


was ist hier denn falsch das kein Menü erscheint in dem ich mein File auswählen lassen kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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