Login Register
venerdì 10 febbraio 2012
 
Forums
I Forum di WPF Tips & Tricks
Una semplice applicazione WPF per i Mondiali sudafricani
Last Post 12 lug 2010 03:17 by Alessandro Del Sole [MVP]. 6 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
Topic is locked
Author Messages
Gianni Giaccaglini
Advanced Member
Advanced Member
Posts:106
Avatar

--
21 giu 2010 10:57  
Questa mia creatura sviluppata in occasione dei Mondiali sudafricani sfrutta la griglia (Grid) WPF con caselle di testo disposte secondo lo schema a piramide rovescia, a partire dai QUARTI di finale. Secondo un algoritmo da me più volte sfruttato con Excel + VBA il primo pulsante avvia una simulazione basata su numeri randommizzati attorni ai VALORI stimati. I nomi delle squadre sono generici, i valori sono livellati sul 6 ma gli uni e gli altri si possono modificare prima del clic. Un'imperfezione (che un bel dì sanerò, ma non so quando...) impedisce di tener conto di modifiche ai valori successive alla prima, comunque cliccando sul secondo pulsante ci si mette una pezza.
Scaricare da:
LINK RIMOSSO DA AMMINISTRATORE

Appena posso scriverò un articolo in merito...
GIANNI GIACCAGLINI
giannigiac@tin.it
Alessandro Del Sole [MVP]
Team
Team
Posts:121
Avatar

--
21 giu 2010 12:20  
Gianni, ti prego di utilizzare il forum per porre quesiti e non per far scaricare applicazioni peraltro in formato solamente eseguibile e senza codice sorgente a corredo. I file eseguibili possono essere potenzialmente dannosi anche se il tuo è genuino, è una forma di correttezza verso gli altri utenti. Ti prego altresì di postare link a file zip contenente codice sorgente solo in caso questo sia necessario per risolvere un problema emerso in un quesito postato sui forum.

Se vuoi che tuo materiale venga pubblicato su WPF T&T, puoi scrivermi in privato come già sai e dopo la revisione provvederemo alla pubblicazione nelle apposite aree.

Il team di WPF T&T non è in alcun modo responsabile per il contenuto del file zip scaricabile dal link postato dall'utente.

Grazie,
Alessandro Del Sole (WPF T&T Team)
Microsoft MVP - Visual Basic: Development
http://community.visual-basic.it/Alessandro
http://community.visual-basic.it/AlessandroEnglish
Gianni Giaccaglini
Advanced Member
Advanced Member
Posts:106
Avatar

--
24 giu 2010 09:57  
Touché! E mi scuso, ma la tentazione deriva dal fatto che il teme MONDIALI era molto attuale.
Appena posso ti mando questo articolo. Però sono sempre in trepida attesa per il precedente...
Gianni Giaccaglini
Advanced Member
Advanced Member
Posts:106
Avatar

--
11 lug 2010 09:56  
Un giorno forse Wpf Italia pubblicherà un ARTICOLO relativo il mio semplice ma significativo esempio.
Significativo perché sfrutta il contenitore Grid impostandone le celle in modo da contenere lo schema
piramidale dei campionati mondiali a partire dalle OTTO finaliste, definite con altrettante TextBox.

A beneficio dei più esperti e... pazienti riporto i relativi moduli Window1.xaml e il corrispondente
Windows1.xaml.vb.

WINDOW1.XAML

Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Finali Campionato mondiale" Height="520" Width="500">
<DockPanel LastChildFill="True" Background="LightGreen">
<Grid DockPanel.Dock="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="95.743*" />
<ColumnDefinition Width="95.743*" />
<ColumnDefinition Width="95.743*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<Button Name="btnAvvio" Grid.Column="1" Margin="10" Height="30">
Simulazione
</Button>
<Button Name="btnAggValori" Grid.Column="2" Margin="10" Height="30">
Aggiorna valori
</Button>
</Grid>
<Grid Width="420.084" Height="400">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="95.743*" />
<ColumnDefinition Width="49.995*" />
<ColumnDefinition Width="78.179*" />
<ColumnDefinition Width="2.858*" />
<ColumnDefinition Width="95.743*" />
<ColumnDefinition Width="2.858*" />
<ColumnDefinition Width="95.743*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="30*" />
<RowDefinition Height="62*" />
<RowDefinition Height="145.5*" />
</Grid.RowDefinitions>
<Label HorizontalAlignment="Center" Content ="Valori:" Foreground ="Yellow" Background="Black" Margin="0" Grid.Column="1" VerticalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Bottom" FontSize="14" />
<TextBox Name="Squad1" Grid.Row="1" Grid.Column="0" Background="LightBlue">
Prima squadra
</TextBox>
<Label Grid.Row="1" Grid.Column="1" Foreground ="DarkRed" FontWeight="Bold" Grid.ColumnSpan="3" Margin="32.657,0,2.648,0">SEMIFINALI</Label>
<Label Grid.Row="3" Grid.Column="4" Foreground ="DarkRed" FontWeight="Bold" Grid.ColumnSpan="2" Margin="2.848,0,0,0">FINALI</Label>
<Label Grid.Row="6" Grid.Column="5" Foreground ="DarkRed" FontWeight="Bold" Grid.ColumnSpan="2" Margin="0,25.5,2.848,2.003" Grid.RowSpan="2">CAMPIONE</Label>
<TextBox Name="Va11" Text="6" FontSize="9" Grid.Row="1" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Squad2" Grid.Row="3" Grid.Column="0" Background="LightBlue">
Seconda squadra
</TextBox>
<TextBox Name="Va12" Text="6" FontSize="9" Grid.Row="3" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Squad3" Grid.Row="5" Grid.Column="0" Background="LightBlue">
Terza squadra
</TextBox>
<TextBox Name="Va13" Text="6" FontSize="9" Grid.Row="5" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Squad4" Grid.Row="7" Grid.Column="0" Background="LightBlue">
Quarta squadra
</TextBox>
<TextBox Name="Va14" Text="6" FontSize="9" Grid.Row="7" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Squad5" Grid.Row="9" Grid.Column="0" Background="LightBlue">
Quinta squadra
</TextBox>
<TextBox Name="Va15" Text="6" FontSize="9" Grid.Row="9" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Squad6" Grid.Row="11" Grid.Column="0" Background="LightBlue">
Sesta squadra
</TextBox>
<TextBox Name="Val6" Text="6" FontSize="9" Grid.Row="11" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Squad7" Grid.Row="13" Grid.Column="0" Background="LightBlue">
Settima squadra
</TextBox>
<TextBox Name="Va17" Text="6" FontSize="9" Grid.Row="13" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Squad8" Grid.Row="15" Grid.Column="0" Background="LightBlue">
Ottava squadra
</TextBox>
<TextBox Name="Va18" Text="6" FontSize="9" Grid.Row="15" BorderThickness="4" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,0,17.22,0" Width="32.756" />
<TextBox Name="Semfin1" Grid.Row="2" Grid.Column="1" Background="Aquamarine" Grid.ColumnSpan="3" Margin="32.657,0,2.648,0">
Semifinalista 1
</TextBox>
<TextBox Name="Semfin2" Grid.Row="6" Grid.Column="1" Background="Aquamarine" Grid.ColumnSpan="3" Margin="32.657,0,2.648,0">
Semifinalista 2
</TextBox>
<TextBox Name="Semfin3" Grid.Row="10" Grid.Column="1" Background="Aquamarine" Grid.ColumnSpan="3" Margin="32.657,0,2.648,0">
Semifinalista 3
</TextBox>
<TextBox Name="Semfin4" Grid.Row="14" Grid.Column="1" Background="Aquamarine" Grid.ColumnSpan="3" Margin="32.657,0,2.648,0">
Semifinalista 4
</TextBox>
<TextBox Name="Fin1" Grid.Row="4" Grid.Column="4" Background="LightBlue">
Finalista 1
</TextBox>
<TextBox Name="Fin2" Grid.Row="12" Grid.Column="4" Background="LightBlue">
Finalista 2
</TextBox>
<TextBox Name="Campione" Grid.Row="8" Grid.Column="6" Foreground="White" Background="DarkBlue" >
Campione
</TextBox>
</Grid>
</DockPanel>
</Window>

WINDOW1.XAML.VB

Class Window1
Dim SquadreValori As New Dictionary(Of String, Double)
Dim SquadValCaricate = False
Sub CaricaSquadreValori()
SquadreValori.Add(Squad1.Text, CType(Va11.Text, Double))
SquadreValori.Add(Squad2.Text, CType(Va12.Text, Double))
SquadreValori.Add(Squad3.Text, CType(Va13.Text, Double))
SquadreValori.Add(Squad4.Text, CType(Va14.Text, Double))
SquadreValori.Add(Squad5.Text, CType(Va15.Text, Double))
SquadreValori.Add(Squad6.Text, CType(Val6.Text, Double))
SquadreValori.Add(Squad7.Text, CType(Va17.Text, Double))
SquadreValori.Add(Squad8.Text, CType(Va18.Text, Double))
SquadValCaricate = True
End Sub
Function Vincitore(ByVal Rivale1 As String, ByVal Rivale2 As String) As String
If SquadreValori(Rivale1) * (1 + 1.5 * Rnd()) > SquadreValori(Rivale2) * (1 + 1.5 * Rnd()) Then
Return Rivale1
Else
Return Rivale2
End If
End Function
Sub AggiornaValori()
SquadValCaricate = False
SquadreValori.Clear()
CaricaSquadreValori()
End Sub
Private Sub btnAvvio_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnAvvio.Click
On Error GoTo RipristinaDati
If Not SquadValCaricate Then
CaricaSquadreValori()
End If
' Semifinali
Randomize()
Semfin1.Text = Vincitore(Squad1.Text, Squad2.Text)
Semfin2.Text = Vincitore(Squad3.Text, Squad4.Text)
Semfin3.Text = Vincitore(Squad5.Text, Squad6.Text)
Semfin4.Text = Vincitore(Squad7.Text, Squad8.Text)
' MessageBox.Show("Passiamo alla Semifinali...")
' Finali
Fin1.Text = Vincitore(Semfin1.Text, Semfin2.Text)
Fin2.Text = Vincitore(Semfin3.Text, Semfin4.Text)
' MessageBox.Show("Passiamo alla Finali..")
Campione.Text = Vincitore(Fin1.Text, Fin2.Text)
Exit Sub
RipristinaDati:
AggiornaValori()
End Sub

Private Sub btnAggValori_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnAggValori.Click
AggiornaValori()
End Sub
End Class

In due parole, i due Button servono rispettivamente per avviare la Simulazione e aggiornare i VOTI assegnati
alle squadre (inizialmente = 6, default), che a loro volta vanno indicate in luogo delle generiche di default.
L'algoritmo base sta nella funzione Vincitore che aggiunge un tocco (pseudo)casuale alle valutazioni. Altro non dico.
Alessandro Del Sole [MVP]
Team
Team
Posts:121
Avatar

--
12 lug 2010 08:17  
Caro Gianni,
purtroppo la revisione del tuo articolo sta prendendo più tempo del previsto, a causa di una serie di imprecisioni che mi trovo a dover correggere, in ogni caso tranquillo che quando finirò di revisionarlo e sarà pubblicabile senza errori, sarà on-line.

Nel frattempo, ti invito per la terza e ultima volta a non usare il forum per pubblicare questo genere di contributi. So che hai un blog, ti prego di utilizzare quello per postare codice o considerazioni, il forum si utilizza per porre domande tecniche (e fornire risposte, ovvio). Anche perché hai ripreso e continuato un thread che avevo già considerato chiuso. D'ora in avanti non dico più nulla ma modero, ok? Grazie
Gianni Giaccaglini
Advanced Member
Advanced Member
Posts:106
Avatar

