Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-11-2009, 14:12   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[Vb/C#/.Net]Popup tipo Post It

Ciao a tutti

Ho fatto una piccola applicazione che mi gestisce semplicemente delle scadenze di vario tipo.

Mi piacerebbe avere da voi qualche idea su come implementare un sistemino di messaggistica a video che segnali (ad esempio ogni ora) le scadenze più vicine.

Avevo inizialmente pensato di implementare un servizio, ma sto ancora lottando con un'altra applicazione e, lato server, non sono ancora all'altezza di poter fare qualcosa di utile.

La mia soluzione si baserebbe quindi sull'avvio automatico del programma, un comune programma composto da alcune piccole dll e da un'interfaccia grafica per la gestione dei dati.

Grazie mille a tutti come sempre!

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2009, 14:34   #2
U235
Member
 
Iscritto dal: Nov 2009
Messaggi: 56
ciao,

non ho afferato, si tratta di web o windows form?

mi spieghi meglio il meccanismo?
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno
U235 è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2009, 14:56   #3
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Windows forms.

Scusa, ho dimenticato di spiegarmi meglio

L'applicazione è molto semplice:

C'è un db dove vengono inserite le varie scadenze per alcuni adempimenti
tramite l'applicazione fatta in C#.

A livello di programma, funziona tutto bene.

La 'chicca' che mi piacerebbe aggiungere è appunto che se l'utente
è un pò 'distratto', il programma legga le scadenze, le confronti con la data odierna
e se il valore è inferiore a, per esempio 15 giorni, segnali mediante un popup a video
la scadenza.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 04-11-2009 alle 15:04.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2009, 15:01   #4
U235
Member
 
Iscritto dal: Nov 2009
Messaggi: 56
come mai non usi un timer? forse vuoi un orario preciso costante tipo tuuti i gg.alle 12, 13, 14 ecc. indipendentemente dall'orario di avvio dell'applicazione?
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno
U235 è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2009, 16:14   #5
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Al momento ho risolto semplicemente utilizzando una notifyIcon e, come da te suggerito, un timer.

Sembra che funzioni
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2009, 16:23   #6
U235
Member
 
Iscritto dal: Nov 2009
Messaggi: 56
Quote:
Originariamente inviato da RaouL_BennetH Guarda i messaggi
Windows forms.

Scusa, ho dimenticato di spiegarmi meglio

L'applicazione è molto semplice:

C'è un db dove vengono inserite le varie scadenze per alcuni adempimenti
tramite l'applicazione fatta in C#.

A livello di programma, funziona tutto bene.

La 'chicca' che mi piacerebbe aggiungere è appunto che se l'utente
è un pò 'distratto', il programma legga le scadenze, le confronti con la data odierna
e se il valore è inferiore a, per esempio 15 giorni, segnali mediante un popup a video
la scadenza.

scusami, non avevo letto l'edit

ok...
il meccanismo è semplice, metti un timer che fa l'estrazione e confronto dei dati, nel caso vuoi che gli impegni non vengano segnalati di continuo ad ogni tick del timer, metti un dato di confronto ad esempio una data/ora con il classico check (o altro) tipo "ricordamelo tra tot tempo") nella form che farà da popup.

se non ti è chiaro, tra un po ti posto un esempio.
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno
U235 è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2009, 19:42   #7
U235
Member
 
Iscritto dal: Nov 2009
Messaggi: 56
questo esempio l'ho creato (buttato giù rapidamente senza fronzoli) semplicemente per avere un idea di come potresti fare, ma ovviamente devi adattarlo perchè cosi' non ha molto senso, ma basterebbero delle piccole modifiche.

la prima classe è la popup che contiene due listBox, una per il testo da visualizzare e una per la scelta dell'utente che nell'ordine dovrebbe essere 1 ora, 2 ore, 3 ore e non ricordare piu', poi un bottone al quale è collegato il metodo button1_Click. in piu' ho aggiunto un evento di chiusura del form che rimanda indietro "l'impegno" modificato.
Quote:
//creo un delegato per trasmettere l'impegno modificato alla form principale
public delegate void Delegato(Impegno impegno);
public partial class Form2 : Form
{
public Impegno Impegno { get; set; }
Delegato delegato = null;
public Form2()
{
InitializeComponent();
}
//creo un costruttore che accetta un Impegno come parametro
public Form2(Impegno impegno)
{
InitializeComponent();
this.Impegno = impegno;
///aggiungo il testo alla listbox
this.listBox1.Items.Add(impegno.Testo);
///imposto la prima selezione di default (ricordamelo tra 1 ora)
this.listBox2.SelectedIndex = 0;
}

public event Delegato ModificaImpegno
{
add { this.delegato += value; }
remove { this.delegato -= value; }
}

private void button1_Click(object sender, EventArgs e)
{
/// controllo la scelta dell'utente tra le varie opzioni
switch (this.listBox2.SelectedIndex)
{
///1 ora
case 0 :
{
///sottraggo il tempo stabilito dal tempo di "anticipo" dell'avviso del promemoria
this.Impegno.Promemoria -= new TimeSpan(1, 0, 0);
break;
}
///2 ore
case 1:
{
///sottraggo il tempo stabilito dal tempo di "anticipo" dell'avviso del promemoria
this.Impegno.Promemoria -= new TimeSpan(2, 0, 0);
break;
}
///3 ore
case 2:
{
///sottraggo il tempo stabilito dal tempo di "anticipo" dell'avviso del promemoria
this.Impegno.Promemoria -= new TimeSpan(3, 0, 0);
break;
}
/// non ricordare piu'
case 3:
{
///dico di non ricordarmelo più
this.Impegno.Ricordalo = false;
break;
}
}
this.Close();
}
//alla chiusura del form
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
if (this.delegato != null)
{
///rimando indietro il promemoria modificato
this.delegato(this.Impegno);
}
}
}
la prossima classe è il form principale (partial)

