Newsgroup: it.comp.lang.delphi
Titolo: Lettore BarCode e MessageDlg

Sto realizzando un'applicazione in cui l'unica periferica
di input è un lettore barcode collegato a porta seriale.
Se apro una MessageDlg come faccio poi simulare la
pressione del tasto Ok o Cancel ???
Cordilità.
Stefano Campri

pressione del tasto Ok o Cancel ???
Secondo me, se l'applicazione e' studiata per interagire con
un'unica periferica come il lettore, non e' pensabile aprire
message box che necessitano della pressione di un tasto.
Sei sicuro che non puoi risolvere in modo diverso ?
--
CyberWalkie - walkietalkie(at)
libero.it

 pressione del tasto Ok o Cancel ???
con due codici a barre diversi fra loro. La tua applicazione deve conoscere
questi due codici, cattularli ed agire di conseguenza.
Comunque al tuo posto, cercherei altre strade anche se si può fare.
Io ci ho fatto un programma di magazzino. Molte funzionalità, sono riassunte
tramite una serie di codici a barre che il programma conosce e quando
vengono letti, agisce di conseguenza. E' nella coda dei messaggi
dell'applicazione che faccio questo controllo, però il mio lettore è in
emulazione tastiera, quello seriale non so esattamente come funziona.....mi
pare ci siano dei componenti appositi per gestire il protocollo e quindi i
dati che transitano sulla seriale !! Sicuramente tu sai meglio questo lato e
sai dove agganciarti per catturare il codice che deve simulare il tasto OK e
CANCEL.
Ok, ti saluto. Se vuoi scrivimi anche in privato.
Ciao ciao..
Antonio Tarolla

 Antonio Tarolla
Ti ringrazio per l'intervento.
Il codice per intercettare i comandi inviati dal BarCode è già piazzato e
sono stati definiti i BarCode che indicano OK e CANCEL.
Ho rimasto invece il problema di interagire con la MessageDlg.
Come chiuderla via codice ?
Cordialità
Stefano Campri


Invece della MessageDlg potresti usare la CreateMessageDialog che ti
restituisce la TForm relativa alla dialogbox... in questo modo puoi fare una
cosa del genere:
Var
 MioDialogo:TForm;
....
 MioDialogo:=CreateMessageDialog('Messaggio da
mostrare',mtInformation,[mbOk]);
 MioDialogo.Show;
...
 MioDialogo.close;
Esistono sicuramente altre strade ma questa e' la prima che mi e' venuta in
mente... ;-D
Ti consiglio di dare un'occhiata alla unit DIALOGs per vedere se c'e'
qualche cosa che fa "meglio" al caso tuo. :)
HTH
 Marco

Come chiuderla via codice ?
Devi farlo con un thread separato rispetto a quello che la
chiama.  Il thread, chiamante, difatti, e' bloccato sino a che
non si esce dal form modale.
Un metodo brutale e' quello di cercare la finestra con nome di
classe "TMessageForm" e il suo bottone "Ok", poi gli passi la
combinazione di tasti relativa al bottone di conferma (o gli
generi il click del mouse sul bottone con mouse_event).
--
CyberWalkie - walkietalkie(at)
libero.it

 generi il click del mouse sul bottone con mouse_event).
invece in privato gli ho suggerito un'altra soluzione che consiste nello
sbarazzarsi della "MessageDlg" creandosi quindi
una finestra propria per i messaggi. A questo punto può gestirla come gli
pare e piace eliminando un eventuale thread visto
che può farla modale o non. Gli avevo suggerito anche il metodo brutale ma è
troppo rognoso e gli farebbe perder troppo tempo,
invece sembra che con l'altro sistema abbia già risolto.
Ti saluto....ciao ciao
Antonio Tarolla


Confermo di aver optato per la soluzione di una mia form
Grazie a Tutti per i suggerimenti !!!!
Cordialità
Stefano Campri