Hallo zusammen,
ich habe eine Frage, die mir hier bestimmt jemand beantworten kann.
Und zwar möchte ich einen ToggleButton programmieren, der mir je nach Status, verschiedene Programmteile ausführt. Dabei soll er auch die Farbe des Buttons ändern.
Um das mal zu veranschaulichen, versuche ich das mal genau zu beschreiben:
Ich möchte einen Button, der bei Programmstart rot dargestellt ist und in dem Disconneted steht. Bei Betätigung soll sich die Farbe in grün ändern und der Text in Connected wechseln.
Dies habe ich bislang über 2 PushButton realiert, jedoch ohne Farben, so dass man nicht erkennen kann welcher Status aktiv ist.
Wo muss der dazugehörige Quellcode rein, der bei jeder Betätigung ausgeführt werden soll??
Ich bedanke mich jetzt schon mal für eure Hilfe,
LG Chris
_________________
kannst Du bitte Deinen bisherigen Quellcode anhängen bzw. posten? Es ist ja doch ein Unterschied, ob per Guide oder nicht die Sache erstellt wurde. Und es lässt sich dann leichter sagen, wo da was rein soll. Wenn es nichts ausmacht, kannst Du den Code auch auf das relevante Minimum reduzieren.
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke
Hi, danke schon mal für die Antwort. Ich habe mir eine GUI zusammengebastelt. In die Callback dann den Code drin.
Jetzt fehlt wie ich schon erwähnt habe die Modifikation mit den Farben usw
Code:
function Connected_Callback(hObject, eventdata, handles)
tb1 = get(handles.Connected,'Value');
if tb1 == 1
okay, jeder hat seinen Programmierstil. Ich hatte jetzt eher eine Callback für den Toggle-Button erwartet Anders gesagt: ich würde sie nicht Connect_Callback, sondern ToggleButton_Callback nennen.
Unter der Annahme, dass Dein Programm bisher alles tut was es soll, ändert sich aber nichts am eigentlichen:
Code:
% wie Deine Funktion im Detail heißt, weiß ich nicht, aber das es den Anschein macht, dass Du mit Guide arbeitest, sollte sie irgendwie so heißen % vielleicht kannst Du das im Grafikmenu auch direkt einbauen, geht ja um Startwerte. Dazu auf das Element doppelklicken function Connected_CreateFcn(hObject, eventdata, handles) set(hObject,'BackgroundColor',[1, 0, 0]);
set(hObject,'String','Disconnected');
... end ... % unter der Annahme, dass sie so funktioniert. function Connected_Callback(hObject, eventdata, handles);
tb1 = get(handles.Connected,'Value');
if tb1 == 1% wann jetzt 1 und 0, musst Du selbst herausfinden ....
set(handles.Connected,'String','Connected');
set(handles.Connected,'BackgroundColor',[1, 0, 0]);
guidata(hObject, handles); % damit Änderungen nicht verloren gehen end if tb1 == 0 ... set(handles.Connected,'String','Disconnected');
set(handles.Connected,'BackgroundColor',[0, 1, 0]);
guidata(hObject, handles);
end
Die Eigenschaften Deines Objekts hängen immer vom typ ab und sind wie oben beschrieben einsehbar. Ich würde die Farbänderung immer erst nach dem erfolgreichen Durchlaufen der Anweisungen davor machen, dann hast Du gleich die Rückmeldung, dass alles geklappt hat.
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke
Alsooo,
der Text ändert sich so wie er soll.
Was die Farbe angeht leider nicht. Im unbetätigtem Zustand ist der Button hellgrau, bei Betätigung wird er dunkelgrau. Leider ist nichts von dem rot und grün zu sehen.
Sonst läuft alles wie es soll. Hast du da noch ne Idee woran das liegen kann?
_________________
Du kannst auch selbst in den Eigenschaften nach gucken mit dem erwähnten Doppelklick, wenn Du die Figure mittels Guide offen hast (sofern Du es so erstellst).
Da gibt es noch ForegroundColor. Probier die mal aus.
Dort wird auch eine ButtonDownFcn und eine KeyPressFcn angesprochen, die man sich aber wohl erst anlegen muss.
Mehr Vorschläge habe ich dann nicht, da ich das noch nicht selbst probieren konnte.
HTH,
yankemen
Edit: Ich meinte Guide, nicht denVertippfehler
Zuletzt bearbeitet von yankemen am 11.08.2010, 11:26, insgesamt einmal bearbeitet
Danke trotzdem. Ich glaube ich beschränke mich jetzt auf die Farbänderung des Textes. Das funktioniert mit deinen Tips und der Effekt ist auch da, zwar nicht so schön aber es klappt.
Hi Jan,
was genau meinst du mit manuel?
Ich kann selbst im Inspector die Farbe des Buttons nicht ändern, nur die der Schriftfarbe. Ergo, Foreground funzt, Background nicht.
Als wenn mir irgendwas meine Änderung überschreiben würde. Nur was?
Du kannst im Inspector die Farbe nicht ändern -- ungewöhnlich.
Ist beim Butten "Enable" auf "off" gesetzt?
Dann übernimmt das Betriebssystem die Farb-Anpassung, aber zusätzlich solltest Du ihn auch nicht mehr anklicken können.
Zeichnest Du vielleicht mehrere Button übereinander, so dass Du den falschen siehst??
Hi Jan,
nein nichts dergleichen. Ich habe auch schon versucht einen Neuen zu erstellen, aber da habe ich genau das gleiche Problem.
Schrift lässt sich ändern, der Rest nicht.
Die Farbe ändert sich von hellgrau auf dunkelgrau, so wie der default Wert eben ist.
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.