Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Album fotografico

  1. #1

    Album fotografico

    Ciao a tutti!!!
    Dobbiamo realizzare un album fotografico simile a quello che si trova negli esempi di installazione di Flash (C:\Programmi\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Galleries\gallery_t ween.fla). Vorremmo che l'album funzionasse così: quando clicchiamo sopra ad una foto, quest'ultima si ingrandisce e si posiziona sopra l'album (o in posizione centrale); cliccando sull'immagine ingrandita, la foto tirna come prima.
    Abbiamo provato a modificare il codice ma non riusciamo ad ottenere questo effetto. Potete provarci voi, esperti di actionscript?
    Vi allego il codice!

    // Import the transitions classes so you can add a fading effect when the images load to the Stage.
    import mx.transitions.*;

    // Set the starting X and Y positions for the gallery images.
    _global.thisX = 30;
    _global.thisY = 70;

    /* Set static values for the Stage's width and height.
    Using Stage.width and Stage.height within the code results in
    strangely positioned full images when testing in the Flash environment
    (but the problem doesn't exist when published to a SWF file). */
    _global.stageWidth = 600;
    _global.stageHeight = 400;

    // Create and configure the XML instance which is used to load the list of gallery images on the fly.
    var gallery_xml:XML = new XML();
    gallery_xml.ignoreWhite = true;
    gallery_xml.onLoad = function(success:Boolean) {
    try {
    /* if you are able to successfully load and parse the gallery from a remote XML file,
    parse out the image names and add them to an array. */
    if (success) {
    var images:Array = this.firstChild.childNodes;
    var gallery_array:Array = new Array();
    for (var i = 0; i<images.length; i++) {
    gallery_array.push({src:images[i].firstChild.nodeValue});
    }
    /* call the displayGallery function which handles loading in each
    of the gallery images and placing them on the Stage. */
    displayGallery(gallery_array);
    } else {
    throw new Error("Unable to parse XML");
    }
    } catch (e_err:Error) {
    trace(e_err.message);
    } finally {
    delete this;
    }
    };

    // load the gallery.xml file from the current directory.
    gallery_xml.load("gallery_tween.xml");

    /* create a function which loops through the images in an array,
    and creates new movie clips on the Stage. */
    function displayGallery(gallery_array:Array) {
    var galleryLength:Number = gallery_array.length;
    // loop through each of the images in the gallery_array.
    for (var i = 0; i<galleryLength; i++) {
    /* create a movie clip instance which holds the image. We'll also set a variable,
    thisMC, which is an alias to the movie clip instance. */
    var thisMC:MovieClip = this.createEmptyMovieClip("image"+i+"_mc", i);

    /* load the current image source into the new movie clip instance,
    using the MovieClipLoader class. */
    mcLoader_mcl.loadClip(gallery_array[i].src, thisMC);

    // attach the preloader symbol from the Library onto the Stage.
    preloaderMC = this.attachMovie("preloader_mc", "preloader"+i+"_mc", 5000+i);

    /* set the preloader's bar_mc's _xscale property to 0%
    and set a default value in the progress bars text field. */
    preloaderMC.bar_mc._xscale = 0;
    preloaderMC.progress_txt.text = "0%";

    // set the _x and _y coordinates of the new movie clip.
    thisMC._x = _global.thisX;
    thisMC._y = _global.thisY;

    // set the position of the image preloader.
    preloaderMC._x = _global.thisX;
    preloaderMC._y = _global.thisY+20;

    // if you've displayed 5 columns of images, start a new row.
    if ((i+1)%5 == 0) {
    // reset the X and Y positions
    _global.thisX = 20;
    _global.thisY += 80;
    } else {
    _global.thisX += 80+20;
    }
    }
    }

    // define the MovieClipLoader instance and MovieClipLoader listener Object.
    var mcLoader_mcl:MovieClipLoader = new MovieClipLoader();
    var mclListener:Object = new Object();
    mclListener.onLoadStart = function() {
    };

    // while the content is preloading, modify the width of the progress bar.
    mclListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
    var pctLoaded:Number = Math.round(loadedBytes/totalBytes*100);
    // create a shortcut for the path to the preloader movie clip.
    var preloaderMC = target_mc._parent["preloader"+target_mc.getDepth()+"_mc"];
    preloaderMC.bar_mc._xscale = pctLoaded;
    preloaderMC.progress_txt.text = pctLoaded+"%";
    };

    // when the onLoadInit event is thrown, you're free to position the instances
    mclListener.onLoadInit = function(evt:MovieClip) {
    evt._parent["preloader"+evt.getDepth()+"_mc"].removeMovieClip();
    /* set local variables for the target movie clip's width and height,
    and the desired settings for the image stroke and border. */
    var thisWidth:Number = evt._width;
    var thisHeight:Number = evt._height;
    var borderWidth:Number = 2;
    var marginWidth:Number = 8;
    evt.scale = 20;
    // draw a white rectangle with a black stroke around the images.
    evt.lineStyle(borderWidth, 0x000000, 100);
    evt.beginFill(0xFFFFFF, 100);
    evt.moveTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
    evt.lineTo(thisWidth+borderWidth+marginWidth, -borderWidth-marginWidth);
    evt.lineTo(thisWidth+borderWidth+marginWidth, thisHeight+borderWidth+marginWidth);
    evt.lineTo(-borderWidth-marginWidth, thisHeight+borderWidth+marginWidth);
    evt.lineTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
    evt.endFill();

    /* scale the target movie clip so it appears as a thumbnail.
    This allows users to quickly view a full image without downloading it every time,
    but unfortunaltey also causes a large initial download. */
    evt._xscale = evt.scale;
    evt._yscale = evt.scale;
    // rotate the current image (and borders) anywyhere from -5 degrees to +5 degrees.
    evt._rotation = Math.round(Math.random()*-10)+5;
    /* when the target_mc movie clip instance is pressed, begin to drag the current movie clip
    and set some temporary variables so once you are finished rescaling and positioning
    the full image, you can return the instance to its original position. */
    evt.onPress = function() {
    // start dragging the current clip.
    this.startDrag();
    /* set the _xscale and _yscale properties back to 100% so the image appears full sized.
    You're also storing the original X and Y coordinates so you can return the image where you found it. */
    this._xscale = 100;
    this._yscale = 100;
    this.origX = this._x;
    this.origY = this._y;
    // find the depth of the current movie clip, and store it within the movie clip.
    this.origDepth = this.getDepth();
    /* :TRICKY: swap the depth of the current movie clip, with the next highest movie clip of the _parent.
    Effectively this makes the current movie clip the top of the "stack". */
    this.swapDepths(this._parent.getNextHighestDepth() );
    // try and center the current movie clip on the Stage.
    this._x = (_global.stageWidth-evt._width+30)/2;
    this._y = (_global.stageHeight-evt._height+30)/2;
    // apply a transition to the movie clip which makes the movie clip flicker for a split second.
    mx.transitions.TransitionManager.start(this, {type:mx.transitions.Photo, direction:0, duration:1, easing:mx.transitions.easing.Strong.easeOut, param1:empty, param2:empty});
    };
    /* when the movie clip instance is released, stop dragging the movie clip.
    Reset the _xscale and _yscale properties as well as the _x and _y coordinates. */
    evt.onRelease = function() {
    this.stopDrag();
    this._xscale = this.scale;
    this._yscale = this.scale;
    this._x = this.origX;
    this._y = this.origY;
    };
    // if the mouse cursor was released outside of the movie clip, call the onRelease handler.
    evt.onReleaseOutside = evt.onRelease;
    };
    mcLoader_mcl.addListener(mclListener);



    Ciao e grazie!
    Carmen e Aurora
    Carmen

  2. #2
    Ho fatto una Modifica Veloce perchè ora sono di fretta

    codice:
    // Import the transitions classes so you can add a fading effect when the images load to the Stage.
    import mx.transitions.*;
    
    ingrand = false;
    // Set the starting X and Y positions for the gallery images.
    _global.thisX = 30;
    _global.thisY = 70;
    
    /* Set static values for the Stage's width and height. 
       Using Stage.width and Stage.height within the code results in 
       strangely positioned full images when testing in the Flash environment 
       (but the problem doesn't exist when published to a SWF file). */
    _global.stageWidth = 600;
    _global.stageHeight = 400;
    
    // Create and configure the XML instance which is used to load the list of gallery images on the fly.
    var gallery_xml:XML = new XML();
    gallery_xml.ignoreWhite = true;
    gallery_xml.onLoad = function(success:Boolean) {
    	try {
    		/* if you are able to successfully load and parse the gallery from a remote XML file, 
    		   parse out the image names and add them to an array. */
    		if (success) {
    			var images:Array = this.firstChild.childNodes;
    			var gallery_array:Array = new Array();
    			for (var i = 0; i<images.length; i++) {
    				gallery_array.push({src:images[i].firstChild.nodeValue});
    			}
    			/* call the displayGallery function which handles loading in each 
    			   of the gallery images and placing them on the Stage. */
    			displayGallery(gallery_array);
    		} else {
    			throw new Error("Unable to parse XML");
    		}
    	} catch (e_err:Error) {
    		trace(e_err.message);
    	} finally {
    		delete this;
    	}
    };
    
    // load the gallery.xml file from the current directory.
    gallery_xml.load("gallery_tween.xml");
    
    /* create a function which loops through the images in an array,
       and creates new movie clips on the Stage. */
    function displayGallery(gallery_array:Array) {
    	var galleryLength:Number = gallery_array.length;
    	// loop through each of the images in the gallery_array.
    	for (var i = 0; i<galleryLength; i++) {
    		/* create a movie clip instance which holds the image. We'll also set a variable, 
    		   thisMC, which is an alias to the movie clip instance. */
    		var thisMC:MovieClip = this.createEmptyMovieClip("image"+i+"_mc", i);
    		
    		/* load the current image source into the new movie clip instance, 
    		   using the MovieClipLoader class. */
    		mcLoader_mcl.loadClip(gallery_array[i].src, thisMC);
    		
    		// attach the preloader symbol from the Library onto the Stage.
    		preloaderMC = this.attachMovie("preloader_mc", "preloader"+i+"_mc", 5000+i);
    		
    		/* set the preloader's bar_mc's _xscale property to 0% 
    		   and set a default value in the progress bars text field. */
    		preloaderMC.bar_mc._xscale = 0;
    		preloaderMC.progress_txt.text = "0%";
    		
    		// set the _x and _y coordinates of the new movie clip.
    		thisMC._x = _global.thisX;
    		thisMC._y = _global.thisY;
    		
    		// set the position of the image preloader.
    		preloaderMC._x = _global.thisX;
    		preloaderMC._y = _global.thisY+20;
    		
    		// if you've displayed 5 columns of images, start a new row.
    		if ((i+1)%5 == 0) {
    			// reset the X and Y positions
    			_global.thisX = 20;
    			_global.thisY += 80;
    		} else {
    			_global.thisX += 80+20;
    		}
    	}
    }
    
    // define the MovieClipLoader instance and MovieClipLoader listener Object.
    var mcLoader_mcl:MovieClipLoader = new MovieClipLoader();
    var mclListener:Object = new Object();
    mclListener.onLoadStart = function() {
    };
    
    // while the content is preloading, modify the width of the progress bar.
    mclListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
    	var pctLoaded:Number = Math.round(loadedBytes/totalBytes*100);
    	// create a shortcut for the path to the preloader movie clip.
    	var preloaderMC = target_mc._parent["preloader"+target_mc.getDepth()+"_mc"];
    	preloaderMC.bar_mc._xscale = pctLoaded;
    	preloaderMC.progress_txt.text = pctLoaded+"%";
    };
    
    // when the onLoadInit event is thrown, you're free to position the instances 
    mclListener.onLoadInit = function(evt:MovieClip) {
    	evt._parent["preloader"+evt.getDepth()+"_mc"].removeMovieClip();
    	/* set local variables for the target movie clip's width and height,
    	   and the desired settings for the image stroke and border. */
    	var thisWidth:Number = evt._width;
    	var thisHeight:Number = evt._height;
    	var borderWidth:Number = 2;
    	var marginWidth:Number = 8;
    	evt.scale = 20;
    	// draw a white rectangle with a black stroke around the images.
    	evt.lineStyle(borderWidth, 0x000000, 100);
    	evt.beginFill(0xFFFFFF, 100);
    	evt.moveTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
    	evt.lineTo(thisWidth+borderWidth+marginWidth, -borderWidth-marginWidth);
    	evt.lineTo(thisWidth+borderWidth+marginWidth, thisHeight+borderWidth+marginWidth);
    	evt.lineTo(-borderWidth-marginWidth, thisHeight+borderWidth+marginWidth);
    	evt.lineTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
    	evt.endFill();
    	
    	/* scale the target movie clip so it appears as a thumbnail. 
    	   This allows users to quickly view a full image without downloading it every time, 
    	   but unfortunaltey also causes a large initial download. */
    	evt._xscale = evt.scale;
    	evt._yscale = evt.scale;
    	// rotate the current image (and borders) anywyhere from -5 degrees to +5 degrees.
    	evt._rotation = Math.round(Math.random()*-10)+5;
    	/* when the target_mc movie clip instance is pressed, begin to drag the current movie clip 
    	   and set some temporary variables so once you are finished rescaling and positioning 
    	   the full image, you can return the instance to its original position. */
    	evt.onPress = function() {
    		if(ingrand == false) {
    		// start dragging the current clip.
    		
    		/* set the _xscale and _yscale properties back to 100% so the image appears full sized. 
    		   You're also storing the original X and Y coordinates so you can return the image where you found it. */
    		this._xscale = 100;
    		this._yscale = 100;
    		this.origX = this._x;
    		this.origY = this._y;
    		// find the depth of the current movie clip, and store it within the movie clip.
    		this.origDepth = this.getDepth();
    		/* :TRICKY: swap the depth of the current movie clip, with the next highest movie clip of the _parent. 
    		   Effectively this makes the current movie clip the top of the "stack". */
    		this.swapDepths(this._parent.getNextHighestDepth());
    		// try and center the current movie clip on the Stage.
    		this._x = (_global.stageWidth-evt._width+30)/2;
    		this._y = (_global.stageHeight-evt._height+30)/2;
    		// apply a transition to the movie clip which makes the movie clip flicker for a split second.
    		mx.transitions.TransitionManager.start(this, {type:mx.transitions.Photo, direction:0, duration:1, easing:mx.transitions.easing.Strong.easeOut, param1:empty, param2:empty});
    		ingrand = true;
    		} else {
    		
    		this._xscale = this.scale;
    		this._yscale = this.scale;
    		this._x = this.origX;
    		this._y = this.origY;
    		ingrand = false;
    		}
    	};
    	/* when the movie clip instance is released, stop dragging the movie clip. 
    	   Reset the _xscale and _yscale properties as well as the _x and _y coordinates. */
    
    	// if the mouse cursor was released outside of the movie clip, call the onRelease handler.
    	evt.onReleaseOutside = function() {
    		this._xscale = this.scale;
    		this._yscale = this.scale;
    		this._x = this.origX;
    		this._y = this.origY;
    		ingrand = false;
    	};
    };
    mcLoader_mcl.addListener(mclListener);

  3. #3
    Grazie Stefano!
    Funziona abbastanza bene...nel senso che si aprono tutte le foto tranne quelle della prima colonna...
    Ciao, Carmen
    Carmen

  4. #4
    Ops... non ci avevo fatto caso...

    cmq togli questo dal codice e si risolve:

    codice:
    	evt.onReleaseOutside = function() {
    		this._xscale = this.scale;
    		this._yscale = this.scale;
    		this._x = this.origX;
    		this._y = this.origY;
    		ingrand = false;
    	};
    lo trovi alla fine del codice...

    Ciao Carmen!

  5. #5
    Grazie Stefano!
    Ora però ho trovato un altro errore...
    Clicca su una foto e mentre è ingrandita clicca su un'altra: quando chiudi la prima, non torna nella sua posizione originale ma si posiziona in alto. Se lo fai con più foto, si sovrappongono una sull'altra....
    Sigh!

    Ci aiuti anche stavolta?
    Grazie, Carmen e Aurora.
    Carmen

  6. #6
    VVoVe:

    OK!

    Ho fatto un pò un pastrocchio di condizionali cmq...

    praticamente ecco il funzionamento della modifica:
    al click imposto nella foto la variabile ing a true
    all'enterframe controlla se c'è una foto ingrandita, se si le foto si rendono non cliccabili (enabled=false), tranne quella con la variabile ing al suo interno impostata a true... in modo da permettere il click per chiuderla...
    al click che la chiude la variabile ing al suo interno viene resa false, in modo da non influire in futuro...

    eccoti il codice completo:

    codice:
    // Import the transitions classes so you can add a fading effect when the images load to the Stage.
    import mx.transitions.*;
    
    ingrand = false;
    // Set the starting X and Y positions for the gallery images.
    _global.thisX = 30;
    _global.thisY = 70;
    
    /* Set static values for the Stage's width and height. 
       Using Stage.width and Stage.height within the code results in 
       strangely positioned full images when testing in the Flash environment 
       (but the problem doesn't exist when published to a SWF file). */
    _global.stageWidth = 600;
    _global.stageHeight = 400;
    
    // Create and configure the XML instance which is used to load the list of gallery images on the fly.
    var gallery_xml:XML = new XML();
    gallery_xml.ignoreWhite = true;
    gallery_xml.onLoad = function(success:Boolean) {
    	try {
    		/* if you are able to successfully load and parse the gallery from a remote XML file, 
    		   parse out the image names and add them to an array. */
    		if (success) {
    			var images:Array = this.firstChild.childNodes;
    			var gallery_array:Array = new Array();
    			for (var i = 0; i<images.length; i++) {
    				gallery_array.push({src:images[i].firstChild.nodeValue});
    			}
    			/* call the displayGallery function which handles loading in each 
    			   of the gallery images and placing them on the Stage. */
    			displayGallery(gallery_array);
    		} else {
    			throw new Error("Unable to parse XML");
    		}
    	} catch (e_err:Error) {
    		trace(e_err.message);
    	} finally {
    		delete this;
    	}
    };
    
    // load the gallery.xml file from the current directory.
    gallery_xml.load("gallery_tween.xml");
    
    /* create a function which loops through the images in an array,
       and creates new movie clips on the Stage. */
    function displayGallery(gallery_array:Array) {
    	var galleryLength:Number = gallery_array.length;
    	// loop through each of the images in the gallery_array.
    	for (var i = 0; i<galleryLength; i++) {
    		/* create a movie clip instance which holds the image. We'll also set a variable, 
    		   thisMC, which is an alias to the movie clip instance. */
    		var thisMC:MovieClip = this.createEmptyMovieClip("image"+i+"_mc", i);
    		
    		/* load the current image source into the new movie clip instance, 
    		   using the MovieClipLoader class. */
    		mcLoader_mcl.loadClip(gallery_array[i].src, thisMC);
    		
    		// attach the preloader symbol from the Library onto the Stage.
    		preloaderMC = this.attachMovie("preloader_mc", "preloader"+i+"_mc", 5000+i);
    		
    		/* set the preloader's bar_mc's _xscale property to 0% 
    		   and set a default value in the progress bars text field. */
    		preloaderMC.bar_mc._xscale = 0;
    		preloaderMC.progress_txt.text = "0%";
    		
    		// set the _x and _y coordinates of the new movie clip.
    		thisMC._x = _global.thisX;
    		thisMC._y = _global.thisY;
    		
    		// set the position of the image preloader.
    		preloaderMC._x = _global.thisX;
    		preloaderMC._y = _global.thisY+20;
    		
    		// if you've displayed 5 columns of images, start a new row.
    		if ((i+1)%5 == 0) {
    			// reset the X and Y positions
    			_global.thisX = 20;
    			_global.thisY += 80;
    		} else {
    			_global.thisX += 80+20;
    		}
    	}
    }
    
    // define the MovieClipLoader instance and MovieClipLoader listener Object.
    var mcLoader_mcl:MovieClipLoader = new MovieClipLoader();
    var mclListener:Object = new Object();
    mclListener.onLoadStart = function() {
    };
    
    // while the content is preloading, modify the width of the progress bar.
    mclListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
    	var pctLoaded:Number = Math.round(loadedBytes/totalBytes*100);
    	// create a shortcut for the path to the preloader movie clip.
    	var preloaderMC = target_mc._parent["preloader"+target_mc.getDepth()+"_mc"];
    	preloaderMC.bar_mc._xscale = pctLoaded;
    	preloaderMC.progress_txt.text = pctLoaded+"%";
    };
    
    // when the onLoadInit event is thrown, you're free to position the instances 
    mclListener.onLoadInit = function(evt:MovieClip) {
    	evt._parent["preloader"+evt.getDepth()+"_mc"].removeMovieClip();
    	/* set local variables for the target movie clip's width and height,
    	   and the desired settings for the image stroke and border. */
    	var thisWidth:Number = evt._width;
    	var thisHeight:Number = evt._height;
    	var borderWidth:Number = 2;
    	var marginWidth:Number = 8;
    	evt.scale = 20;
    	// draw a white rectangle with a black stroke around the images.
    	evt.lineStyle(borderWidth, 0x000000, 100);
    	evt.beginFill(0xFFFFFF, 100);
    	evt.moveTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
    	evt.lineTo(thisWidth+borderWidth+marginWidth, -borderWidth-marginWidth);
    	evt.lineTo(thisWidth+borderWidth+marginWidth, thisHeight+borderWidth+marginWidth);
    	evt.lineTo(-borderWidth-marginWidth, thisHeight+borderWidth+marginWidth);
    	evt.lineTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
    	evt.endFill();
    	
    	/* scale the target movie clip so it appears as a thumbnail. 
    	   This allows users to quickly view a full image without downloading it every time, 
    	   but unfortunaltey also causes a large initial download. */
    	evt._xscale = evt.scale;
    	evt._yscale = evt.scale;
    	// rotate the current image (and borders) anywyhere from -5 degrees to +5 degrees.
    	evt._rotation = Math.round(Math.random()*-10)+5;
    	/* when the target_mc movie clip instance is pressed, begin to drag the current movie clip 
    	   and set some temporary variables so once you are finished rescaling and positioning 
    	   the full image, you can return the instance to its original position. */
    	evt.onPress = function() {
    		if(ingrand == false) {
    		// start dragging the current clip.
    		
    		/* set the _xscale and _yscale properties back to 100% so the image appears full sized. 
    		   You're also storing the original X and Y coordinates so you can return the image where you found it. */
    		this._xscale = 100;
    		this._yscale = 100;
    		this.origX = this._x;
    		this.origY = this._y;
    		// find the depth of the current movie clip, and store it within the movie clip.
    		this.origDepth = this.getDepth();
    		/* :TRICKY: swap the depth of the current movie clip, with the next highest movie clip of the _parent. 
    		   Effectively this makes the current movie clip the top of the "stack". */
    		this.swapDepths(this._parent.getNextHighestDepth());
    		// try and center the current movie clip on the Stage.
    		this._x = (_global.stageWidth-evt._width+30)/2;
    		this._y = (_global.stageHeight-evt._height+30)/2;
    		// apply a transition to the movie clip which makes the movie clip flicker for a split second.
    		mx.transitions.TransitionManager.start(this, {type:mx.transitions.Photo, direction:0, duration:1, easing:mx.transitions.easing.Strong.easeOut, param1:empty, param2:empty});
    		this.ing = true;
    		ingrand = true;
    		} else {
    		
    		this._xscale = this.scale;
    		this._yscale = this.scale;
    		this._x = this.origX;
    		this._y = this.origY;
    		this.ing = false;
    		ingrand = false;
    		}
    	};
    	evt.onEnterFrame = function() {
    		if(ingrand) {
    			if(!this.ing) {
    				this.enabled = false;
    			} else {
    				this.enabled = true;
    			}
    		} else {
    			this.enabled = true;
    		}
    	}
    	/* when the movie clip instance is released, stop dragging the movie clip. 
    	   Reset the _xscale and _yscale properties as well as the _x and _y coordinates. */
    
    	// if the mouse cursor was released outside of the movie clip, call the onRelease handler.
    
    };
    mcLoader_mcl.addListener(mclListener);


  7. #7
    Stefano, sei grande!!!
    Ti ringrazio moltissimo e appena ho un minuto (credo che ce ne vorrà più di uno...) studierò le tue modifiche.
    Anche Aurora sarà contentissima perchè è da parecchio tempo che cerchiamo di risolvere il problema.
    Grazie, Carmen
    Carmen

  8. #8
    Originariamente inviato da CarmenFerrara
    Stefano, sei grande!!!
    Ti ringrazio moltissimo e appena ho un minuto (credo che ce ne vorrà più di uno...) studierò le tue modifiche.
    Anche Aurora sarà contentissima perchè è da parecchio tempo che cerchiamo di risolvere il problema.
    Grazie, Carmen
    Felice di Esservi stato d'aiuto!

    Se avete altro da chiedere....sapete dove trovarmi!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.