Im erzeugten Edit-Feld Schriftfarbe und Schriftgröße ändern.
Später soll der modifizierte Text in einer "Textbox" in einem Axes ausgeben werden.
Problem:
Die Farbe und Größe des Textes lässt sich nur komplett ändern. Also einzelne Buchstaben oder Wörter bekomm ich nicht geändert.
Anmerkung:
Anbei der Code wo das alles passieren soll. Die Einfärbung des Wortes "Rot" im Popup gelingt mir mittels HTML-Code. Wenn ich die gleiche Heransgehensweise im Edit-Feld (im Text-Feld auch nicht möglich) anwende, wird mir nur der HTML-Code ausgegeben.
function Callback_text(handles,hObject,event)
handles=guidata(event);
text=get(findall(get(handles.textbox,'Children'),'Style','edit'),'String');
%Hier wollte ich den Text bearbeiten
set(findall(get(handles.textbox,'Children'),'Style','edit'),'String',text)
%Zum Porbieren gedacht
vielen dank für dein Tipp.
Hab heute den ganzen Tag daran gesessen aber folgende Sache will mir nicht gelingen..
Ich schreibe beliebig viele Zeilen in meine Edit-Box. Dann markiere ich mehrere Buchstaben/Wörter über mehrere Zeilen hinweg.
Ich kann zwar den selektierten Teil mir ausgeben lassen und auch Start/Stop der Selektion aber kann diesen Teil ebend nicht nach meinen Wünschen(Schriftstärke/Schriftgröße/Schriftdicke) ändern.
Die Option "selectedTextColor" gibt es zwar aber dann fehlen mir noch die andern beiden sachen.
... aber kann diesen Teil ebend nicht nach meinen Wünschen(Schriftstärke/Schriftgröße/Schriftdicke) ändern.
Die Option "selectedTextColor" gibt es zwar aber dann fehlen mir noch die andern beiden sachen.
Wo gibt es die "Option selectedTextColor"? Wie versuchst Du was bisher?
Gruß, Jan
Zuletzt bearbeitet von Jan S am 10.03.2015, 10:43, insgesamt einmal bearbeitet
Also mein komplettes Vorhaben ist wie folgt:
Ich habe eine "Hauptgui", in der eine uitabgroup mit mehreren uitab´s,
die verschiedenen Diagramme angezeigt.
Nach erstellen der Diagramme möchte ich in den Diagrammen Kommentare einfügen.
Beim betätigen eines Pushbuttons wird ein Fenster geöffnet(siehe den obrigen Code). In diesem Fenster soll man in einer Edit-Box (über mehrere Zeilen) etwas schreiben können.
Bis hierhin klappt alles.
Nur soll man jetzt auch das Geschriebene bearbeiten können. Hätte gern eine Optionale Einstellmöglichkeit der Schriftgröße, Schriftfarbe und der Schriftdicke.
1. Es soll beim schreiben die Werte aus den dazugehörigen Popupmenus genutzt werden.
2. Es soll auch nach dem Schreiben des Textes möglich sein diesen zuverändern (markieren des gewünschten Textes und übernahme der Werte aus den Popupmenus durch betätigen eines Pushbuttons).
Wollte das alles über die HTML Programmierung machen aber vielleicht gibt es ja noch eine andere Lösung?
Hoffe konnte es diesmal verständlich rüberbringen ...
Wenn ich den Text fertig bearbeitet habe, möchte ich diesen, nach betätigen eines Pushbuttons, als Kommentar in meinem Diagramm einfügen (z.B. als Textbox).
Die Möglichkeit über "selectedTextColor" die Farbe des markierten Textes zu ändern, ergibt sich wenn man die Seite durcharbeitet (den Link den du am Anfang geschickt hattest).
Der Code dazu:
Das m-File "findjobj" musste ich mir noch aus dem Netz ziehen.
Dabei ist "handles.textbox" mein Edittext-Feld.
Wenn man dann die Eigenschaften von "box" durchgeht, stößt man dort auf "selectedTextColor".
Somit könnte man die Farbe des markierten Textes ändern.
Das Problem ist aber das dann die Größe und dicke des Textes nicht berücksichtig werden.
Das Thema macht mich noch irre.
Wenn es funktioniert werde ich den Code dazu noch Online stellen. Hab dazu schon öfter Nachfragen gelesen und keine brauchbare Antwort gefunden.
_________________
Die selectedTextColor betrifft aber nur den aktuell selektierten Text. Das verschwindet doch wieder, wenn man etwas anderes selektiert.
Du möchtest also ein Edit-Feld erstellen, in dem Du die Eigenschaften der Buchstaben ändern kannst. Das ist ziemlich ambitioniert in Matlab. Bist Du sicher, dass sich der Aufwand lohnt?
In Java gibt es da bestimmt eine Lösung, so dass ich erstmal hier weiter suchen würde.
Also wenn die Selektierung nach dem Bearbeiten verschwendet ist das doch ok.
Wenn man hier sein Beitrag eingibt hat man doch auch die Möglichkeit den Text beliebig zu ändern. Und die Selektierung verschwindet nach der Änderung auch.
Aber nach langem Suchen glaub ich auch das es über Java besser geht.
Wenn ich eine Lösung gefunden habe, werde ich sie posten.
Also wenn die Selektierung nach dem Bearbeiten verschwendet ist das doch ok.
Damit verschwindet aber auch die selectedTextColor. Dir geht es ja nicht darum, welche Farbe die Text-Selection hat, sondern Du möchtest den ausgewählten Text dauerhaft ändern. Es ist also wie hier im Forum-Editor den Text markieren (dann wird er je nach OS und Browser invers&farbig dargestellt) und dann an eine andere Stelle zu klicken, so dass der Text wieder normal ist.
Viel Erfolg bei der Suche! Möglicherweise könnte auch ein ActiveX-Objekt hilfreich sein.
Wie versprochen die Lösung bzw. ein Lösungsvorschlag:
Callback eines Pushbuttons meiner GUI:
Code:
function text_fug_2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton44 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
handles.textbox=figure;
set(handles.textbox,'Position',[100100820500],'WindowButtonUpFcn',{@stopDragFcn,handles});
uicontrol('parent',handles.textbox,'Style','edit','tag','edit1','Position',[2525650150],'HorizontalAlignment','left','Max',2);
u=uipanel('parent',handles.textbox,'tag','uipan','BackgroundColor',[0.80.80.8],'Units','pixels','Position',[25200650250],'Title','Vorschau','Visible','on');
h=axes('parent',handles.textbox,'Units','pixels','Position',[27202640240],'Visible','off','tag','fa');
t=text(0.05, 0.5,' ', 'Parent',h,'tag','Textfeld');
uicontrol('parent',handles.textbox,'Style','text','tag','text1','String','Schriftgröße:','Position',[6851606515],'BackgroundColor',[0.80.80.8],'HorizontalAlignment','left');
uicontrol('parent',handles.textbox,'Style','text','tag','text2','String','Schriftfarbe:','Position',[6851166515],'BackgroundColor',[0.80.80.8],'HorizontalAlignment','left');
uicontrol('parent',handles.textbox,'Style','popupmenu','tag','popupgross','String',[1:1:28],'Position',[6851344525],'Value',4,'Callback',{@Callback_pop1,hObject});
uicontrol('parent',handles.textbox,'Style','popupmenu','tag','popupfarbe','String',... [{'<html><font color="#000000">Schwarz</font></html>'},... {'<html><font color="#ff0000">Rot</font></html>'},... {'<html><font color="#00ff00">Grün</font></html>'},... {'<html><font color="#ffff00">Gelb</font></html>'},... {'<html><font color="#0000ff">Blau</font></html>'},... {'<html><font color="#ff00ff">Magenta</font></html>'}],'Position',[685917525],'Value',1,'Callback',{@Callback_pop2,hObject});
Pushbutton Callback für Textübergabe (von editfeld zu text --> dient als Vorschau):
Code:
function Callback_text(handles,hObject,event)
handles=guidata(event);
set(findall(get(handles.textbox,'Children'),'tag','Textfeld'),'String',get(findall(get(handles.textbox,'Children'),'tag','edit1'),'String'));
guidata(event,handles);
function Callback_del(handles,hObject,event)
handles=guidata(event);
set(findall(get(handles.textbox,'Children'),'tag','Textfeld'),'String','');
guidata(event,handles);
Schätze mal das wirkt etwas erschlagend..
Der Ablauf wäre wie folgt:
Text in Edit-Feld eintragen. Mit Maus gewünschte Buchstaben/Wörter makieren und bearbeiten und mit Button "Übernehmen" darüber das Ergebnis anschauen.
Die Befehle werden (wie auch bei Beiträgen in diesen Forum) mit in das Edit-Feld geschrieben und durch klicken auf "Übernehmen" an das darüber liegende Text-Feld gesendet.
Dort erhält man das Ergebnis vom "zusammengestelten" Code aus dem Edit-Feld.
Durch den Button "Text einfügen" wird ein Text-Feld, mit dem Ergebnis aus dem Edit-Feld, in die GUI auf ein Axes, rechts oben eingefügt.
Die GUI wurde bei mir mit dem guide erstellt.
Durch die letzten drei Funktionen (startDragFcn/draggingFcn/stopDragFcn) wird ein verschieben des Text-Feldes auf der GUI ermöglicht.
Meine GUI heist in diesem Fall: handles.figure1
Wenn ihr weitere Fragen oder Anregungen habt dazu, immer her
Habe alle Funktionen gepostet fals jemand sich für sein Problem was raussuchen möchte.
@Jan.. was sagst du dazu als erfahrener Matlabnutzer?
Aus irgendeinen Grund muss man nach bearbeiten des Textes im Edit-Feld einmal in das Edit-Feld klick und dann auf "Übernehmen" klicken...
_________________
Wer schwindelt der lügt.
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.