Suivez et participez au développement du nouvel OpenCellar : PLOC.co
Home Page
 
Français  English  
Open Cellar Home Edition - 1.2 - Windows 98, Me, 2000, XP and Vista. The free Windows wine cellar management software. Open Cellar Mobile Edition - Beta 2 (French version) - Pocket PC. The free Pocket PC wine cellar management software. Open Cellar Cross Platform - Beta 1 (French version) - Mac OSX and Linux. The free MacOS/Linux wine cellar management software. My Open Cellar Open Cellar Forums Place des vins
Search: Welcome (connect - create an account )
Nuage de tags
Emplacement avec disposition des cases selon schéma
09/07/2006
Reply
Emplacement avec disposition des cases selon schéma
VANB
17 posts
// Un emplacement de taille supérieure aux limites d'OC peut être
// difficile à créer si la disposition est compliquée
// Ici, il suffit de le décrire en texte dans une table
// L'exemple utilisé ici est une armoire à vins


// Nom de l'emplacement a administrer (il sera créé s'il n'existe pas)
string rackName = "Mon emplacement";

// Schéma de l'emplacement
// 0 : créer la case
// . ou espace : rien
string[] schema = {
"0.0.0.0.0.0...0.0. .0.0.",
".0.0.0.0.0...0.0.0.0.0.0",
"0.0.0.0.0.0...0.0.0.0.0.",
".0.0.0.0.0...0.0.0.0.0.0",
"",
".0.0.0.0.0...0.0.0.0.0.0",
"0.0.0.0.0.0...0.0.0.0.0.",
".0.0.0.0.0...0.0.0.0.0.0",
"",
".0.0.0.0.0...0.0.0.0.0.0",
"0.0.0.0.0.0...0.0.0.0.0.",
".0.0.0.0.0...0.0.0.0.0.0",
"",
".0.0.0.0.0...0.0.0.0.0.0",
"0.0.0.0.0.0...0.0.0.0.0.",
".0.0.0.0.0...0.0.0.0.0.0",
"",
".0.0.0.0.0...0.0.0.0.0.0",
"0.0.0.0.0.0...0.0.0.0.0.",
".0.0.0.0.0...0.0.0.0.0.0",
"",
". . .0.0.0.0.0.0.0.0",
". . . 0.0.0.0.0.0.0",
". . .0.0.0.0.0.0.0.0"
};

OpenCellar.Framework.Core.Rack rack = null;

// Recupere la liste des emplacements
OpenCellar.Framework.Core.ObjectCollection racksCol = App.ActiveCellar.GetCollection((ushort)OpenCellar.Framework.Core.ObjectType.Rack);

// Alimente la source de données
for (int i = 0; i < racksCol.Count; i++)
{
if (((OpenCellar.Framework.Core.Rack)racksCol[i]).Name.Trim() == rackName)
{
rack = (OpenCellar.Framework.Core.Rack)racksCol[i];
break;
}
}

OpenCellar.Framework.Core.RackBuilder rb;

if(rack == null)
{
// Création de l'emplacement s'il n'existe pas
rb = new OpenCellar.Framework.Core.RackBuilder(App.ActiveCellar);
rb.SetRackName(rackName);
}
else
{
// Création de l'object constructeur d'emplacement
rb = new OpenCellar.Framework.Core.RackBuilder(rack);
}

byte maxRow = (byte) schema.Length; // Nombre de lignes du schéma
byte maxCol = 0;

byte rows = maxRow; // Nombre de lignes
byte cols = 0; // Nombre de colonnes

byte row;
byte col;

// Recherche des limites
for (row = 0; row < rows; row ++)
{
col = (byte) schema[row].Length;
if (col > cols)
{
cols = col;
}
}

if (rb == null || rows == 0 || cols == 0)
{
System.Windows.Forms.MessageBox.Show("Emplacement non créé");
}
else
{
rb.SetColumnsSize((byte) cols);
rb.SetRowsSize((byte) rows);
rb.SetSpace((byte) rows, (byte) cols);

rb.SetNamingType(OpenCellar.Framework.Core.RackNamingType.LetterOnXNumericOnY);

rb.Save();

//Supprime les elements d'emplacements
for(row = 0; row < rows; row++)
{
for(col = 0; col < cols; col++)
{
rb.RemoveRackItem(row, col);
}
}

string srow;
char c;
int nb = 0;

for (row = 0; row < maxRow; row ++)
{
srow = schema[row];
maxCol = (byte) srow.Length;
for (col = 0; col < maxCol; col ++)
{
c = srow[col];
if (c == '0')
{
OpenCellar.Framework.Core.RackItem ri = rb.CreateRackItem( row, col);
ri.Save();
ri = null;
nb ++;
}
}
}

//MessageBox.Show(nb.ToString());

rb.NotifyChange();
}
 

09/07/2006
Reply
Re : Emplacement avec disposition des cases selon schéma
VANB
17 posts
L'emplacement généré par le script provoque une erreur lors de l'édition du rapport des emplacements :
09/07/2006 10:36:04 -> Erreur :: Pile
09/07/2006 10:36:04 -> OpenCellar.Application.OpenCellarException: Erreur lors de la validation du fichier de destination.
at OpenCellar.Application.BaseReport.Create(IList datasource, String destFileName)
at OpenCellar.Application.RKReportCenter.ExecuteAllRacks(Object sender, EventArgs e)
 

09/07/2006
Reply
Re : Emplacement avec disposition des cases selon schéma
AdministrateurView your blog
3099 posts
Excellent le script 10/10 :-)

Pour ce qui est de l'erreur, avant chaque génération OC tente la suppression du fichier (dans notre cas racksbook.pdf) ce dernier devait etre ouvert.

Cordialement,
Matthieu
 

© 2006-2014 Matthieu DUCROCQ  Open Cellar official blog - All rights reserved - Last update: january 2014 | twitter