FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Une petite pendulette digitale Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Une petite pendulette digitale Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Une petite pendulette digitale Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Une petite pendulette digitale Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Une petite pendulette digitale Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Une petite pendulette digitale Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Une petite pendulette digitale Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Une petite pendulette digitale Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Une petite pendulette digitale Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Une petite pendulette digitale Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Une petite pendulette digitale Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Une petite pendulette digitale Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Une petite pendulette digitale Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Une petite pendulette digitale Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Une petite pendulette digitale Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon : la prochaine extension Pokémon sera EV6.5 Fable ...
Voir le deal

 

 Une petite pendulette digitale

Aller en bas 
+2
Jean Claude
JL35
6 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Une petite pendulette digitale   Une petite pendulette digitale EmptyLun 21 Mar 2011 - 23:22

Que se passe-t-il ? tout le monde dort ? Sleep Et je n'ai pas mis d'alarme à ma pendulette...
Cliquer dessus pour l'arrêter.
Code:

' Horloge digitale
DIM n, x, y, lc, hc, e, xp(8), i, d, a, m, j, l, sj, t$, w0, h0, ra, ga, ba, re, ge, be
DIM tp, lf, wp, hp, js$(6), ms$(12), cad, al, ad, alh, alm, lb, sx, sy, sv, clk, hb, pw
DIM cptAlarm: cptAlarm = 0
LABEL Init, Chg, Clock, Afdat, Afala, Digit, Fin, Jours, Tailtext, Alarm, Alok, Alan
js$(0) = "dimanche": js$(1) = "lundi": js$(2) = "mardi": js$(3) = "mercredi"
js$(4) = "jeudi": js$(5) = "vendredi": js$(6) = "samedi"
ms$(1) = "janvier": ms$(2) = "février": ms$(3) = "mars": ms$(4) = "avril": ms$(5) = "mai"
ms$(6) = "juin": ms$(7) = "juillet": ms$(8) = "août": ms$(9) = "septembre"
ms$(10) = "octobre": ms$(11) = "novembre": ms$(12) = "décembre"

cad = 0: ' Form 0 sans bordure
' cad = 1: ' Form 0 avec bordure
lc = 15: hc = 30: pw = 3
e = 10
xp(1) = 10: xp(2) = xp(1)+lc+e: xp(3) = xp(2)+lc+e
xp(4) = xp(3)+e: xp(5) = xp(4) + lc + e: xp(6) = xp(5) + lc + e
xp(7) = xp(6) + e: xp(8) = xp(7) + lc + e
tp = 10: lf = 10: ' Emplacement sur l'écran, à ajuster selon les goûts
IF cad = 0
    w0 = xp(8)+lc+e+20: h0 = hc+30
    wp = w0: hp = h0
    lb = w0-24
ELSE
    w0 = xp(8)+lc+e+20+25: h0 = hc+55
    wp = w0-18: hp = h0-39
    lb = w0-44
END_IF
TOP 0, tp: LEFT 0, lf: WIDTH 0, w0: HEIGHT 0, h0: TO_FOREGROUND 0
IF cad = 0
    BORDER_HIDE 0
ELSE
    COLOR 0, 128,64,0
END_IF
PICTURE 1: TOP 1, 0: LEFT 1, 0: WIDTH 1, wp: HEIGHT 1, hp
2D_TARGET_IS 1: 2D_FILL_COLOR 64,64,64: 2D_PEN_COLOR 255,255,255
2D_RECTANGLE 0,0,wp,hp: 2D_PEN_WIDTH pw
PRINT_TARGET_IS 1: FONT_NAME 1, "Arial": FONT_SIZE 1, 10: FONT_COLOR 1, 255,255,0
ON_CLICK 1, Chg
hb = 16
BUTTON 2: TOP 2, hp-hb+2: LEFT 2, lb: HEIGHT 2, hb: WIDTH 2, 22
FONT_SIZE 2, 6: CAPTION 2, "AL": ON_CLICK 2, Alarm

FORM 10: TOP 10, tp+2*hc: LEFT 10, lf+30: WIDTH 10, 140: HEIGHT 10, 80
COLOR 10, 192,255,255: BORDER_HIDE 10: HIDE 10
SPIN 11: PARENT 11, 10: TOP 11, 20: LEFT 11, 20: WIDTH 11, 45
SPIN 12: PARENT 12, 10: TOP 12, 20: LEFT 12, 92: WIDTH 12, 45
MIN 11, 0: MIN 12, 0: MAX 11, 23: MAX 12, 59
BUTTON 13: PARENT 13, 10: TOP 13, 52: LEFT 13, 2: WIDTH 13, 44: CAPTION 13, "Quit"
BUTTON 14: PARENT 14, 10: TOP 14, 52: LEFT 14, 48: WIDTH 14, 44: CAPTION 14, "OK"
BUTTON 15: PARENT 15, 10: TOP 15, 52: LEFT 15, 94: : WIDTH 15, 44: CAPTION 15, "Annul"
ON_CLICK 13, Fin: ON_CLICK 14, Alok: ON_CLICK 15, Alan

