Newsgroup: it.comp.software.newsreader
Titolo: [Dialog] Messaggio prima di inviare un messaggio

Nonostante l'oggetto enigmistico la domanda e' semplice semplice.
Mi farebbe comodo che dialog, prima di spedire un messaggio, mi ricordasse
di fare una determinata cosa.
E' possibile? Basterebbe un avviso del tipo:
"Ehi bischeraccio! Hai contato fino a dieci prima di postare?"
Grazie!
-- 
Ciao,
Ste.
______________________________________________
*Visita il mio sito*: 
http://www.feonast.tk
Per rispondere in privato togli l'inutile! ;-)

 Grazie!
Ma per tutti i messaggi o solo in certi casi?
-- 
Enrico C

 Ma per tutti i messaggi o solo in certi casi?
Si tutti quelli in uscita, sia nuovi sia di risposta ad altri.


 Bene!
ehm...ma come? Un link?
Qualche suggerimento?



|  
|  
|  //  Basato sullo script  XPost - FUP2 Warning
|  //  
http://www.40tude.com/dialog/wiki/index.php?title=ScriptFup2Warning
|   
|  // Modifiche di Enrico C:
|  // *** aggiunto avviso per esteso in inglese e in italiano in caso di FUP2;         
|  // *** aggiunto avviso di codifica UTF (Unicode);
|  // *** segnale sonoro al momento dell'invio di un messaggio Unicode;
|  // *** aggiunta riga vuota prima della firma dopo gli avvisi
|  // *** se il messaggio è Unicode, appare una finestra che mostra il messaggio stesso
|  // *** con i caratteri convertiti in formato Unicode
|  // *** e si può scegliere se inserire o meno l'avviso, o annullare del tutto l'invio;
|  // *** è opzionalmente possibile salvare il testo Unicode su un file d'appoggio esterno.
|  
|  //  Le istruzioni del buildform della finestra si basano sullo script Postshow
|  //  
http://www.40tude.com/dialog/wiki/index.php?title=PostShow
| 
|  
|  //---------------------------- Impostazioni ---------------------------------//
|  
|  const
|          
|     suonoUnicode = 'C:\windows\media\ir_inter.wav';
|    // specificare il percorso di un suono di avviso, per esempio
|    // suonounicode = 'C:\windows\media\ir_inter.wav';
|                       
|    fileUnicode = 'C:\Unicode.txt';      
|    // Il file d'appoggio dove, a richiesta, si può salvare il testo del messaggio
|    // Specificare un percorso esistente. 
|    // Il file verrà creato se mon esiste, sovrascritto se già esiste  
|    // E' importante però che si indichi una cartella esistente, per evitare errori.
|  
|    MessageXPost = 'X'+#39+'Posted to:';
|    MessageFup2  = 'FUP2:';
|    MessageFup2WhatIs  = ' [Follow-up to: / Risposte a:] ';  
|    MessageUnicode = '[Unicode Message / Messaggio Unicode]';
|                                                    
|    
|    fColor = clBlue;
|    // font color; other possibilities are: 
|    // clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clLime, clLtGray,
|    // clMaroon, clNavy, clOlive, clPurple, clRed, clSilver, clTeal, clWhite, clYellow. 
|    
|    wBGcolor = clWhite;
|    // background color; look at the previous color names.
|    
|    wWidth = 650; 
|    // window width (pixels).
|    
|    wHeight = 450;
|    // window height (pixels).
|    
|    fName = 'Verdana';
|    // font name; you can change it with another on your box:
|    // look at "Settings - General Settings - View" for a list of your fonts.
|    
|    fSize = 9;
|    // font size.
|    
|    fItalic = false;
|     // italic text?  true / false
|     
|    fBold = false;
|     //bold text?  true / false
|     
|    fUnderline = false;
|     // underlined text?  true / false 
|      
|  //-------------------------- Fine Impostazioni -------------------------------// 
|                    
|     
|  
|  
|  function PlaySound(Filename: PChar; Options: LongWord): Boolean;
|           external 'sndPla...@winmm.dll stdcall';
|    
|  
|  var
|  UnicodeForm:TForm; // la finestra   
|  UnicodeMemo: TMemo; //l'area interna della finestra  
|  UnicodeList: TStringList; // lista per visualizzare il contenuto della finestra
|  UnicWarn:Boolean; // se si vuole inserire l'avviso "Messaggio Unicode"
|  UnicStop:Boolean; // se si vuole annullare l'invio di un messaggio Unicode 
|                      
|     procedure BtUnicodeNoAvvClick(Sender: TObject); //le azioni del tasto Invia senza avviso
|  begin
|  UnicStop := false;
|  UnicodeForm.Close;     
|  end;
|  
|  procedure BtUnicodeAvvisoClick(Sender: TObject); // le azioni del tasto Invia con avviso
|  begin
|  UnicWarn := true;
|  UnicodeForm.Close;
|  end;
|  
|   
|  procedure BtUnicodeAnnullaClick(Sender: TObject); //le azioni del tasto Annulla invio
|  begin
|  UnicWarn := false;
|  UnicStop := true;
|  UnicodeForm.Close;
|  end;
| 
|  procedure BtUnicodeSalvaClick(Sender: TObject); // le azioni del clck [Salva su file esterno] sulla cornice della finestra
|  begin
|  UnicodeMemo.Lines.SaveToFile(fileUnicode);
| 
| // UnicWarn := false;
| // UnicStop := true;
| // UnicodeForm.Close;
|  end;
|                                                
|   
|   
|  
|  // Qui inizia la procedure che fa il grosso del lavoro
|  Procedure XPost_and_FUp2_and_Unicode_Information (var Message: TStringlist;
|  Servername: string; IsEmail: boolean);
|  var     
|  
|    FUP2, // se è stato impostato il FUP2
|    XPost, // se il messaggio è in crosspost
|    Header: boolean; 
|    i, // contatore
|    SigLine: integer; //in che riga si trova la firma, se non c'è firma è 0
| 
|    s, // contiene le righe del messaggio, una alla volta
|    Fup2Group, //gruppo su cui si chiedono le risposte (FUP2)
|    XPostGroups: string; // gruppi in crosspost
|    UnicodeBtAvviso : TButton; //i tre pulsanti
|    UnicodeBtNoAvv: TButton;   //i tre pulsanti              
|    UnicodeBtAnnulla: TButton; //i tre pulsanti    
|    
|          
|  begin
|    if IsEmail=true then exit; //se è un'email lascia perdere!
|    FUP2:=false; //resetta alcune variabili
|    XPost:=false;
|    Header:=true;      
|    UnicWarn := false;
|    UnicStop := false;
|    SigLine:=0;
|    for i:=0 to Message.count-1 do // per tutte le righe del messaggio
|      begin
|      s:= message.strings[i];
|      if s='' then header:=false;  
|      if header=true then
|        begin  
|        
|  // Controlla se Unicode e nel caso...                         
|  if Pos('Content-Type: text/plain; charset="utf-',s)>0 then 
|  begin     
|       
|  PlaySound(suonounicode, 1); // suona il suono predefinito    
|  Sleep(1000);
|        
|  // Buildform - costruisce la finestra e i tasti
|  UnicodeForm := TForm.Create(nil);
|  UnicodeForm.Caption := 'Messaggio Unicode  [clic sui bordi della finestra per salvare il testo su '+fileUnicode+' ]'; 
|  UnicodeForm.Height := wHeight;
|  UnicodeForm.Width := wWidth;
|  UnicodeForm.position := poScreenCenter;
|  UnicodeForm.BorderStyle := bsSingle;
|  UnicodeForm.OnClick := @BtUnicodeSalvaClick; ///
|  
| 
|  UnicodeMemo := TMemo.Create(UnicodeForm);
|  UnicodeMemo.Parent := UnicodeForm;
|  UnicodeMemo.Top := 10;
|  UnicodeMemo.Left := 10;
|  UnicodeMemo.Height := UnicodeForm.ClientHeight-60;
|  UnicodeMemo.Width := UnicodeForm.ClientWidth-20;
|  UnicodeMemo.ScrollBars := ssBoth;
|  UnicodeMemo.Color := wBGcolor;
|  UnicodeMemo.Font.Size := fSize;
|  
UnicodeMemo.Font.Name
 := fName;
|  UnicodeMemo.Font.Color := fColor;
|  UnicodeMemo.Font.Style := [];
|  if fItalic then UnicodeMemo.Font.Style := UnicodeMemo.Font.Style + [fsItalic];
|  if fBold then UnicodeMemo.Font.Style := UnicodeMemo.Font.Style + [fsBold];
|  UnicodeMemo.TabStop := false;
|  UnicodeMemo.ReadOnly := true;
|  UnicodeBtNoAvv := TButton.Create(UnicodeForm);
|  UnicodeBtNoAvv.Parent := UnicodeForm;
|  UnicodeBtNoAvv.Top := UnicodeMemo.Top+UnicodeMemo.Height+UnicodeBtNoAvv.height/2;
|  UnicodeBtNoAvv.Left := UnicodeForm.Width DIV 2 - UnicodeBtNoAvv.Width-50;
|  UnicodeBtNoAvv.Caption := '&Senza Avviso';
|  UnicodeBtNoAvv.OnClick := @BtUnicodeNoAvvClick; 
|  UnicodeBtNoAvv.Cancel := true;  // Dando ESC si invia nornalmente senza Avviso
|  UnicodeBtAvviso := TButton.Create(UnicodeForm);
|  UnicodeBtAvviso.Parent := UnicodeForm;
|  UnicodeBtAvviso.Caption := '&Invia';
|  UnicodeBtAvviso.TabOrder := 0;
|  UnicodeBtAvviso.OnClick := @BtUnicodeAvvisoClick;
|  UnicodeBtAvviso.Top := UnicodeBtNoAvv.Top;
|  UnicodeBtAvviso.Left := UnicodeBtNoAvv.Left+80;
|  UnicodeBtAnnulla := TButton.Create(UnicodeForm);
|  UnicodeBtAnnulla.Parent := UnicodeForm;
|  UnicodeBtAnnulla.Caption := '&Annulla Invio';
|  UnicodeBtAnnulla.OnClick := @BtUnicodeAnnullaClick;
|  UnicodeBtAnnulla.Top := UnicodeBtNoAvv.Top;
|  UnicodeBtAnnulla.Left := UnicodeBtAvviso.Left+80;
|  
| 
| // end BuildForm
| 
| //FillMemo - Inserisce il testo del messaggio nella finestra
|  UnicodeList := TStringList.Create();
|  UnicodeMemo.Lines.Assign(Message);       
|  UnicodeList.free;
| //end FillMemo
|        
|  UnicodeForm.showmodal;     
|  UnicodeForm.free;   
|  
|  end;      
|  
|  
|  
|  // Nei prossimi IF, inserisce le righe di avviso opportune a seconda dei casi
|  // (FUP2, Xpost, Unicode)
|  // prima della firma se presente oppure in fondo al messaggio.
|  // Inserisce anche delle righe bianche per separare gli avvisi dal testo e dalla firma.
|  
|             
|       if Pos('Followup-To:',s)>0 then
|           begin;          FUP2:=true;
|           Fup2Group:=copy(s,13,length(s)-12);
|   //      WriteToLog(MessageFup2+Fup2Group,1);
|           end;
|     
| 	 if Pos('Newsgroups:',s)>0 then
|           if Pos(',',s)>0 then
|             begin;
|             XPost:=true;
|             XPostGroups:=copy(s,12,length(s)-11);
|   //        WriteToLog(MessageXPost+XPostGroups,1);
|             end;
|          end
|          
|          
|       else
|   
|         if s='-- ' then
|           SigLine:=i;
|   //  WriteToLog('Analysierte Zeile: '+s,1);
|       end;
|     
|     
|     if (FUP2=true) or (XPost=true) or (UnicWarn=true) then
|       if Sigline=0 then
|         Message.Add('')
|       else
|         Message.Insert(SigLine,''+#13+#10);
|         
|         
|     if FUP2=true then                                                  
|       if Sigline=0 then
|          Message.Add(MessageFup2+MessageFup2WhatIs+Fup2Group)          
|       else            
|          Message.Insert(Sigline,MessageFup2+MessageFup2WhatIs+Fup2Group);          
|        
|     if XPost=true then
|       if Sigline=0 then
|         Message.Add(MessageXPost+XPostGroups)
|       else
|         Message.Insert(Sigline,MessageXPost+XPostGroups);
|   
|   
|      if UnicWarn=true then // avviso Unicode
|        if Sigline=0 then
|          Message.add(MessageUnicode)           
|        else            
|          Message.Insert(Sigline,MessageUnicode);             
|   
|   
|     if (FUP2=true) or (XPost=true) or (UnicWarn=true) then
|       if Sigline=0 then
|         Message.Add(''+#13+#10)
|       else
|         Message.Insert(SigLine,''+#13+#10);
|   
|    
|     end;
|   
|     
| // Questa è la funzione richiamata quando si preme il tasto di invio,
| // che richiama la procedure XPost_and_FUp2_Information
| // che esegue tutto quanto abbiamo visto sopra.
| // Se la procedure restituisce UnicStop = true, diamo valore false a result,
| // e ciò annulla l'invio.
|       
|   function OnBeforeSendingMessage(var Message: TStringlist; Servername: string; IsEmail: boolean):boolean;
|   begin  
|     result:=true;
|    
|     XPost_and_FUp2_and_Unicode_Information (Message, Servername, IsEmail);
|     
|      if UnicStop = True then result:=false;  
|       
|   end;
|   
|   begin
|   end.

 premere per andare avanti...
Ok grazie! Ora ci studio un po' e vedo (come pare) se fa al caso mio.


 Ok grazie! Ora ci studio un po' e vedo (come pare) se fa al caso mio.
:-( non ci riesco...e' troppo incasinato per uno non pratico di
programmazione. :(( 


 programmazione. :(( 
Ci provo, ma non ti assicuro niente né posso fare alcuna prova... 
prendilo come un punto di partenza su cui lavorare :-)
***
program OnBeforeSendingMessage;
	uses Forms,StdCtrls;
	//probabilmente uno o entrambi non servono...
const
	testoAvviso = 'Ehi bischeraccio! Hai contato fino a 10?';
	titoloAvviso = 'Avviso...';
function OnBeforeSendingMessage(var Message: TStringlist; Servername: 
string; IsEmail: boolean):boolean; //tutto su una riga...
begin
	MessageBox(0, testoAvviso, titoloAvviso, MB_WARNING);
end;
begin
end.
***
In particolare non sono sicuro a proposito di MB_WARNING, al limite 
prova a chiudere la parentesi dopo titoloAvviso, *potrebbe* funzionare 
lo stesso.
Ah, attenzione che quest'accrocchio (se anche funziona) non fa altro che 
quello che hai chiesto: fa spuntare l'avviso, credo con un pulsante OK, 
ma non ti permette nemmeno di annullare l'invio se hai dimenticato di 
fare la cosa che vuoi ricordarti...
-- 
Fare Well! | 
www.fiag.it
 | contribuisci a migliorare 
www.x-privat.org
G | 
www.getfirefox.com
 
www.getthunderbird.com
 | 
www.40tude.com/dialog
Neverwinter Nights, Baldur's Gate, IceWind Dale, Planescape: Torment,
Knights of the Old Republic... sottoscrivi it-alt.giochi.crpg.bioware

 fare la cosa che vuoi ricordarti...
Questo problema, da quanto scritto nel manuale, sembra facilmente
risolvibile mettendo i pulsanti Yes e No.
Ma il problema e': "siamo sicuro che quella funzione sia implementata in
Dialog?"
Grazie ancora.


 Grazie ancora.
Di nulla (letteralmente) ;-)
-- 
Fare Well! | 
www.fiag.it
 | contribuisci a migliorare 
www.x-privat.org
G | 
www.getfirefox.com
 
www.getthunderbird.com
 | 
www.40tude.com/dialog
ICQ# 16553733 | MSN: 
alfa...@hotmail.it
 | Gandalf on 
irc.azzurra.org
"One small cat changes coming home to an empty house to coming home."

In data lun, 02.maggio.2005 23.04.03, *Gandalf* ha scritto:
[CUT]
Allora sono arrivato a questo punto:
_______________________________
program OnBeforeSendingMessage;
	uses Forms,StdCtrls;
	//probabilmente uno o entrambi non servono...
const
	testoAvviso = 'Ehi bischeraccio! Hai contato fino a 10?';
	titoloAvviso = 'Avviso...'; 
	MB_YESNO = 4; 
        IDYES = 6;
        IDNO = 7;
function MessageBox(hWnd: longword; lpText, lpCaption: PChar; uType: 
longword): Integer; external 'Messa...@user32.dll stdcall';
function OnBeforeSendingMessage(var Message: TStringlist; Servername: 
string; IsEmail: boolean):boolean; //tutto su una riga...
begin
	MessageBox(0, testoAvviso, titoloAvviso, MB_YESNO);
end;
begin
end.
________________________________
E' tutto come vorrei, ma ancora non funziona. Appare il messaggio quanto 
invio un post ma qualsiasi pulsante clicchi fa sempre la stessa cosa: non 
lo spedisce!
In uno script il messagebox viene messo in un ciclo if in questo modo:
if( MessageBox(0, testoAvviso, titoloAvviso, MB_YESNO) = IDYES)
then QUALCOSA QUI;
end.
A naso la capisco cosi': se clicco su yes manda il messaggio, altrimenti 
torna alla bozza. Ma non so quali sono i comandi.
Ma non c'e' una guida? In quella in linea c'e' poco...
Grazie!


Ollleee! Funzionaaaaa!
Eccolo qua:
program OnBeforeSendingMessage;
	uses Forms,StdCtrls;
	//probabilmente uno o entrambi non servono...
const
	testoAvviso = 'Ehi bischeraccio! Hai contato fino a 10?';
	titoloAvviso = 'Avviso...'; 
	MB_YESNO = 4; 
        IDYES = 6;
        IDNO = 7;
function MessageBox(hWnd: longword; lpText, lpCaption: PChar; uType:
longword): Integer; external 'Messa...@user32.dll stdcall';
function OnBeforeSendingMessage(var Message: TStringlist; Servername:
string; IsEmail: boolean):boolean; //tutto su una riga...
begin
	result:=false;
	if( MessageBox(0, testoAvviso, titoloAvviso, MB_YESNO) = IDYES)
            then result:=true;
        end;
begin
end.
Il top del top sarebbe se riuscissi a farlo tornare alla bozza, ma per ora
non ci riesco.
Se qualcuno ha qualche idea..
Grazie tante Gandalf.


 Ma non c'e' una guida? In quella in linea c'e' poco...
La mancanza di documentazione è il difetto peggiore dello scripting in 
Dialog ...dopo, per quanto mi riguarda, l'impossibilità di provarlo :-P


 Dialog ...dopo, per quanto mi riguarda, l'impossibilità di provarlo :-P
Peccato che non ci sia una guida. Se non sono indiscreto, come mai non puoi
provarlo?
Ps: non vedo la tua x-face e negli header sembra ci sia (manca la la x-
davanti a face).


 davanti a face).
    Infatti sta usando una Face, ovvero una X-Face a colori, non
impostabile con Dialog ma vedibile con uno script apposito.
-- 
Ryoma
ICQ#41121680

 impostabile con Dialog ma vedibile con uno script apposito.
ah...non lo sapevo...grazie!


 x- davanti a face).
Come ti hanno detto non ho una X-Face, ma una Face (a colori).
Puoi aggiungere una (leggermente rudimentale) visualizzazione delle Face 
grazie ai programmi di *Alien321* e allo script di *MLC*:
 
http://fido.altervista.org/Dialog/script.html#face


 non impostabile con Dialog
A dire il vero, se si conosce la stringa corrispondente alla Face, 
dovrebbe essere facilissimo scrivere uno script che aggiunga l'header.


 grazie ai programmi di *Alien321* e allo script di *MLC*:
Lo provai tempo fa ma non riuscii a farlo funzionare (anche se devo dire
che non ci provai poi molto); ma vabbe' era una curiosita'.
Per quanto riguarda lo script di questo post, non e' che sai come tornare
al messaggio iniziale che si trova nella cartella OutBox?
Sono due giorni che cerco ma non trovao un tubo... :(
Grazie.


 tornare al messaggio iniziale che si trova nella cartella OutBox?
Scusa, capisco solo ora qual è il problema. Prova ad utilizzare lo 
script che abbiamo «partorito» non come un OnBeforeSendingMessage, ma 
come un OnOutgoingMessageCheck (ed eventualmente prova anche a cambiare 
Errors.Add con Warnings.Add).


 (ed eventualmente prova anche a cambiare Errors.Add con Warnings.Add).
Mi sono perso. Non trovo niente di simile...
program OnOutgoingMessageCheck;
const
	testoAvviso = 'Ehi bischeraccio! Hai contato fino a 10?';
	titoloAvviso = 'Avviso...'; 
	MB_YESNO = 4; 
        IDYES = 6;
        IDNO = 7;
        SMsgDlgYes = '&Si';
        SMsgDlgNo = '&No';
function MessageBox(hWnd: longword; lpText, lpCaption: PChar; uType:
longword): Integer; external 'Messa...@user32.dll stdcall';
function OnOutgoingMessageCheck(Message: TStringlist; var Warnings, Errors:
TStringlist):boolean;
begin
	result:=false;
	if( MessageBox(0, testoAvviso, titoloAvviso, MB_YESNO) = IDYES)
            then result:=true;
        end;
 
begin
end.


 grazie ai programmi di *Alien321* e allo script di *MLC*:
Come faccio a capire che stai usando una "Face" su Dialog senza andare a
guardare di volta in volta negli header? :-)
Ciao.
-- 
< Nathan > ~ email 
nata...@despammed.com
 ~
«All I ever wanted - All I ever needed
Is here in my arms - Words are very unnecessary
They can only do harm» (Enjoy the silence, Depeche Mode)

 dovrebbe essere facilissimo scrivere uno script che aggiunga l'header.
Solo via script. Dialog non permette di inserire header personalizzati
che non inizino per X-.
-- 
daRkSidE, 04/05/2005 23.39.18

 end.
Sostituisci il quotato con:
procedure OnOutgoingMessageCheck(Message: TStringlist; var Warnings, 
Errors: TStringlist); //tutto su una riga
    begin
	if( MessageBox(0, testoAvviso, titoloAvviso, MB_YESNO) = IDNO)
		then Warnings.Add('Non hai contato, bischero!');
    end;
begin
end.
e poi incrociamo le dita :-)


 guardare di volta in volta negli header? :-)
L'unica cosa che mi viene in mente è un:
!setcolor(red;green) Header {^Face: }
#rosso su verde, da cambiare :-P
che funziona solo per i messaggi con corpo (quindi sicuramente su tutti 
i messaggi che leggi).


 che non inizino per X-.
Ehi, me lo ricordo ancora come funziona Dialog :-)


 guardare di volta in volta negli header? :-)
    Se tieni visualizzata la barra sopra il corpo del messaggio
(quella che attivi con il [+]) basta impostare la visualizzazione
anche dell'header Face. La configuri cliccando col dx e "Edit
visible headers".
-- 
Ryoma
ICQ#41121680

 e poi incrociamo le dita :-)
E' andata bene! Ora e' perfetto.
Grazie tante per l'aiuto!


 visible headers".
E' una cosa assai buffa... l'ho configurata con un nuovo campo "header", ma
a quanto pare, quando è presente la "Face", come negli header di Gandalf,
compare il testo... non tradotto graficamente, ovviamente! ^__^ non viene
richiamato ovviamente il programma "face.exe" che ho nella cartella del
programma... credo che la cosa migliore sia colorare (ad esempio, di verde)
il testo dei messaggi con la Face come suggerisce Gandalf, per poi attivare
lo script della "Face".


 lo script della "Face".
    Non č buffa, devi vedere solo il testo, mica ti parte lo script
automaticamente. Intanto cosě sai c'č la Face.
-- 
Ryoma
ICQ#41121680

 Grazie tante per l'aiuto!
Piacere mio :-)
E tanti saluti ai miei colleghi che all'Università criticavano gli esami 
di programmazione sui fogli di carta anziché al PC :-P