--
12 lug 2010 10:08  
Mi scuso per l'ennesima volta, tuttavia continuo a non capire. Ho esperienza di altri forum, nei quali la possibilità di indicare suggerimenti coram populo è altamente incoraggiata. D'altra parte per stare alla forma basterebbe porre retoricamente un quesito (conoscendo già la risposta) e postare subito dopo la risposta stessa a titolo di auto-reply. In tutta onestà sono certo che con il mio iniziale contributo sui mondiali ha stimolato molte curiosità. Che mi sono permesso di "immaginare" aderendo di conseguenza. Chi diavolo si può offendere per il mio zelo? Qualcuno può compatirmi tacciandomi di "sete di protagonismo". Pazienza ma è meglio contibuire che tacere... O no?
Alessandro Del Sole [MVP]
Team
Team
Posts:121
Avatar

--
12 lug 2010 03:17  
Non metto in dubbio che in altri forum si possa fare quello che si vuole e non mi intrometto sul modo di gestire altri siti, non mi riguarda. Qui i forum si utilizzano per le domande e le risposte tecniche, punto. Sicuramente è meglio contribuire che tacere, senza ombra di dubbio. Ma ci sono modi più appropriati, come ad esempio i blog. Se ne vuoi uno da noi dove puoi scrivere quello che vuoi, non hai che da chiederlo al Team e ti verrà aperto, con l'unico impegno a non andare off-topic da WPF & Silverlight. Questo è ciò che richiediamo.

Per il resto, caro Gianni, nessuno ti taccia di sete di protagonismo, sia chiaro; ma poiché io e te abbiamo avuto alcune conversazioni in privato, noto piuttosto una vena di sarcasmo. Come sanno tutti, la community in quanto tale è fatta di persone che contribuiscono o permettono ad altri di contribuire dedicando il proprio tempo libero, quindi tutto ciò che si fa, lo si fa quando possibile, incluse le revisioni degli articoli e del materiale e io ti avevo già privatamente avvisato che ci sarebbe voluto un po' di tempo.

Se hai pazienza di aspettare, mi fa piacere; ma il sarcasmo non serve perché gli utenti che passano di qua non sanno che tu hai inviato una grande mole di materiale che va revisionata, e tieni conto che tutti i giorni ognuno di noi riceve decine di mail da tante persone quindi abbiamo necessità di tempo, purtroppo ci sono tante correzioni che devo fare nel tuo articolo e questo richiede tempo. Vorrai scusarmi ma ci tengo acché su questo portale venga pubblicato materiale di qualità e codice funzionante. E' questa una delle nostre responsabilità. Se invece non hai pazienza di aspettare, se non vuoi scrivere sul tuo blog personale, come detto ne richiedi uno da noi e potrai pubblicare tutto ciò che vuoi su WPF essendo l'unico responsabile dei contenuti.

Da ultimo, permettimi di dire che sono abbastanza sicuro che non in tutti i siti di cui hai esperienza troverai gestori che sono comunque pronti ad ascoltare commenti/lamentele/feedback e altro, quindi ti chiedo almeno di apprezzare questo. Anche perché non puoi pretendere di fare critiche ma di non accettarne, di essere ascoltato ma di non ascoltare. Non so quante volte ti ho chiesto di non pubblicare simil-articoli nei forum o di pubblicare recensioni di libri nei forum, ma non sono stato ascoltato. Poiché ho l'ingrato compito di moderatore, oltre che di revisore/gestore del portale con gli altri ragazzi del team, ma soprattutto perché rimango inascoltato nelle mie richieste ferme ma cortesi, mi regolerò di conseguenza.

Ora chiudo veramente e anche questo thread si consideri chiuso. Se hai delle considerazioni da fare, ti prego di farle in privato - la mia mail la conosci. Mi spiace fare questo tipo di disquisizioni, ma se ti fai un giro sul portale ti accorgerai che non ce ne sono di simili.

Grazie.
Topic is locked

Active Forums 4.2
  
hd porn
 
© 2009-2011 WPF Tips&Tricks Team - Visual Basic Tips&Tricks Network
 
porno izleporno izle