ra = 164: ga = 255: ba = 164: ' couleur segments allumés
re = 0: ge = 120: be = 0: ' couleur segments éteints
GOSUB Init

al = 0: ' alarme désactivée
clk = 0
TIMER 20: TIMER_INTERVAL 20, 1000: ON_TIMER 20, Clock
END
Fin:
TERMINATE

Init:
tp = TOP(0): lf = LEFT(0)
IF cad = 0
    w0 = xp(8)+lc+e+20: h0 = hc+30
    wp = w0: hp = h0
    lb = w0-24
    BORDER_HIDE 0
ELSE
    w0 = xp(8)+lc+e+20+25: h0 = hc+55
    wp = w0-18: hp = h0-39
    lb = w0-44
    BORDER_NORMAL 0
    COLOR 0, 128,64,0
END_IF
WIDTH 0, w0: HEIGHT 0, h0: WIDTH 1, wp: HEIGHT 1, hp
2D_TARGET_IS 1: 2D_FILL_COLOR 64,64,64
2D_PEN_COLOR 196,128,64
2D_RECTANGLE 0,0,wp,hp
j = VAL(LEFT$(DATE$, 2)): sj = j
GOSUB Afdat
y = 8: IF cad = 0 THEN y = 20
LEFT 2, lb: TOP 2, y+hc-hb+5
n = -1
FOR i = 1 TO 8
    IF i<>3 AND i<>6
        x = xp(i): GOSUB Digit
    ELSE
        2D_PEN_COLOR ra,ga,ba
        x = xp(i): 2D_LINE x,y+hc/2-10,x,y+hc/2-10+4: 2D_LINE x,y+hc/2+10,x,y+hc/2+10+4
    END_IF
NEXT i
IF al = 1 THEN GOSUB Afala
GOSUB Clock
RETURN

Chg:
cad = 1-cad
GOSUB Init
RETURN

Clock:
t$ = DATE$: j = VAL(LEFT$(t$, 2))
IF j <> sj
    GOSUB Afdat
    sj = j
END_IF
IF al = 1
    IF VAL(LEFT$(TIME$, 2)) = alh AND VAL(MID$(TIME$,4,2)) = alm
        ' alarme déclenchée
        ad = 1: i = VAL(RIGHT$(TIME$,2))
        IF i <> sv
            BEEP: sv = i
            ra = 255: ga = 164
            2D_PEN_COLOR 0,255,255:2D_FILL_COLOR 0,255,255
            2D_FILL_COLOR re,ge,be: 2D_RECTANGLE 2,2,wp-2,hp-2
        ELSE
            ra = 164: ga = 255
            2D_PEN_COLOR 64,64,64: 2D_FILL_COLOR 64,64,64: 2D_RECTANGLE 2,2,wp-2,hp-2
        END_IF
        GOSUB Afdat
        GOSUB Afala
    ELSE
        IF ad = 1
            ad = 0: ra = 164: ga = 255
            GOSUB Alan: ' si on ne veut pas conserver l'alarme pour dans 24 heures !
        END_IF
    END_IF
END_IF
FOR i = 1 TO 8
    t$ = MID$(TIME$, i, 1)
    IF t$ <> ":"
        n = VAL(t$)
        x = xp(i)
        GOSUB Digit
    ELSE
        2D_PEN_COLOR ra,ga,ba
        x = xp(i): 2D_LINE x,y+hc/2-10,x,y+hc/2-10+4: 2D_LINE x,y+hc/2+10,x,y+hc/2+10+4
    END_IF
NEXT i
RETURN

Afdat:
t$ = DATE$: m = VAL(MID$(t$, 4, 2)): a = VAL(RIGHT$(t$, 2))
GOSUB Jours: t$ = js$(d) + " " + LEFT$(t$, 2) + " " + ms$(m) + " " + RIGHT$(t$, 4)
IF cad = 0
    GOSUB Tailtext: PRINT_LOCATE (w0-l)/2,1: PRINT t$
ELSE
    CAPTION 0, t$
END_IF
RETURN

Afala:
FONT_NAME 1, "Wingdings": FONT_COLOR 1, 255,0,0: FONT_SIZE 1, 14: FONT_BOLD 1
lb = w0-22: IF cad = 1 THEN lb = w0-42
PRINT_LOCATE lb, y: PRINT CHR$(37)
FONT_NAME 1,"Arial": FONT_SIZE 1,10: FONT_COLOR 1, 255,255,0: FONT_BOLD_OFF 1
RETURN

Digit:
' affichage du chiffre n en x,y, dimensions lc, hc
2D_PEN_COLOR re,ge,be
2D_LINE x,y,x+lc,y: 2D_POLY_TO x+lc, y+hc: 2D_POLY_TO x,y+hc: 2D_POLY_TO x,y
2D_POLY_TO x, y+hc/2: 2D_POLY_TO x+lc, y+hc/2
2D_PEN_COLOR ra,ga,ba
SELECT n
    CASE 0: 2D_LINE x,y,x+lc,y: 2D_POLY_TO x+lc,y+hc: 2D_POLY_TO x,y+hc
            2D_POLY_TO x,y
    CASE 1: 2D_LINE x+lc,y,x+lc,y+hc
    CASE 2: 2D_LINE x,y,x+lc,y: 2D_POLY_TO x+lc,y+hc/2: 2D_POLY_TO x,y+hc/2
            2D_POLY_TO x,y+hc: 2D_POLY_TO x+lc,y+hc
    CASE 3: 2D_LINE x,y,x+lc,y: 2D_POLY_TO x+lc,y+hc/2: 2D_POLY_TO x,y+hc/2
            2D_POLY_TO x+lc,y+hc/2:2D_POLY_TO x+lc,y+hc: 2D_POLY_TO x,y+hc
    CASE 4: 2D_LINE x,y,x,y+hc/2: 2D_POLY_TO x+lc,y+hc/2: 2D_POLY_TO x+lc,y
            2D_POLY_TO x+lc,y+hc
    CASE 5: 2D_LINE x+lc,y,x,y: 2D_POLY_TO x,y+hc/2: 2D_POLY_TO x+lc,y+hc/2
            2D_POLY_TO x+lc,y+hc: 2D_POLY_TO x,y+hc
    CASE 6: 2D_LINE x+lc,y,x,y: 2D_POLY_TO x,y+hc: 2D_POLY_TO x+lc,y+hc
            2D_POLY_TO x+lc,y+hc/2: 2D_POLY_TO x,y+hc/2
    CASE 7: 2D_LINE x,y+hc/2,x,y: 2D_POLY_TO x+lc,y: 2D_POLY_TO x+lc,y+hc
    CASE 8: 2D_LINE x,y,x+lc,y: 2D_POLY_TO x+lc, y+hc: 2D_POLY_TO x,y+hc
            2D_POLY_TO x,y: 2D_POLY_TO x, y+hc/2: 2D_POLY_TO x+lc, y+hc/2
    CASE 9: 2D_LINE x,y+hc,x+lc,y+hc: 2D_POLY_TO x+lc,y: 2D_POLY_TO x,y
            2D_POLY_TO x,y+hc/2: 2D_POLY_TO x+lc,y+hc/2
END_SELECT
RETURN

Jours:
' jour de la semaine (d = 0 à 6, dimanche à samedi) en fonction de
' jour j, mois m et année a
d = a
IF m<3 THEN d = d-1
d = INT(23*m/9) + j + 4 + a + INT(d/4) - INT(d/100) + INT(d/400)
IF m >=3 THEN d = d-2
d = d - 7*INT(d/7)
RETURN

Tailtext:
' Calcul de la largeur l de t$, en pixels
PICTURE 300: TOP 300, -150: WIDTH 300, 900: COLOR 300, 1, 1, 1
PRINT_TARGET_IS 300: FONT_NAME 300, "Arial": FONT_SIZE 300, 10
FONT_COLOR 300,0,0,0: PRINT t$
FOR l = 0 TO 799
    IF COLOR_PIXEL_RED(300,l,0)=1 THEN EXIT_FOR
NEXT l
PRINT_TARGET_IS 1: DELETE 300
RETURN

Alarm:
tp = TOP(0): lf = LEFT(0)
IF cad = 0
    TOP 10, tp+2*hc: LEFT 10, lf + 30
ELSE
    TOP 10, tp+2*hc+20: LEFT 10, lf + 50
END_IF
SHOW 10
PRINT_TARGET_IS 10: FONT_BOLD 10: PRINT "          ALARME A:"
PRINT_LOCATE 0, 22: PRINT " H:              M:"
PRINT_TARGET_IS 1: FONT_NAME 1, "Arial": FONT_SIZE 1, 10: FONT_COLOR 1, 255,255,0
RETURN

Alok:
alh = POSITION(11): alm = POSITION(12)
HIDE 10
GOSUB Afala
al = 1
RETURN

Alan:
HIDE 10
' annulation de l'alarme en cours...
GOSUB Init
FONT_NAME 1, "Wingdings": FONT_COLOR 1, 255,0,0: FONT_SIZE 1, 14: FONT_BOLD 1
lb = w0-22: IF cad = 1 THEN lb = w0-42
PRINT_LOCATE lb, y: PRINT " "
FONT_NAME 1, "Arial": FONT_SIZE 1, 10: FONT_COLOR 1, 255,255,0
al = 0
RETURN


Dernière édition par JL35 le Mar 29 Mar 2011 - 15:56, édité 12 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMar 22 Mar 2011 - 7:54

bien sympa ta pendulette. Je l'ai adaptée en ajoutant un top et left à form 0, car en haut à gauche de mon écran c'est réservé à Panoramic.
Bravo, A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMar 22 Mar 2011 - 11:30

Salut Jean Claude, tu as raison, on peut la mettre où on veut.
L'idéal aurait été de pouvoir la déplacer à la souris, ça doit être faisable.-
J'ai ajouté un léger liséré blanc autour, ça tranche mieux sur l'écran (j'ai eu un doute. dit-on liseré ou liséré ? eh bien d'après le Larousse on peut dire les deux...).
Et j'ai centré la date dans la fenêtre.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Une petite pendulette digitale Empty
MessageSujet: re   Une petite pendulette digitale EmptyMar 22 Mar 2011 - 13:04

Je n'ai qu'un mot à dire ...
cheers cheers cheers cheers cheers cheers
Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMar 22 Mar 2011 - 13:49

je ne comprends pas. J'avais posté une réponse, et je ne la vois plus. J'ai horreur de me répété et je garde pour moi ce que j'avais mis. Perte de temps. Bonsoir
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMar 22 Mar 2011 - 15:34

Désolé cosmos, je ne comprends pas ce qui est arrivé à ton message...

J'ai encore fait une petite modif, on peut afficher la pendulette avec ou sans encadrement (variable cad = 0 ou 1). Avec encadrement ça permet de la balader n'importe où dans l'écran, pour ne pas gêner:
Avec encadrement, cad = 1 :
Une petite pendulette digitale I1
Sans encadrement, cad = 0 :
Une petite pendulette digitale I2
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 1:00

Je viens de rajouter une fonction réveil-matin: alarme à une heure donnée:
Une petite pendulette digitale 0i1
Cliquer sur le petit bouton 'AL', une boîte de dialogue s'ouvre pour demander l'heure et la minute de réveil.
La cloche rouge indique qu'une alarme est en cours.
On peut la consulter, la modifier ou l'annuler, par le même bouton 'AL'

Le son n'est pas très puissant (fonction BEEP), il doit être possible de faire quelque chose d'un peu plus... tonitruant.
Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 9:34

Bonjour,
Une simple remarque en passant, il y a plein de petit programme en Panoramic intéressant à faire, mais le volume compilé est trop gros à mon sens. Si pour chaque petit programme, il faut faire un programme compilé, pour les vieux PC comme le mien, je ne suis pas d'accord. Jack dit que nous ne sommes pas prêt pour avoir des instructions comme virtual, mais on le serra jamais, vu qu'il y a toujours un nouveau qui s'inscrit. Je stoppe là les commentaires, et je vous laisse avec les votres.

Pour ton programme, tu pourrais par exemple, avec un clic sur la forme, offrir la possibilité de mettre en "border_small", pour déplacer la forme, qui se remettrait en border_hide une fois le bouton relâché. Pour ma part, je ne vais pas faire de compilation vu le volume généré. Ce qui serait intéressant pour ce type de programme, c'est de les avoir en #include avec des variables propres et des formes propres qui auraient un nom défini pour chacun d'eux, ce qui permettrait ensuite de mettre le numéro qui conviendrait pour chacun. De cette façon, on pourrait avoir pleins de petits programmes sympas, qu'on assemblerait dans un programme général, et on aurait une seule compilation
Je sais, on pourrait faire ceci, faire cela, mais voila c'est ainsi que marche le monde.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 14:23

Bonnes idées cosmos, pour le border en particulier, avec ta permission je vais regarder ça.

Et je suis d'accord avec toi pour le volume des programmes compilés, volume énorme quelle que soit la longueur du source... c'est bien embêtant.
Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 15:44

Si tu veux, j'ai fais l'essai avec ça. Je ne donne que la partie transformée, vu que je vois qu'il n'y a pas la date, c'est pas ta dernière version
Avec les label: lire et positionne
modifier : on_click 1,lire
Code:


list 3:left 3,120:width 3,50:height 3,30:item_add 3,"deplace":item_add 3,"fin":hide 3:on_click 3,positionne

TIMER 2: ON_TIMER 2, Clock
END
' ============================================================================
lire:
  border_small 0
  repeat:until scancode=0
  show 3:height 0,h0+30:width 0,w0+10
return
positionne:
  if item_index(3)=1
      repeat
      until mouse_left_up(1)=1 or scancode=27
      border_hide 0 :hide 3:HEIGHT 0, h0:width 0,w0
  else
      goto fin
  end_if
return
Il faudra peut-être adapter selon les changements de la dernière version que je n'ai pas regardé.
A toi de voir si tu veux de mettre une version finale.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 16:56

Super ta petite pendulette !

Je me suis permis de modifier la procédure Clock pour avoir un effet visuel en cas d'alarme :

Code:

DIM cptAlarm:cptAlarm=0
...
Clock:
...
...
FOR i = 1 TO 8
    t$ = MID$(TIME$, i, 1)
    IF t$ <> ":"
      n = VAL(t$)
      x = xp(i)
      GOSUB Digit
    ELSE
      2D_PEN_COLOR ra,ga,ba
      x = xp(i): 2D_LINE x,y+hc/2-10,x,y+hc/2-10+4: 2D_LINE x,y+hc/2+10,x,y+hc/2+10+4
    END_IF
NEXT i
IF al = 1
    IF VAL(LEFT$(TIME$, 2)) = alh AND VAL(MID$(TIME$,4,2)) = alm AND (cptAlarm=0)
        ra=255:ga=164:ba=164
        cptAlarm = 10
    else
      IF cptAlarm <> 0
        cptAlarm=cptAlarm-1
        if ga=255
          ga=164:ra=255
        else
          ga=255:ra=164
        end_if
        BEEP
        if cptAlarm = 0
          ra=164:ga=255:ba=164
          GOSUB Alan
        end_if
      end_if
    END_IF
END_IF
RETURN
Smile
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 17:29

Merci Nardo, je retiens ton idée d'effet visuel, pas telle quelle (j'ai un peu trop modifié entretemps).
Je le fais durer 1 minute, de même que l'alarme sonore (1 bip toutes les secondes), jusqu'à la minute suivante, ou qu'on arrête volontairement ('Annul').
De plus je ne la désactive pas automatiquement, elle se redéclenchera 24 heures plus tard (sauf annulation, ou... extinction du pc !).

Pour arrêter la pendule, c'est maintenant une option du bouton 'AL': bouton 'Quit' (et non plus un clic sur le picture).

J'ai essayé le TO_FOREGROUND 0, pour avoir toujours la pendule en 1er plan, mais ça n'a pas l'air de marcher...

Malgré les suggestions de cosmos, je n'arrive pas à déplacement proprement la pendule sur le bureau (quand elle en mode sans cadre), j'abandonne pour le moment. Et ça m'embête d'utiliser une ressource externe (dll).

Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 18:58

Dans le code que j'ai mis, je la déplace. çà fonctionne ainsi: en cliquant sur l'image, le on_click teste que le bouton est relevé. Je mets le border_small pour pouvoir déplacer la fenêtre, et je montre un list pour faire le choix entre la fin de déplacement ou l'arrêt. Je vais reprendre ta dernière version pour voir

J'ai vu. Personnellement j'aurai procédé autrement. j'aurai fait un container en dessous des digits avec les boutons qui serait à HIDE, ce qui permet de déplacer l'ensemble.

En cliquant pour aller à alarm, j'aurai mis en plus border_small 0, j'aurai augmenté la hauteur de la forme 0 pour voir le container. Ce qui me permet de déplacer la forme, vu qu'il y a border_small. Une fois l'obtion validée, je mets border_hide 0, je cache le container, et je remet la hauteur pour ne voir que les digits.

Il est temps maintenant que je reprenne mon propre programme. J'ai pas testé la version Nardo. Peut-être à un autre moment.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyMer 23 Mar 2011 - 23:57

Finalement, j'ai adopté un compromis (suite aux idées de cosmos):

On peut passer du mode sans bordure au mode avec bordure, il suffit de cliquer dans la fenêtre, en bascule.

