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 mit Drag n Drop

 

MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2009, 13:26     Titel: GUI mit Drag n Drop
  Antworten mit Zitat      
moin,

hab hier diesen Code gefunden http://www.mathworks.com/matlabcent.....hange/16312-drag-and-drop und ihn folgendermaßen in eine mit GUIDE erstellte blanke GUI implementiert, leider hagelt es Fehlermeldungen:

gleich zu beginn diese:
Zitat:
??? Reference to non-existent field 'output'.

Error in ==> untitled>untitled_OutputFcn at 105
varargout{1} = handles.output;

Error in ==> gui_mainfcn at 265
feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);

Error in ==> untitled at 42
gui_mainfcn(gui_State, varargin{:});


und wenn ich eine Datei ins Drop-in-Feld ziehe diese:
Zitat:
??? Error using ==> comeventcallback at 25
Error firing event 'OLEDragDrop' to 'ShowFileNameOnDrop'.

Warning: Error occurred while evaluating listener callback.


was GUIs angeht bin ich noch total am anfang des Verständnisses, also wenn da einer durchschaut, wär schön, wenn ich ein Tipp kriegen würde, weil das Feature wäre schon ziemlich nett Smile

Code:
function varargout = untitled(varargin)
% UNTITLED M-file for untitled.fig
%      UNTITLED, by itself, creates a new UNTITLED or raises the existing
%      singleton*.
%
%      H = UNTITLED returns the handle to a new UNTITLED or the handle to
%      the existing singleton*.
%
%      UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in UNTITLED.M with the given input arguments.
%
%      UNTITLED('Property','Value',...) creates a new UNTITLED or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before untitled_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to untitled_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help untitled

% Last Modified by GUIDE v2.5 17-Oct-2009 14:12:08

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @untitled_OpeningFcn, ...
                   'gui_OutputFcn',  @untitled_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before untitled is made visible.
function untitled_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 untitled (see VARARGIN)

% Choose default command line output for untitled
handles.output = hObject;
pos=get(gcf,'position');
color=get(gcf,'color');


%use this one to put a file name into a box
uicontrol('style','listbox','position',[pos(3)*.1 250 pos(3)*.8 100],'tag','FileNameList');% create a listbox to show filenames

ProgID='RICHTEXT.RichtextCtrl.1';
h1 = actxcontrol(ProgID, [pos(3)*.1 355 pos(3)*.8 20],gcf,{'OLEDragDrop',@ShowFileNameOnDrop});
set(h1,'OLEDropMode','rtfOLEDropManual');
set(h1,'text','Drag file into this window to populate the list with filenames...')
uicontrol('style','text','string','File Name Loader','position',[pos(3)*.1 375 pos(3)*.8 20],...
          'backgroundcolor',color,'fontweight','bold');

function ShowFileNameOnDrop(varargin)
hObject=varargin{1};
Interface=varargin{3};

try
    data=Interface.GetData(1);
catch

    data=Interface.get.Files.Item(1);
end


set(hObject,'text',data);
list=findobj(gcf,'tag','FileNameList');
Str=cellstr(get(list,'string'));
Str(end+1)={data};
set(list,'string',Str);


% Update handles structure
guidata(hObject, handles);

% UIWAIT makes untitled wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;
 
Private Nachricht senden Benutzer-Profile anzeigen


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2009, 19:37     Titel:
  Antworten mit Zitat      
Hallo,

die erste Fehlermeldung

??? Reference to non-existent field 'output'.

Error in ==> untitled>untitled_OutputFcn at 105
varargout{1} = handles.output;

kommt daher, dass die Variable handles kein Feld output enthält.
In der OpeningFcn wird das Feld zwar erstellt
Code:

handles.output = hObject;
 

aber es wird nur für spätere Verwendung gespeichert, wenn Du noch folgende Zeile danach einfügst.
Code:

% Update handles structure
guidata(hObject, handles);
 

Die ist wohl durch Copy und Paste an die falsche Stelle gerutscht.

Wenn es dann immer noch nicht geht ersetz mal:
Code:

list=findobj(gcf,'tag','FileNameList');
 

durch
Code:

list=findall(0,'tag','FileNameList');
 


Gerade zum Fehlersuchen ist der Debugger sehr hilfreich, solltest Du Dir mal angucken.

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2009, 00:34     Titel:
  Antworten mit Zitat      
so funktioniert das ganze jetzt...thx LittleX

Code:
pos=get(gcf,'position');
color=get(gcf,'color');


%use this one to put a file name into a box
uicontrol('style','listbox','position',[pos(3)*.5 510 pos(3)*4 130],'tag','FileNameList');% create a listbox to show filenames

ProgID='RICHTEXT.RichtextCtrl.1';
h1 = actxcontrol(ProgID, [pos(3)*1.5 655 pos(3)*2 20],gcf,{'OLEDragDrop',@ShowFileNameOnDrop});
set(h1,'OLEDropMode','rtfOLEDropManual');
set(h1,'text','Drag file into this window to populate the list with filenames...')

function ShowFileNameOnDrop(varargin)
hObject=varargin{1};
Interface=varargin{3};

try
    data=Interface.GetData(1);
catch
    data=Interface.get.Files.Item(1);
end

set(hObject,'text',data);
list=findall(0,'tag','FileNameList');
if isempty(get(list,'string'))
    Str={};
else
    Str=get(list,'string');
