MsgBox Personalizzata

giovedì 26 agosto 2004 - 16.52

bornslippy Profilo | Newbie

Sto tentando di creare un MsgBox personalizzato con due pulsanti (SI/NO)

Il codice della funzione è il seguente:

Public Function MyMsgBox(strMessaggio As String, strTitolo As String) As Integer
DoCmd.OpenForm "frmYesNo"
Form_frmYesNo.Caption = strTitolo
Form_frmYesNo.lblMessaggio.Caption = strMessaggio

Ripeti fino a che uno dei due pulsanti non viene premuto
If pulsante SI premuto = True Then
MyMsgBox = vbYse
End If
If pulsante NO premuto = True Then
MyMsgBox = vbNo
End If
End Function

Come posso completare il codice, grazie.

Anonimo Profilo | Senior Member

Forse devi usare gli eventi generati dai pulsanti quando premuti...Tipo button.click

Brainkiller Profilo | Guru

Perchè hai la necessità di creare una MessageBox nuova con due pulsanti Si / No quando esista già ?

ciao
david

bornslippy Profilo | Newbie

Dal momento che MsgBox graficamente contrasta molto con la mia applicazione volevo creare qualcosa di simile e personalizzato. Per fare questo in una form (frmYesNo) ho inserito due pulsanti come detto e creato la funzione MyMsgBox inserita in un modulo.
Il problema è che non riesco a gestire il fatto di avere due form aperte contemporaneamente e non ho la più pallida idea di quali istruzioni utilizzare per verificare in un modulo se sto premento un pulsante in una form.
Ulteriore questito: se ho una formA e premendo un pulsante apro anche una formB qual'è l'istruzione o la proprietà che mi permette di "fissare" il focus sulla formB, ovvero se clicco sulla formA questa non si "attiva".
(Ho provato a gestire il tutto tramite delle variabili globali ma utilizzando un clico while entro sempre in un loop infinito!!!)
Il problema è come posso accorgermi in un modulo di aver premuto un pulsante in una form.

GRAZIE di TUTTO.

Brainkiller Profilo | Guru

Il tuo ragionamento è abbastnza contorto.

Generalmente se usi il metodo Show() per far apparire una nuova Form questa va in primo piano e automaticamente prende il focus.
Non capisco perchè tu dici che non lo prende.

Per sapere i valori di ritorno di una finestra puoi usare la classe CommonDialog.ShowDialog() che dà valori di ritorno.
Oppure puoi fare in altri modi, creando una nuova istanza di classe (MyMessageBox) puoi passare nel costruttore un riferimento del chiamante.
Oppure ci sono anche altre strade volendo.

ciao
david

bornslippy Profilo | Newbie

Tutti questi miei problemi nascono dal fatto che sto utilizzando Access e quindi VBA in cui non esistono i comandi Show, Hide, Enabled per una Form ne tantomeno CommonDialog e ShowDialog.
Per istanza di classe intendi modulo di classe?
GRAZIE

Brainkiller Profilo | Guru

Allora, cambiamo ragionamento...
perchè e quando dovrebbe apparire la tua MyMessageBox ?
Che cosa vuoi segnalare all'utente e cosa vuoi fargli decidere dalla MessageBox ?

ciao
david

bornslippy Profilo | Newbie

Per esempio quando si deve confermare un salvataggio o l'uscita da una form. La MyMsgBox dovrebbe essere simile come funzionalità alla MsgBox con parametro vbYesNo.

Brainkiller Profilo | Guru

Allora, in VBA si può far apparire una messagebox prima di chiudere la finestra.
La si può far apparire anche con i pulsanti Yes e No.
Però visto che la tua applicazione ha un certo stile tu non vuoi usare la classica Messagebox che ti propone Access ?

ciao
david

bornslippy Profilo | Newbie

Dovrei aver risolto aprendo la form con il seguente comando:

DoCmd.OpenForm "frmYesNo", , , , , acDialog

e utilizzando delle variabili globali che tengono conto di quale pulsante è stato premuto.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5