Pour déplacer la fenêtre sur le bureau, il suffit de passer en mode avec bordure (clic dans la fenêtre), de déplacer la fenêtre à la souris de la manière classique (cliquer/déplacer dans la bordure de titre), puis éventuellement de repasser en mode sans bordure (clic dans la fenêtre).

Ce n'est pas très contraignant pour l'utilisateur, et c'est simple à réaliser.
Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyJeu 24 Mar 2011 - 9:03

Bonjour JL35
Je vois que tu m'as mis à l'heure.

Il y a une chose que je ne comprend pas. L'affichage de la date chez moi ne marche pas, alors que cela a l'air de fonctionner ailleurs. Peut-être des divergence sur des cartes graphiques. Je dis cela, car je me souviens que Klaus, dans les testes, ne trouvait pas les mêmes valeurs en lisant les pixels, valeurs deifférentes de ce qui devrait être.

J'ai modifié cette partie là, et ici, je dis qu'il n'est pas nécessaire de tester les trois couleurs sur un texte pour savoir la largeur que prend celui-ci dans un picture. Une seule couleur suffit. La lecture d'un pixel en Panoramic est très longue en temps, même si ici c'est pas important, mais dans d'autre programme, cela l'est. Il suffit de mettre le fond d'écriture ainsi que la couleur de la fonte au même niveau, et de mettre la couleur du fond autrement. Voici comment j'ai modifié:
Code:
Tailtext:
' Calcul de la largeur l de t$, en pixels
PICTURE 300: TOP 300, -150: WIDTH 300, 900: COLOR 300, 255, 255, 255
PRINT_TARGET_IS 300: FONT_NAME 300, "Arial": FONT_SIZE 300, 10: 2d_target_is 300:2d_fill_color 0,0,0
FONT_COLOR 300,0,0,0:print_locate 0,0: PRINT t$
FOR l = 0 TO 799
    IF COLOR_PIXEL_RED(300,l,1)<>0  THEN EXIT_FOR
NEXT l
PRINT_TARGET_IS 1:2d_target_is 1: DELETE 300
RETURN
Et là ça marche chez moi, je vois la date.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyJeu 24 Mar 2011 - 9:24

Tu as raison bien sûr cosmos, dans cette application, pour le calcul de la taille du texte c'est une perte de temps inutile de tester les 3 couleurs, une seule suffit, et je modifie le programme en conséquence.

Je faisais ça parce que je m'étais aperçu que, quand on écrit un texte noir sur blanc, les caractères sont bordés de pixels de couleur différente, sans doute pour l'esthétique des caractères, et ça ne se voit pas à l'oeil nu.
Mais ici ça n'a aucune importance.
Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyJeu 24 Mar 2011 - 14:33

Très bien. Mais ne crois pas que tu sois obligé de me suivre sur tout ce que je dis. Les pixels bardés de couleurs différentes, je n'y avais pas pensé.
En faite, je me demandais pourquoi la date était invisible, et j'avais constaté que L en sorti faisait 800, et que le calcul en conséquence du positionnement était alors -320 pour print_locate, donc je ne voyais rien. Peut-être sur ce forum quelqu'un pourrait donner des éclaircissements. Est ce qu'une carte graphique peut faire des restrictions sur les couleurs et limiter le nombre visible de celles-ci. Pourquoi chez moi, je ne voyais pas la date?

Par contre sur les bordures en couleur des fontes pour améliorer le rendu, je pense qu'il faille éviter ceci ici, et mettre la couleur de la fonte avec celui du font de celle-ci. Pourquoi, parce que tu ne lis qu'une seule ligne horizontalement, et la ligne du haut, peut ne pas avoir de pixel, alors qu'il y en a plus bas. Sur la bordure de couleurs différentes, ce n'est valable que si on regarde l'ensemble des pixels sur la hauteur, et là ça devient long. En mettant la même couleur sur le fond du texte que la fonte, quelque soit la largeur du caractère, toute la hauteur a la même couleur, et se détache du fond du picture.

Autre chose, et là ça ne concerne pas que toi, c'est une chose que je constate constamment dans les codes. Pourquoi ne mettez-vous pas la boucle de fin, à la fin.
Un TERMINATE dans les lignes de codes, fait sursauter. Si le TERMINATE est à la dernière ligne, cela ferme sans heurt. Vous (je ne sais plus qui?) l'avais fait remarquer, vers octobre/novembre 2009.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyJeu 24 Mar 2011 - 16:48

Tout d'abord je te rassure cosmos, je ne me sens pas obligé de suivre tout ce que tu dis, mais si ça me semble judicieux, je prends, évidemment !

