Avatar billede docks Nybegynder
06. november 2003 - 23:15 Der er 26 kommentarer og
2 løsninger

Grid til et kalender.

Hej jeg roder med at lave en dynamisk kalender og er stødt på et lille problem. Det er at skabe "den" grid så kalenderen ser pæn ud - jeg mener at det kan gøres ved at placere to for løkker inde i hinanden men jeg kan simpelt hen ikke få det til at fungere.

Denne funktion lægger mine MC'er i en lang række:

function drawCalendar(){
    for(i=1;i<=GetDaysInMonth(Today_date);i++){
        if(i<10){
        _root.attachMovie("thisDay_mc","0"+i,i)
        this_day_mc = _root["0"+i];
        this_day_mc._y = i*20
        }else{
        _root.attachMovie("thisDay_mc",i,i)
        this_day_mc =_root[i];
        this_day_mc._y = i*20
        }
    }
}

If/else sætningen er for at sikre at alle dage mellem 0 og 10 får et "0" foran.

GetDaysInMonth() er en funktion der returnerer antal dage i den pågældende måned.

Er der en der ude der lige kan hjælpe mig?
Avatar billede nikolajdu Nybegynder
07. november 2003 - 01:03 #1
Du kan da heller ikke give den et navn bestående af tal....

Du navngiver  : 0 tal....

Anyway så har jeg brygget en anden version sammen :

function drawCalendar(){
    var offsetY = 0;
    var offsetX = 0;
    var maxX = 7;
    for(var i=1;i<=GetDaysInMonth(Today_date);i  ){
        prefix  = (i<10)? "0" : "";
        d = "dato" prefix i;
        this.attachMovie("thisDay_mc",d,i)
        this[d].day_date.text = i;
        this[d]._y = (i == 1)? offsetY : ((i-1) % maxX)? offsetY : offsetY  = this[d]._height;
        this[d]._x = (i == 1)? offsetX : ((i-1) % maxX)? offsetX  = this[d]._width : offsetX = 0;
    }
}

/Nikolaj
Avatar billede nikolajdu Nybegynder
07. november 2003 - 01:05 #2
hov :

d = "dato"+prefix+i;

og

this[d].day_date.text = prefix+i;
Avatar billede nikolajdu Nybegynder
07. november 2003 - 01:05 #3
spammer lige skal lige se om "plusserne" i d også forsvinder denne gang.

function drawCalendar(){
    var offsetY = 0;
    var offsetX = 0;
    var maxX = 7;
    for(var i=1;i<=GetDaysInMonth(Today_date);i  ){
        prefix  = (i<10)? "0" : "";
        d = "dato" prefix i;
        this.attachMovie("thisDay_mc",d,i)
        this[d].day_date.text = prefix+i;
        this[d]._y = (i == 1)? offsetY : ((i-1) % maxX)? offsetY : offsetY  = this[d]._height;
        this[d]._x = (i == 1)? offsetX : ((i-1) % maxX)? offsetX  = this[d]._width : offsetX = 0;
    }
}
Avatar billede nikolajdu Nybegynder
07. november 2003 - 01:06 #4
meget skummelt...
Avatar billede barklund Nybegynder
07. november 2003 - 08:28 #5
(tilføj selv et random antal plusser rundt omkring :)
Avatar billede nikolajdu Nybegynder
07. november 2003 - 08:33 #6
hehe...
Avatar billede docks Nybegynder
07. november 2003 - 10:42 #7
bruger:

function drawCalendar2(){
    var offsetY = 0;
    var offsetX = 0;
    var maxX = 7;
    for(var i=1;i<=GetDaysInMonth(Today_date);i  ){
        prefix  = (i<10)? "0" : "";
        d = "dato"+prefix+i;
        this.attachMovie("thisDay_mc",d,i)
        this[d].day_date.text = prefix+i;
        this[d]._y = (i == 1)? offsetY : ((i-1) % maxX)? offsetY : offsetY  = this[d]._height;
        this[d]._x = (i == 1)? offsetX : ((i-1) % maxX)? offsetX  = this[d]._width : offsetX = 0;
    }
}

