Centrum Programisty i Webmastera
CPW - Forum Programistyczne
FAQ  FAQ   Szukaj  Szukaj   Użytkownicy  Użytkownicy   Grupy  Grupy   kanał RSS  Kanał RSS  
Rejestracja  ::  Zaloguj Zaloguj się, by sprawdzić wiadomości


Napisz nowy temat  Odpowiedz do tematu
 [Matlab] jak dziala 'Callback'?  Zobacz poprzedni temat :: Zobacz następny temat 
Autor Wiadomość
oranz
PostWysłany: 04.03.2006, 13:02:29    Temat postu: [Matlab] jak dziala 'Callback'? Pisownia Zacytuj zaznaczone Odpowiedz z cytatem

Poczatkujacy

Dołączył: 04 Mar 2006
Posty: 4
Skąd: Tarnów/Kraków

Witam,
Na studiach mecza mnie bym napisal zwykly, prosty kalkulator obslugiwany myszka. Jak narazie udalo mi sie zrobic ladnie wygladajacy kalkulator jednak nie mam pomyslu co zrobic dalej by dzialal. Chodzi mi glownie o to by po nacisnieciu przycisku '2', '5', '7' w text-box'ie pojawila sie liczba '257' (czyli przypisanie wartosci cyfrowej do odpowiednich przyciskow i ich hmm...wyswietlanie w text-boxie).

Oto kod (poniewaz niema takowego w jezyku" uzyje opcji cytuj):
Matlab napisał:

okno=figure('position',[25 100 116 175]);

hc=uicontrol('style','pushbutton','string','C','position',[1 50 29 25]);
h0=uicontrol('style','pushbutton','string','0','position',[30 50 29 25]);
hw=uicontrol('style','pushbutton','string','=','position',[59 50 29 25]);
hm=uicontrol('style','pushbutton','string','*','position',[88 50 29 25]);

h1=uicontrol('style','pushbutton','string','1','position',[1 75 29 25]);
h2=uicontrol('style','pushbutton','string','2','position',[30 75 29 25]);
h3=uicontrol('style','pushbutton','string','3','position',[59 75 29 25]);
hd=uicontrol('style','pushbutton','string','/','position',[88 75 29 25]);

h4=uicontrol('style','pushbutton','string','4','position',[1 100 29 25]);
h5=uicontrol('style','pushbutton','string','5','position',[30 100 29 25]);
h6=uicontrol('style','pushbutton','string','6','position',[59 100 29 25]);
ho=uicontrol('style','pushbutton','string','-','position',[88 100 29 25]);

h7=uicontrol('style','pushbutton','string','7','position',[1 125 29 25]);
h8=uicontrol('style','pushbutton','string','8','position',[30 125 29 25]);
h9=uicontrol('style','pushbutton','string','9','position',[59 125 29 25]);
hp=uicontrol('style','pushbutton','string','+','position',[88 125 29 25]);

ht=uicontrol('style','text','position',[0 154 116 19],'backgroundcolor',[1 1 1]);


Jak sami widzicie to jak narazie tylko "wyglada". Moja pani mgr twierdzi (co rowniez wynika z pomocy jakie nam dala), iz aby dany przycisk mial przypisana cyfre i przekazywal ja do text-box'u nalezy uzyc komend 'callback', 'set', 'get'. Niestety ani z pomocy naukowych ktore uzyskalem ani slow mgr nie uzyskalem odpowiedzi jak dzialaja te komendy i jaknalezy je zapisywac by dziaialy. Dlatego prosilbym kogos o maly tutorial "czym to sie je".

Wymyslilem ze aby przypisac wartosc kazdemu przyciskowi (jak narazie tylko tym cyfrowym) nalezy przypisac im wartosc w nastepujacy sosob:

Cytat:

set(h1,'Value',1):


Gdzie h1 to przycisk z cyfra 1. Jednak podobno jest to bledne....
Za wszelka pomoc z gory dziekuje.
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Miechu
PostWysłany: 04.03.2006, 13:09:39    Temat postu: Pisownia Zacytuj zaznaczone Odpowiedz z cytatem

Ex moderator

Dołączył: 29 Lip 2005
Pochwał: 81
Posty: 3647
Skąd: Wwa

matlaba nie znam, ale moge powiedziec ci co to jest callback. callback jest to funkcja wolana przy jakims zdarzeniu. np. po wciesnieciu przycisku, uplynieciu czasu, zamykaniu aplikacji itd.

nie wiem czy cos ci to pomoze, ale odpowiedz na temat masz :p Wink
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
oranz
PostWysłany: 04.03.2006, 13:15:55    Temat postu: Pisownia Zacytuj zaznaczone Odpowiedz z cytatem

Poczatkujacy

Dołączył: 04 Mar 2006
Posty: 4
Skąd: Tarnów/Kraków

Dzieki Very Happy ale to juz akurat wiedzialem Wink bardziej mnie interesuje w jaki sposob jej uzyc by cos zostalo wywolane (tak jak w tymprzypadku: po nacisnieu przycisku 1 w text-box'ie pojawila sie cyfra 1).
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Miechu
PostWysłany: 04.03.2006, 13:19:22    Temat postu: Pisownia Zacytuj zaznaczone Odpowiedz z cytatem

Ex moderator

Dołączył: 29 Lip 2005
Pochwał: 81
Posty: 3647
Skąd: Wwa

no to w ramach rewanzu wygialem sie:
http://www.geologie.ens.fr/DOC/MATLAB6/techdoc/ref/uicontrol.html

Very Happy
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
oranz
PostWysłany: 04.03.2006, 13:44:04    Temat postu: Pisownia Zacytuj zaznaczone Odpowiedz z cytatem

Poczatkujacy

Dołączył: 04 Mar 2006
Posty: 4
Skąd: Tarnów/Kraków

o wielkie dzieki Smile napewno sie przyda ta stronka (ja szukalem dosyc dlugo ale nic niestety znalezc nie moglem :/). Mam nadzieje ze znajde tam to czego potrzebuje Smile
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Miechu
PostWysłany: 04.03.2006, 13:46:05    Temat postu: Pisownia Zacytuj zaznaczone Odpowiedz z cytatem

Ex moderator

Dołączył: 29 Lip 2005
Pochwał: 81
Posty: 3647
Skąd: Wwa

prosze bardzo Very Happy
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
oranz
PostWysłany: 18.03.2006, 13:16:39    Temat postu: Pisownia Zacytuj zaznaczone Odpowiedz z cytatem

Poczatkujacy

Dołączył: 04 Mar 2006
Posty: 4
Skąd: Tarnów/Kraków

ok, tydzien temu skonczylem zmagania ze swoim klakulatorem. Poniewaz otrzymalem od Was (a dokladnie Miecha) dosc przydatna teorie na temat tworzenia programow graficznych w Matlabie rewanzuje sie kodem do mojego klakulatora. Musze odrazu zaznaczyc, ze sam tego tak dokonca nie wymyslilem (duze uklony naleza sie Luciusowi z mojego roku ktry to ma leb do takich rzeczy). Oto pelny program:

Program glowny:

Kod:

clc
clear

global L C W Z Koniec
L=0; %zmienna do zapamietywania liczby
C=0; %zmienna pamieta ostatnia cyfre
W=0; %zmienna pamieta wynik dzialania
Z='+'; %zmienna pamieta znak dzialania
Koniec=0; %zmienna kontroluje koniec jednego dzialania i poczatek nastepnego

okno=figure('position',[25 100 116 175]);

hc=uicontrol('style','pushbutton','string','C','position',[1 50 29 25],'callback','kasuj(''C''); set(ht,''string'',L)');
h0=uicontrol('style','pushbutton','string','0','position',[30 50 29 25],'callback','tworzliczbe(0); set(ht,''string'',L)');
hw=uicontrol('style','pushbutton','string','=','position',[59 50 29 25],'callback','dzialania(''=''); set(ht,''string'',W)');
hm=uicontrol('style','pushbutton','string','*','position',[88 50 29 25],'callback','dzialania(''*''); set(ht,''string'',W)');

h1=uicontrol('style','pushbutton','string','1','position',[1 75 29 25],'callback','tworzliczbe(1); set(ht,''string'',L)');
h2=uicontrol('style','pushbutton','string','2','position',[30 75 29 25],'callback','tworzliczbe(2); set(ht,''string'',L)');
h3=uicontrol('style','pushbutton','string','3','position',[59 75 29 25],'callback','tworzliczbe(3); set(ht,''string'',L)');
hd=uicontrol('style','pushbutton','string','/','position',[88 75 29 25],'callback','dzialania(''/''); set(ht,''string'',W)');

h4=uicontrol('style','pushbutton','string','4','position',[1 100 29 25],'callback','tworzliczbe(4); set(ht,''string'',L)');
h5=uicontrol('style','pushbutton','string','5','position',[30 100 29 25],'callback','tworzliczbe(5); set(ht,''string'',L)');
h6=uicontrol('style','pushbutton','string','6','position',[59 100 29 25],'callback','tworzliczbe(6); set(ht,''string'',L)');
ho=uicontrol('style','pushbutton','string','-','position',[88 100 29 25],'callback','dzialania(''-''); set(ht,''string'',W)');

h7=uicontrol('style','pushbutton','string','7','position',[1 125 29 25],'callback','tworzliczbe(7); set(ht,''string'',L)');
h8=uicontrol('style','pushbutton','string','8','position',[30 125 29 25],'callback','tworzliczbe(8); set(ht,''string'',L)');
h9=uicontrol('style','pushbutton','string','9','position',[59 125 29 25],'callback','tworzliczbe(9); set(ht,''string'',L)');
hp=uicontrol('style','pushbutton','string','+','position',[88 125 29 25],'callback','dzialania(''+''); set(ht,''string'',W)');

ht=uicontrol('style','text','position',[0 154 115 19],'backgroundcolor',[1 1 1],'horizontalalignment','right','string','0');


Wykorzystane funkcje:
1.Tworzenie liczby z wprowadzanych cyfr:

Kod:

function[]=tworzliczbe(a);
global L C W Z Koniec

if Wynik==1
   L=0;
   Wynik=0;
end
if Z=='='
   W=0;
   Z='+';
end
if (L==0) & (a==0)
   L=0;
   C=a;
elseif (L<99999999999999)
   L=L*10+a;
   C=a;
end


2.Funkcja ta wykonuje wszystkie dzialania matematyczne:

Kod:

unction[]=dzialania(q);
global L C W Z Koniec

if Koniec==0;
   switch Z
      case '+'
         W=W+L;
      case '-'
         W=W-L;
      case '*'
         W=W*L;
      case '/'
         W=W/L;
   end
end
if q=='='
   L=W;
end
Z=q;
Koniec=1;


3.Funkcja obsluguje przycisk do kasowania zmiennych 'C':

Kod:

function[]=kasuj(q);
global L C W Z Koniec

switch q
   case 'C'
      L=0;
      C=0;
      W=0;
      Z='+';
end


Na wszelkie pytania (jezeli ktos bedzie chial oczywiscie je zadac Wink) odpowiem. Jeszcze raz dziekuje i pozdrawiam.
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Napisz nowy temat  Odpowiedz do tematu Strona 1 z 1

Skocz do:  



Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


DAJ Glass (1.0.8) template by Dustin Baccetti
Powered by phpBB © 2001, 2005 phpBB Group