Juste concernant le TERMINATE: je ne vois pas ce qui te choque ici, il n'est pas du tout dans les lignes de code, mais dans le sous-programme Fin, après le End, appelé par un clic, lequel sous-programme ne comporte pas de Return puisque tout s'arrête au Terminate.
Ca me paraît parfaitement logique, non ? qu'appelles-tu une 'boucle de fin' ?

Pour ce qui est du calcul de la longueur du texte en pixels (sous-programme Tailtext), il suffit bien de n'analyser qu'une seule ligne de pixels pour avoir la longueur exacte. Le texte s'écrit en noir (0,0,0) sur fond (1,1,1), mais en fait le fond des caractères est blanc.
Pour le voir il suffit de rendre l'opération visible:
Une petite pendulette digitale Img
comme ceci:
Code:
DIM t$, l
LABEL Tailtext
WIDTH 0, 1000: HEIGHT 0, 100
t$ = "Au clair de la lune"
GOSUB Tailtext
END

Tailtext:
' Calcul de la largeur l de t$, en pixels
PICTURE 300: TOP 300, 10: WIDTH 300, 900: COLOR 300, 1, 1, 1
PRINT_TARGET_IS 300: FONT_NAME 300, "Arial": FONT_SIZE 300, 10
FONT_COLOR 300,0,0,0: PRINT t$
FOR l = 0 TO 799
    IF COLOR_PIXEL_RED(300,l,0)=1 THEN EXIT_FOR
NEXT l
PRINT_TARGET_IS 0: ' DELETE 300
RETURN

Pour les pixels de couleur dans un print noir sur blanc, voilà ce que j'obtiens, en grossissant:
Une petite pendulette digitale Img1
Je me suis demandé si ces pixels de couleur n'étaient pas rajoutés par exemple par la logique interne du moniteur, quelque chose comme ça, mais non, ils sont bien réels, en mémoire, on peut les mettre en évidence:
Code:
DIM t$, l, r, g, b, x, y
LABEL Tailtext
WIDTH 0, 300: HEIGHT 0, 550
PICTURE 10: TOP 10, 80: LEFT 10, 20: WIDTH 10, 200: HEIGHT 10, 400
PICTURE 300: TOP 300, 0: WIDTH 300, 80: HEIGHT 300, 50: COLOR 300, 1, 1, 1
t$ = "Au clair de la lune"
GOSUB Tailtext
END

Tailtext:
PRINT_TARGET_IS 300: FONT_NAME 300, "Arial": FONT_SIZE 300, 10
FONT_COLOR 300,0,0,0: PRINT t$
2D_TARGET_IS 10
FOR y = 0 TO 19
    FOR x = 0 TO 9
        r = color_pixel_red(300,x,y)
        g = color_pixel_green(300,x,y)
        b = color_pixel_blue(300,x,y)
        2D_FILL_COLOR r,g,b
        2D_RECTANGLE x*20, y*20, x*20+19, y*20+19
    NEXT x
NEXT y
PRINT_TARGET_IS 0
RETURN
Une petite pendulette digitale Img2
Le caractère apparaît noir, et pourtant il n'y a pas beaucoup de noir pur là-dedans.
C'est amusant d'essayer d'autres teintes que le noir, pour le print, on s'aperçoit qu'il y a plein d'autres couleurs, l'ensemble donnant le résultat voulu, visuellement.
Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyJeu 24 Mar 2011 - 18:14

JL35, si tu ne mets pas le son, ce que je mets concernant TERMINATE, ne sert à rien.
Si tu mets le son, avec TERMINATE à l'intérieur des codes (ce qui entre nous est correct dans la structure), à la fermeture du programme, on a un son qui fait sursauter.
Si tu mets la label fin: à la fin avec TERMINATE, Windows ne provoque pas de son. C'est tout.

Quand aux lettres, tu me montres ce que je dis. Les six premières lignes du haut se terminent par un blanc. Moi je trouve plus simple d'afficher le caractère de la même couleur que le fond du texte, cela me parait plus simple pour voir la différence avec la couleur du picture. Maintenant apparemment la date vous le voyez sur votre ordi, alors que moi, je ne le voyait pas. Elle était hors cadre, vu que le programme sur mon ordi, n'a pas pu déterminé la différence entre le texte et le fond de l'image. Donc je suppose que c'est une question de carte graphique, mais je n'en sais rien. En apportant les modification que j'ai faite, le programme a vu une différence, et maintenant ça marche. Je ne dis pas que cela est une erreur de ta part. Il est évident que si tu vois ce que ton programme fait, l'erreur ne vient pas de toi, mais surement de la conception du PC, vu que chez moi, cela ne marche pas. Je pense qu'ici au lieu de faire une différence entre un 0 et un 1 pour une couleur, il faut faire des différences plus importante, vu qu'on a 256 possibilités de choix sur une couleur. C'est pour cela que je me dis que certainement mon moniteur dois limiter la sortie des couleurs, et ne pas me montrer les millions de possibilité. Ça c'est pas de ma faute non plus. Je fais avec ce que j'ai.