Får en fejl med at scriptet er for langsom eller sådan noget... :(

Kom lige til at tænke på at der er forskelligt hvor på x-aksen det første felt skal placerer (d. 1 i hver måned). Det skal jo helst ligge under den pågældende dag...hmmmm.... der er selvfølgelig flere point for det - men måske kan jeg løse det selv senere efter arbejde...
Avatar billede barklund Nybegynder
07. november 2003 - 10:51 #8
Der mangler jo også alle plusserne stadigvæk....

(plus lidt ændringer :)

function drawCalendar2(){
    var offsetY = 0;
    var offsetX = 0;
    var maxX = 7;
    var d,m
    for(var i=1;i<=GetDaysInMonth(Today_date);i++){
        prefix = (i<10)? "0" : "";
        d = "dato"+prefix+i;
        m = this.attachMovie("thisDay_mc",d,i)
        m.day_date.text = prefix+i;
        m._y = ((i-1) % maxX)? offsetY : offsetY += this[d]._height;
        m._x = ((i-1) % maxX)? offsetX += this[d]._width : offsetX = 0;
    }
}
Avatar billede docks Nybegynder
07. november 2003 - 13:33 #9
Super nice takker>:D
Avatar billede docks Nybegynder
07. november 2003 - 13:35 #10
Gider i smide et svar begge to? Jeg barklund 5 og nicolajdu 10.

Angående hvor den 1. skal begynde på x aksen - er der en af jer der har et godt tip?
Avatar billede barklund Nybegynder
07. november 2003 - 13:38 #11
function drawCalendar2(){
    var startX = 100;
    var startY = 100;
    var offsetY = startY;
    var offsetX = startX;
    var maxX = 7;
    var d,m
    for(var i=1;i<=GetDaysInMonth(Today_date);i++){
        prefix = (i<10)? "0" : "";
        d = "dato"+prefix+i;
        m = this.attachMovie("thisDay_mc",d,i)
        m.day_date.text = prefix+i;
        m._y = ((i-1) % maxX)? offsetY : offsetY += this[d]._height;
        m._x = ((i-1) % maxX)? offsetX += this[d]._width : offsetX = startX;
    }
}
Avatar billede nikolajdu Nybegynder
07. november 2003 - 13:47 #12
Argumentet for overhovedet at bruge offsetX/Y var egentlig senere at kunne tilføje startX som barklun nu så fornuftigt har gjort ;-)
Avatar billede docks Nybegynder
07. november 2003 - 14:59 #13
ok jeg tror ikke lige jeg har beskrevet korrekt.

M T O T F L S
    1 2 3 4 5
6 7 8 9 osv.

M T O T F L S
  1 2 3 4 5 6
7 8 9 osv.

I de to eksempler så er den 1 dag i måneden forskellige...dvs. at det første MC skal placeres i forhold til hvilken da d. 1 er...
Avatar billede barklund Nybegynder
07. november 2003 - 15:13 #14
Oh, selvfølgelig :)

function drawCalendar2(){
    var startX = 100;
    var startY = 100;
    var offsetY = startY;
    var offsetX = startX;
    var maxX = 7;
    var day_num = 3; // sæt denne til først dag i ugen
    var d,m
    for(var i=1;i<=GetDaysInMonth(Today_date);i++, day_num++){
        prefix = (i<10)? "0" : "";
        d = "dato"+prefix+i;
        m = this.attachMovie("thisDay_mc",d,i)
        m.day_date.text = prefix+i;
        m._y = ((day_num-1) % maxX)? offsetY : offsetY += this[d]._height;
        m._x = ((day_num-1) % maxX)? offsetX += this[d]._width : offsetX = startX;
    }
}
Avatar billede docks Nybegynder
07. november 2003 - 16:29 #15
Tak barklund men der virker ikke helt efter hensigten. Det opfører sig underligt.