end
Str(length(Str)+1)={data};
set(list,'string',Str);
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2009, 20:49     Titel:
  Antworten mit Zitat      
arg es ist zum mäuse melken, wie gesagt läuft der Code auf meinem Rechner, auf allen anderen getesteten gibt es jedoch Fehlermeldungen Shocked

z.B.:
Zitat:
??? Error using ==> actxcontrol at 214
Control creation failed. Invalid ProgID 'RICHTEXT.RichtextCtrl.1'

Error in ==> SPT_GUI>SPT_GUI_OpeningFcn at 77
h1 = actxcontrol(ProgID, [pos(3)*1.5 655 pos(3)*2 20],gcf,{'OLEDragDrop',@ShowFileNameOnDrop});

Error in ==> gui_mainfcn at 210
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

Error in ==> SPT_GUI at 42
gui_mainfcn(gui_State, varargin{:});


wie ist dieses unterschiedlich Verhalten zu erklären?
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2009, 17:59     Titel:
  Antworten mit Zitat      
Hallo,

ich tippe mal darauf, dass die control auf den anderen rechnern nicht installiert ist...
Lass Dir mal die installierten controls anzeigen
Code:

info = actxcontrollist;
 


Mit
Code:

pos = find(strcmp('RICHTEXT.RichtextCtrl.1',info));
 

kannst danach suchen. pos sollte nicht leer sein.

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2009, 21:17     Titel:
  Antworten mit Zitat      
LittleX, kannst du dir das erklären? ich versteh nur bahnhof Embarassed

Zitat:
info = actxcontrollist;
>> pos = find(strcmp('RICHTEXT.RichtextCtrl.1',info))

pos =

460

??? Error using ==> feval
Error: Keine Lizenz für die Verwendung dieser Klasse vorhanden



Error in ==> actxcontrol>createControl at 240
ctrl = feval(comstr, 'control', position, parent, '', filename, hwnd, licensekey,
false,parent_string);

Error in ==> actxcontrol at 212
hControl = createControl;

Error in ==> SPT_GUI>SPT_GUI_OpeningFcn at 77
h1 = actxcontrol(ProgID, [pos(3)*1.5 655 pos(3)*2
20],gcf,{'OLEDragDrop',@ShowFileNameOnDrop});

Error in ==> gui_mainfcn at 221
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

Error in ==> SPT_GUI at 42
gui_mainfcn(gui_State, varargin{:});
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2009, 16:17     Titel:
  Antworten mit Zitat      
es gibt neue Informationen:

nun hab ich gemerkt, dass auf meinem Rechner folgendes m.-File erstellt wird, wenn ich die GUI ausführe:
Code:
function lic = actxlicense(progid)

if strcmpi(progid, 'RICHTEXT.RichtextCtrl.1')
lic = ' qhj ZtuQha;jdfn[iaetr ';
return;
end


irgendwie wird es damit zusammenhängen müssen...
dies scheint auch damit zusammenzuhängen aber ich versteh das nicht damn it
http://www.mathworks.com/access/hel.....ernal/f27433.html#bqo22w0
Private Nachricht senden Benutzer-Profile anzeigen
 
shahar_m1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.02.2011, 12:10     Titel: How to fix Invalid ProgID 'RICHTEXT.RichtextC
  Antworten mit Zitat      
You can fix the MATLAB Control creation failed. Invalid ProgID 'RICHTEXT.RichtextCtrl.1' error by bring up the windows cmd prompt and type "regsvr32 richtx32.ocx".

Quote from
[url]
http://www.mathworks.com/matlabcent.....reader/view_thread/155932
[/url]

Paul,
I'm not exactly sure what error you got, but my guess is
that it must be because the activex
control 'RICHTEXT.RichtextCtrl.1' is not available on your
system. Are you running windows? If so, at the Matlab
command prompt try '[h info]=actxcontrolselect'. This
should bring up a window with all the activex controls on
your machine. You should see one called Microsoft Rich
Textbox Control 6.0 (SP6). Let me know if it isn't
available. I can send it to you. Alternatively, there
should be a file (C:\WINDOWS\system32\richtx32.ocx) in your
windows folder for this control. If it is there, then
bring up the windows cmd prompt and type "regsvr32
richtx32.ocx" I hope this helps. Sorry for not providing
more documentation with this. I figured it would work for
windows users without trouble.





MatLabNooB hat Folgendes geschrieben:
LittleX, kannst du dir das erklären? ich versteh nur bahnhof Embarassed

Zitat:
info = actxcontrollist;
>> pos = find(strcmp('RICHTEXT.RichtextCtrl.1',info))

pos =

460

??? Error using ==> feval
Error: Keine Lizenz für die Verwendung dieser Klasse vorhanden



Error in ==> actxcontrol>createControl at 240
ctrl = feval(comstr, 'control', position, parent, '', filename, hwnd, licensekey,
false,parent_string);

Error in ==> actxcontrol at 212
hControl = createControl;

Error in ==> SPT_GUI>SPT_GUI_OpeningFcn at 77
h1 = actxcontrol(ProgID, [pos(3)*1.5 655 pos(3)*2
20],gcf,{'OLEDragDrop',@ShowFileNameOnDrop});

Error in ==> gui_mainfcn at 221
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

Error in ==> SPT_GUI at 42
gui_mainfcn(gui_State, varargin{:});
 
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.