Mais ne te fâches pas. Ton programme fonctionne. Mais pour voir les différences, il faudrait avoir un tas d'ordi. Ni toi, ni moi ni pouvons rien.
Salutation
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyJeu 24 Mar 2011 - 18:37

Attends cosmos, je ne suis certainement pas fâché, pas mon genre, bien au contraire j'apprécie beaucoup les avis des autres, quels qu'ils soient, c'est toujours enrichissant.

Pour le son sur Terminate, je n'ai rien remarqué puisque le son est coupé systématiquement sur mon pc (ça m'agace un peu tous ces bips...), sauf ponctuellement si j'en ai besoin, vidéo ou musique.

Pour les couleurs, effectivement avec ma méthode (0 ou 1) il faut pouvoir gérer les 256*256*256 couleurs, mais théoriquement tous les pc le font... mais rien n'empêche de faire un choix plus tranché.
S'il y a des particularités, rien n'empêche d'adapter le programme à sa machine, ou à ses propres goûts, il est assez simple pour ça.
Revenir en haut Aller en bas
Invité
Invité




Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyVen 25 Mar 2011 - 8:58

Je me demande si pour le tableur, où lorsque je voulais centrer ou mettre le texte à droite de la cellule, ce ne serait pas le même problème. Je ne vais rentrer dans le programme en question pour vérifier. Tu es mieux placé que moi, pour savoir, si la méthode est identique.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptyVen 25 Mar 2011 - 9:10

Bonjour,
L'histoire des couleurs sur la bordure des caractères ne proviendrai pas du lissage des polices à l'écran ?
Dans ce cas, peut être faire une détermination à partir d'un caractère qui ne possède pas de trait en biais (genre '+')


scratch

Sinon un petit bug :
Si tu rentres une alarme et que tu bascules le formulaire avec bordure pour le déplacer, lorsque tu reviens en bordure "none", la taille de la fonte pour l'affichage du jour n'est plus correcte...

Je pense qu'il faut rajouter à la fin de Alok:
Code:
FONT_SIZE 1,10: FONT_COLOR 1, 255,255,0:FONT_BOLD_OFF 1

Revenir en haut Aller en bas
http://nardo26.lescigales.org
jjn4

jjn4


Nombre de messages : 2709
Date d'inscription : 13/09/2009

Une petite pendulette digitale Empty
MessageSujet: +++   Une petite pendulette digitale EmptySam 26 Mar 2011 - 19:26

Joli petite pendulette !
Bravo !
Il ne lui reste plus qu'à faire horloge parlante, et ce sera parfait !
Laughing Laughing Laughing
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Une petite pendulette digitale Empty
MessageSujet: re   Une petite pendulette digitale EmptySam 26 Mar 2011 - 19:38

On compte sur toi pour trouver une voix inter-galactique !
lol! lol! lol!
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale EmptySam 26 Mar 2011 - 20:30

@Nardo
Bien vu pour le bug, c'est corrigé !

Pour les pixels de couleur en bordure des caractères noirs, c'est ce que j'ai pensé au départ, lissage des caractères pour faire plus joli à l'écran.
Mais cet ajout de pixels ne se fait pas que sur l'écran, il existe aussi dans la mémoire écran, celle que l'on lit quand on fait COLOR_PIXEL_RED(n,X,Y) etc, pour le montrer c'était le but du petit programme ci_dessus qui décortique un caractère en lisant les couleurs de chaque pixel, donc on est bien obligés d'en tenir compte, elles existent réellement.
Et si on met '+' au lieu de 'A' c'est pareil, plein de pixels de couleur.

@jjn4 pour l'horloge parlante c'est pas demain la veille ! Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé





Une petite pendulette digitale Empty
MessageSujet: Re: Une petite pendulette digitale   Une petite pendulette digitale Empty

Revenir en haut Aller en bas
 
Une petite pendulette digitale
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Petite pendulette discrète
» Encore une petite horloge digitale
» Une horloge digitale
» Petite (toute petite) Sub: Dir
» petite question

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: