Verfasst am: 18.01.2011, 14:02
Titel: Nachträglich Tabs in fig-file einfügen
hallo,
weiß jemand, ob es möglich ist, nachträglich Tab´s in eine Gui einzufügen? Benutze Tabpanel creator. Wenn ich ein neues Tab einfüge, dann ist das im Hintergrund der GUI und die Buttons des bestehenden GUI s sind im vordergrund.
hat jemand eine Lösung, wie man das anders hin bekommen kann??
bekommste den Pfad von der Funktion. Da kannste ja mal reinscheuen. Die ist undokumentiert aber du kannst sie nutzen. In Version 2010a (ich glaube da hat sich in 2010b was geändert) steht dazu folgendes Beispiel:
Hast du eine GUI mit GUIDE erstellt kannst du die uitabs in der Opening_FCN nach Bedarf einfügen. Dafür musst du nur die entsprechenden uipanels den passenden uitabs als parent hinzufügen...
könntest Du vielleicht mal ein komplettes Beispiel darstellen?
Ich habe ein GUI mit GUIDE erstellt und den Beispiel-Code aus MATLAB für uitabgroup ausgeführt.
Code:
function[a,b,c,d] = ex_tabgroup
% This R2010b code does not use 'v0' syntax and updates properties
hf = figure;
a = uitabgroup('Parent',hf); % Do not use the 'v0' argument
b = uitab('parent',a,'title','Breakfast');
c = uitab('parent',a,'title','Lunch');
d = uitab('parent',a,'title','Dinner');
set(a,'SelectionChangeCallback',...% Formerly SelectionChangeFcn
@(obj,evt) selectionChangeCbk(obj,evt));
set(a,'SelectedTab',b); % Replaces SelectedIndex property
function selectionChangeCbk(src,evt) % This new code uses tab handles to directly access tab properites
oldTab = evt.OldValue; % Event member is tab handle
oldName = get(oldTab,'title'); % Access child tab directly
newTab = evt.NewValue; % Event member is tab handle
newName = get(newTab,'title'); % Access child tab directly disp(['It was ' oldName ' time; now it is' newName ' time.'])
Ich bekomme es hin, dass die Tabs über meiner GUI angezeigt werden.
Code:
% --- Executes just before tab_test is made visible. function tab_test_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to tab_test (see VARARGIN)
a = uitabgroup;
tab1 = uitab('parent',a,'title','Tab1');
tab2 = uitab('parent',a,'title','Tab2');
% Choose default command line output for tab_test
handles.output = hObject;
% Update handles structure guidata(hObject, handles);
Meine Frage ist, wo und wann ich meine einzelnen Buttons, Texte und Textedits den einzelnen Reitern zuordne. In der OpeningFcn sind diese ja noch nicht bekannt.
Meine Frage ist, wo und wann ich meine einzelnen Buttons, Texte und Textedits den einzelnen Reitern zuordne. In der OpeningFcn sind diese ja noch nicht bekannt.
Doch da wurden sie schon initialisiert. Wenn du in der OpeningFcn einmal set(hObject,'Visible','on') eingibst siehst du, dass lediglich die figure ausgeblendet ist. Die GUI wurde also schon initialisiert... Also kannst du in der OpeningFcn die grafischen Objekte den uitabs hinzufügen...
Code:
function tab_test_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to tab_test (see VARARGIN)
handles.tabgrp = uitabgroup('parent',hObject);
handles.tab1 = uitab('parent',handles.tabgrp,'title','Tab1');
handles.tab2 = uitab('parent',handles.tabgrp,'title','Tab2');
% an dieser Stelle musst du bei den GUIelemente die sich in den handles befinden das parent ändern. Z.B. es existiert handles.uipanel1 & handles.uipanel2 set(handles.uipanel1,'parent',handles.tab1) set(handles.uipanel2,'parent',handles.tab2) % ggf musst du die größen der tabs noch anpassen... % Choose default command line output for tab_test
handles.output = hObject;
% Update handles structure guidata(hObject, handles);
Ich hoffe es ist klar geworden...
Achja alternativ kann man auch in GUIDE die komplette GUI in ein m-File exportieren. Da steht einem eine Name_export_LayoutFcn(policy) zur verfügung in der alle im GUIDE erstellten Objekte initialisiert werden. Auch dort könnte man die tabs einbinden. Der Vorteil ist, dass das .fig File
nicht mehr benötigt wird...
MfG Marco
Einstellungen und Berechtigungen
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
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.