Avete mai trovato aggiungendo lo stesso codice di diverse forme? Bene ora è possibile utilizzare il seguente come una classe di base per tutte le forme.
=============== BEGIN CODICE ======================
BaseForm unità;
interfaccia
utilizza SysUtils, classi, moduli, Windows;
tipo + + digitare
TBaseForm = classe (TForm)
protetta
funzione IsModal (): Boolean;
procedura KeyDown (var Key: Word; Maiusc: TShiftState); ignorare;
procedura ShowError (E: Eccezione);
funzione MsgBox (Msg: string;
uType: Intero = MB_OK o MB_ICONSTOP): Integer; sovraccarico;
funzione MsgBox (Msg, MsgCaption: stringa;
uType: Intero = MB_OK o MB_ICONSTOP): Integer; sovraccarico;
fine;
attuazione
utilizza i controlli;
TPipeCallBaseForm ()
funzione TBaseForm.MsgBox (Msg: string;
uType: Intero = MB_OK o MB_ICONSTOP): Integer;
iniziare
Risultato: = MsgBox (Msg, Caption, uType);
fine;
procedura TBaseForm.KeyDown (var Key: Word; Maiusc: TShiftState);
iniziare
ereditato;
if ((IsModal) e (GetActiveWindow () = Maniglia) e (Key = VK_ESCAPE)) allora
ModalResult: = mrCancel;
fine;
funzione TBaseForm.MsgBox (MSG, MsgCaption: stringa;
uType: Intero = MB_OK o MB_ICONSTOP): Integer;
var
FlashInfo: FLASHWINFO;
iniziare
if (GetForegroundWindow () <> Maniglia) e poi
iniziare
(* Se la finestra corrente non è attivo lo rendono in flash per avvisare l'utente *)
FillChar (FlashInfo, sizeof (FLASHWINFO), 0);
FlashInfo.cbSize: = sizeof (FLASHWINFO);
FlashInfo.dwFlags: = FLASHW_ALL o FLASHW_TIMERNOFG;
FlashInfo.hwnd: = Handle;
FlashWindowEx (FlashInfo);
fine;
Risultato: = MessageBox (Handle, PChar (MSG), PChar (Caption), uType);
fine;
procedura TBaseForm.ShowError (E: Eccezione);
iniziare
MsgBox (Format ( 'Errore:% s' # 13 # 13'Error Classe:% s', [E. Messaggio, E. ClassName]));
fine;
funzione TBaseForm.IsModal: Boolean;
iniziare
Risultato: = (fsModal in FormState);
fine;
fine.
=============== FINE CODICE ======================
Per utilizzare questa forma di base è semplice aggiungere "BaseForm" per gli usi e la clausola di cambiare le forme di attuazione:
TfrmMyForm = classe (TForm)
A
TfrmMyForm = classe (TBaseForm)
Ora ogni modulo avrà la possibilità di:
- Visualizzare un messaggio di errore in modo coerente
- Inserisci uno MessageDlg mentre lampeggia se la finestra non attiva.
- Torna mrCancel se l'utente preme il tasto ESC su una finestra di dialogo modale.

Delicious
Digg
Google
Yahoo