når jeg sætter day_num til 1 eller 2 er det godt nok, men så snart jeg sætter den fra 3-7 så begynder den at "fjerne" fra den forkerte ende. Lidt svært at forlkare og jeg kan ikke uploade til mit site da jeg er på arb. :(
Avatar billede barklund Nybegynder
07. november 2003 - 18:26 #16
function drawCalendar2(){
    var startX = 100;
    var startY = 100;
    var offsetY = startY;
    var offsetX = startX;
    var maxX = 7;
    var day_num = 3; // sæt denne til først dag i ugen
    var d,m,i;
    for(i = 1; i <= GetDaysInMonth(Today_date); i++, day_num++){
        prefix = (i<10)? "0" : "";
        d = "dato"+prefix+i;
        m = this.attachMovie("thisDay_mc",d,i)
        m.day_date.text = prefix+i;
        m._y = ((day_num-1) % maxX)? offsetY : offsetY += m._height;
        m._x = ((day_num-1) % maxX)? offsetX += m._width : offsetX = startX;
    }
}

Jeg forstår ikke helt... prøv at skitsere som i din forrige besked :)
Avatar billede docks Nybegynder
07. november 2003 - 18:56 #17
var day_num = 1

M T O T F L S
1 2 3 4 5 6 7
8 9...

var day_num = 2

M T O T F L S
  1 2 3 4 5 6
7 8 9...

var day_num = 3

M T O T F L S
  1 2 3 4 5
6 7 8 9...

var day_num = 4

M T O T F L S
  1 2 3 4 
5 6 7 8 9...

Således fortsætter det. Som du kan se går det fint til og med 2 men derefter går det galt. Jeg ville gerne kunne løse problemet selv, men kan ikke gennemskue kode :'( ... Det er de to sidste linier der driller mig...

Forresten mange tak for hjælpen begge 2 !
Avatar billede barklund Nybegynder
08. november 2003 - 03:55 #18
function drawCalendar2(){
    var startX = 100;
    var startY = 100;
    var offsetY = startY;
    var offsetX = startX;
    var maxX = 7;
    var day_num = 3; // sæt denne til først dag i ugen
    var d,m,i;
    for(i = 1; i <= GetDaysInMonth(Today_date); i++, day_num++){
        prefix = (i<10)? "0" : "";
        d = "dato"+prefix+i;
        m = this.attachMovie("thisDay_mc",d,i)
        m.day_date.text = prefix+i;
        m._y = ((day_num-1) % maxX)? offsetY : offsetY += m._height;
        m._x = ((day_num-1) % maxX)? offsetX = ((day_num-1) % maxX)*m._width : offsetX = startX;
    }
}
Avatar billede docks Nybegynder
12. november 2003 - 14:52 #19
Sorry - har ikke haft tid til at kigge på det før nu...

Det virker stadig ikke efter hensigten :( Damn...
Avatar billede nikolajdu Nybegynder
12. november 2003 - 14:57 #20
Har du et eksempel?
Avatar billede docks Nybegynder
13. november 2003 - 09:10 #21
Avatar billede barklund Nybegynder
13. november 2003 - 12:00 #22
Ændr til:

m._x = ((day_num - 1) % maxX) ? offsetX = startX+((day_num-1)%maxX)*m._width : offsetX = startX;
Avatar billede docks Nybegynder
13. november 2003 - 17:15 #23
top nice :)

Det funker :)

Lige én sidste ting - hvordan ændrer jeg afstanden mellenm "felterne" ? Det lykkedes mig at give 3 px mellem hver i y-aksen, men jeg kan ikke få de 3px på x-aksen...

Jeg ved godt jeg presser citronen nu, men sidste del-spm. - i promise
Avatar billede barklund Nybegynder
13. november 2003 - 18:06 #24
m._x = ((day_num - 1) % maxX) ? offsetX = startX+((day_num-1)%maxX)*(m._width+3) : offsetX = startX;
Avatar billede docks Nybegynder
14. november 2003 - 09:15 #25
Lækkert det fungerer. Dele point op mellem jer to - håber det er acceptabelt...
Avatar billede docks Nybegynder
14. november 2003 - 09:15 #26
Forresten TAK :D
Avatar billede barklund Nybegynder
14. november 2003 - 09:41 #27
Tarker :)
Avatar billede nikolajdu Nybegynder
14. november 2003 - 10:17 #28
tak for point :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester