giovedì 29 gennaio 2009

ContextMenu in WPF

Per aggiungere un ContextMenu ad un bottone basta inserire il seguente Codice.

Per Gestire l'evento click degli elementi basta attivarlo su ogni MenuItem.

Button.ContextMenu>
ContextMenu Padding="0" Margin="0" Name="ContextMenu1">
MenuItem Name="MenuItem1">
MenuItem.Header>
TextBlock Text="Option 1" VerticalAlignment="Center">
/TextBlock>
/MenuItem.Header>
MenuItem.Icon>
Border Background="LightGray" Padding="2">
Image Source="Resources/MSG_Error.png" Width="{StaticResource ImageSize}" Height="{StaticResource ImageSize}">
/Image>
/Border>
/MenuItem.Icon>
/MenuItem>/ContextMenu>
/Button.ContextMenu>

mercoledì 28 gennaio 2009

Posizione di una colonna in una griglia DxGrid

Per calcolare la posizione di una colonna nella griglia DxGrid:

Dim visibleIndex As Integer = DevExpress.Wpf.Grid.GridColumn.GetVisibleIndex(column)

martedì 27 gennaio 2009

DialogResult in WPF

In WPF la logica del DialogResult è leggermente diversa da quella delle WindowsForm, infatti i valori che può assumere una DialogResult sono True o False (False è il predefinito).

In una finestra di dialogo è in genere disponibile un pulsante speciale per l'annullamento, che corrisponde al pulsante la cui proprietà IsCancel è impostata su true. Un pulsante configurato in questo modo consente di chiudere automaticamente una finestra quando un utente lo seleziona o preme ESC. In entrambi i casi, DialogResult rimane false.
In una finestra di dialogo è in genere disponibile anche un pulsante speciale per l'accettazione, che corrisponde al pulsante la cui proprietà IsDefault è impostata su true. Un pulsante configurato in questo modo genererà l'evento Click quando l'utente lo seleziona o preme INVIO. Tuttavia, la finestra di dialogo non verrà chiusa automaticamente e DialogResult non verrà impostata su true. È necessario scrivere manualmente questo codice, in genere dal gestore dell'evento Click per il pulsante predefinito.
Dopo la chiusura di una finestra di dialogo, è possibile ottenere il risultato dal valore restituito dal metodo ShowDialog o controllando la proprietà DialogResult.
DialogResult può essere impostata solo quando un oggetto Window viene aperto chiamando il metodo ShowDialog.
Esempio Apertura ShowDialog:

MyDialog dialog = new MyDialog();
dialog.ShowDialog();
if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
MessageBox.Show("User clicked OK");
else
MessageBox.Show("User clicked Cancel");


nella Window ShowDialog sono inseriti 2 bottoni (Ok, e Cancel) così gestiti:

Button Width="100" Content="OK" IsDefault="True" Click="ButtonOkClick"/
Button Width="100" Content="Cancel" IsCancel="True"/


e l'evento del bottone OK va ad impostare il valore della ShowDialog:

DialogResult = true;

Aggiungere un'immagine delle risorse in WPF

Per aggiungere un'immagine contenuta nelle risorse del progetto in WPF basta utilizzare il seguente codice (facendo attenzione ad impostare la proprietà dell'immagine Build Action a Resources)


pctIcon.Source = New BitmapImage(New Uri("Resources/MSG_OK.png", UriKind.Relative))

Attenzione, se l'oggetto nel quel vogliamo inserire l'immagine è in una sottocartella rispetto alla root, per accedere alle risorse è necessario aggiungere una / prima dell'indirizzo dell'immagine.
es.

pctIcon.Source = New BitmapImage(New Uri("/Resources/MSG_OK.png", UriKind.Relative))

lunedì 26 gennaio 2009

Funzione VBScript che dato un indirizzo E-mail testa se è valido o meno.

If isValidEMail("IndirizzoE-Mail") Then
MsgBox("Indirizzo valido")
Else
MsgBox("Indirizzo non valido")
End If

function IsValidEmail(email)
isitvalid = true
dim names, name, i, c
names = Split(email, "@")
if UBound(names) <> 1 then
isitvalid = false
exit function
end if
for each name in names
if Len(name) <= 0 then
isitvalid = false
exit function
end if
for i = 1 to Len(name)
c = Lcase(Mid(name, i, 1))
if InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 and not IsNumeric(c) then
isitvalid = false
exit function
end if
next
if Left(name, 1) = "." or Right(name, 1) = "." then
isitvalid = false
exit function
end if
next
if InStr(names(1), ".") <= 0 then
isitvalid = false
exit function
end if
i = Len(names(1)) - InStrRev(names(1), ".")
if i <> 2 and i <> 3 then
isitvalid = false
exit function
end if
if InStr(email, "..") > 0 then
isitvalid=false
Exit Function
end If
IsValidEmail = isitvalid
End Function

venerdì 23 gennaio 2009

Inviare una e-mail tramite VBScript

Per inviare una e-mail tramite linguaggio VBScript utilizzare il seguente codice:

Dim SendMail Set SendMail = CreateObject("CDO.Message")
SendMail.From = "Indirizzo del mittente"
SendMail.To = "Indirizzo del Destinatario"
SendMail.Subject = "e-mail di prova inviata con un VBScript"
SendMail.HTMLBody = "Inserire qui il testo del messaggio con i Tag HTML"
SendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
SendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "indirizzo smtp del server di posta"
SendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "25" SendMail.Configuration.Fields.Update
SendMail.Send

giovedì 22 gennaio 2009

Expander WPF

Per far funzionare corretamente un Expander WPF è sufficiente metterlo all'interno di una griglia, in una riga la cui height è impostata ad "Auto":

Grid>
Grid.RowDefinitions>
RowDefinition Height="Auto"/>
RowDefinition />
/Grid.RowDefinitions>
Expander Header="Exp di prova">
StackPanel>
TextBox />
Button Content="Ciao" />
/StackPanel>
/Expander>
Button Content="Fuori dall'expander" Grid.Row="1" Height="25" />
/Grid>

venerdì 9 gennaio 2009

Aggiungere un CheckBox Column ad un DXGrid (DevExpress) WPF

per aggiungere una colonna di checkbox in una griglia DXGrid basta inserire un codice:


my:GridColumn FieldName="ImportThis" Header="Import" Width="60"
my:GridColumn.CellTemplate
DataTemplate
CheckBox IsChecked="{Binding Path=ImportThis}" HorizontalAlignment="Center" /
/DataTemplate
/my:GridColumn.CellTemplate
/my:GridColumn

giovedì 8 gennaio 2009

Passare stringa di valori come parametro di una query

E' possibile che ci sia la necessità di passare ad una query una serie di parametri in formato stringa concatenata.
per risolvere la questione ecco come ricavare i vari valori:
In SqlServer:
SELECT *
FROM t
WHERE (',' + @ElencoIdSedi + ',') LIKE ('%,' + ltrim(rtrim(str(t.IdSede))) + ',%')

In MySQL:
SELECT *
FROM t
where concat(',', ElencoIdSedi,',') LIKE concat('%,', t.IdSede, ',%') ;