Quote:
public partial class Form1 : Form
{
Impegno impegno;

public Form1()
{
InitializeComponent();

///imposti il timer tenendo presente che piu' è frequesnte (intervallo minore) e piu' è preciso il promemoria, ma è
///anche vero che piu' è frequesnte e piu' lavora il codice...
this.timer1.Interval = 10000;
///abilito il timer
this.timer1.Enabled = true;
///creo un nuovo "Impegno" che in questo caso è un oggetto creato appositamente per fare un esempio
///ma potrebbe essere un dato preso dal db
this.impegno = new Impegno();
///imposto la data e ora dell'impegno
this.impegno.DataOra = new DateTime(2009, 11, 4, 20, 40, 0);
///stabilisco quanto tempo prima devo essere avvisato (in questo caso 2 ore)
this.impegno.Promemoria = new TimeSpan(2, 0, 0);
///imposto il testo da visualizzare nel promemoria
this.impegno.Testo = "prova imopegno";
///stabilisco che deve ricordarmelo
this.impegno.Ricordalo = true;
///questo serve per non fa ripetere il promemoria mentre lo sto lavorando se il timer e frequente
this.impegno.InUso = false;
}

//al tick del timer chiamo il metodo che controlla gli impegni
private void timer1_Tick(object sender, EventArgs e)
{
controlloImpegni(this.impegno);
}

void controlloImpegni(Impegno impegno)
{
///controllo se il promemoria è attivo e che non sia già in uso
if (impegno.Ricordalo&&!impegno.InUso)
{
///sottraggo dalla data di impegno il tempo del promemoria (stabilisco quanto tempo prima devo farlo)
DateTime dataOra = impegno.DataOra.Subtract(impegno.Promemoria);
///stabilisco se è il momento di mandare il promemoria
if (dataOra <= DateTime.Now)
{
///marco come in uso il dato
impegno.InUso = true;
///creo la popup
Form2 popup = new Form2(impegno);
///aggiungo l'evento per la ricezione dell'impegno modificato
popup.ModificaImpegno += new Delegato(popup_ModificaImpegno);
///faccio apparire a video la popup
popup.Show();
}
}
}
//alla chiusura o alla pressione del tasto della popup
void popup_ModificaImpegno(Impegno impegno)
{
///l'impegno non è piu' in uso
impegno.InUso = false;
///"salvo" l'impegno eventualmente nel db ad esempio....
///in questo caso di test lo rimetto in circolo
this.impegno = impegno;
}
}
in fine la prossima classe l'ho fatta per supportare l'esempio senza db

Quote:
public class Impegno
{
public DateTime DataOra { get; set; }
public string Testo { get; set; }
public TimeSpan Promemoria { get; set; }
public bool Ricordalo { get; set; }
public bool InUso { get; set; }
}
Fammi sapere se hai dificolta a ricreare il tutto secondo le tue esigenze.

Ciao.
__________________
Un elemento come me quando si fissa fa sempre un gran casino, ma solo nel 45 ciò è stato negativo . Little Boy era mio nonno
U235 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2009, 10:53   #8
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Nel frattempo che me lo studio, ti ringrazio per l'aiuto
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
NVIDIA RTX PRO 4500 Server Edition: la s...
Core Ultra 200 HX Plus: Intel mette il t...
Starfield arriva su PS5: data ufficiale,...
iPad Air 13" (M4) scende di prezzo: -100...
Oracle annuncia Java 26 con il Java Veri...
OPPO Find N6 è ufficiale: sottile...
Influencer sotto controllo Agcom: arriva...
Scontro in OpenAI sul ChatGPT per adulti...
Apple Watch Series 11 a 349€ e altri int...
Starlink rinnova i piani residenziali in...
POCO X8 Pro e Pro Max ufficiali: potenza...
Jensen Huang propone i token come nuovo ...
Realme 16 Pro e 16 Pro+ tra i più...
Dall'enciclopedia all'algoritmo: Encyclo...
Il CEO di Epic Games Tim Sweeney ha comp...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v