LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

L'articolo è stato scritto sulla base dell'analisi dei programmi scritti dai giovani sviluppatori del nostro gruppo.

Disporre correttamente la sequenza dei componenti di commutazione

Molti utenti, in particolare quelli che precedentemente lavoravano in DOS, hanno l'abitudine di passare da un campo di input all'altro non con il mouse, ma con la tastiera usando il tasto Tab. Inoltre, è molto più veloce della selezione di ciascun campo con il mouse. Pertanto, l'ordine di commutazione dei componenti deve essere impostato correttamente. Questo vale sia per i componenti all'interno di tutti i componenti del contenitore (pannelli, GroupBox e simili), sia per i componenti del contenitore stessi, se ce ne sono diversi nel modulo.

L'ordine di commutazione dei componenti all'interno del contenitore è impostato dalla proprietà TabOrder. Il primo componente diventa attivo, con TabOrder uguale a 0, il secondo da 1, ecc., Fino a quando non vengono elencati tutti i componenti. Inoltre, il componente ha la proprietà TabStop, che indica se il componente riceverà lo stato attivo quando si passa con il tasto Tab. Se è necessario vietare il passaggio a qualsiasi componente, impostarlo su TabStop \u003d false. In questo caso, è possibile passare a questo componente solo con il mouse.

Ci sono momenti in cui gli utenti che sono abituati a cambiare una determinata chiave in un programma, per abitudine, continuano a usarla nel resto. Spesso ciò accade con gli utenti 1C, in cui è possibile utilizzare il tasto Invio per spostarsi tra i campi di input. Bene, daremo loro una tale opportunità nei nostri programmi, se lo chiederanno. Impostare la proprietà KeyPreview del modulo su true e scrivere il gestore eventi OnKeyPress:

Procedura TForm1.FormKeyPress (Mittente: TObject; Tasto var: Char);
inizio
if ord (key) \u003d vk_Return quindi
Form1.SelectNext (PriemForm.ActiveControl, true, true);
fine;

Tale gestore fornisce una transizione attraverso gli elementi del modulo quando si preme Invio. Va notato che questo metodo non funzionerà con i pulsanti, perché premendo Invio sul pulsante si fa in modo che venga premuto, mentre premendo Tab si trasferisce lo stato attivo di input al componente successivo nella sequenza di commutazione.

Pulsanti predefiniti

Tutti gli stessi utenti si abituano rapidamente al fatto che nelle finestre di dialogo dell'applicazione, di regola, è possibile confermare la scelta con il tasto Invio e annullare con il tasto Esc. Non deludiamoli nei nostri programmi, soprattutto perché è molto semplice da fare. Per un pulsante che risponde a Invio, imposta la proprietà Default su true. Per un pulsante che risponde a Esc, imposta la proprietà Cancel su true. E questo è tutto.

si o no

Tutte le finestre di dialogo che richiedono azioni dell'utente devono avere almeno due pulsanti: confermare l'azione e annullare l'azione (Sì / No, Salva / Annulla, ecc.). Il rifiuto dell'azione può essere eseguito chiudendo la finestra con il tasto [X] nel titolo della finestra. È inaccettabile se esiste un solo pulsante per confermare l'azione e, per rifiuto, si suppone che chiuda la finestra con il pulsante [X] nell'intestazione, o che non vi sia alcuna possibilità di rifiuto. Questo confonde l'utente, causando una domanda logica: come rifiutare?

Inoltre, non dimenticare ciò che è stato detto sopra nel paragrafo "Pulsanti predefiniti".

Tutte le finestre di dialogo dovrebbero aprirsi al centro dello schermo.

Al centro, e non dove sono stati creati in modalità progettazione. In primo luogo, è più visivo e, in secondo luogo, risolve automaticamente il problema delle diverse risoluzioni dello schermo per diversi utenti.

Viene fatta un'eccezione se la finestra di dialogo non è modale e, come risultato del lavoro dell'utente, le modifiche nella finestra principale si verificano immediatamente in questa finestra (ad esempio, filtrando un set di dati, ridisegnando grafici, ecc.).

Le dimensioni della finestra non devono superare le dimensioni dello schermo

In nessun caso. Questa è una vergogna quando parte della finestra si insinua fuori dallo schermo. Questo requisito non dipende dalla risoluzione dello schermo dell'utente, ad es. scuse come "Lascia che mettano una risoluzione più alta" non funzionano.

Ridimensionamento corretto degli elementi della finestra

Gli elementi della finestra devono essere ridimensionati o spostati correttamente quando la finestra viene ridimensionata, quando la finestra viene ingrandita e quando la finestra viene ripristinata dopo la massimizzazione.

Tutto è sempre visibile

Ridurre le dimensioni della finestra non dovrebbe portare alla scomparsa degli elementi della finestra e preferibilmente non dovrebbe portare alla comparsa di barre di scorrimento (scroller) della finestra stessa. È possibile limitare la dimensione minima della finestra in modo che tutti gli elementi siano visibili e accessibili. Se non è possibile posizionare i componenti in modo che tutti siano visibili nella finestra, è possibile utilizzare i segnalibri (come PageControl) per dividere i componenti in gruppi. Non perdiamo neanche scuse sulla risoluzione dello schermo.

I suggerimenti sono ovunque, i suggerimenti lo sono sempre

Per i pulsanti, in particolare sulle barre degli strumenti (come la barra degli strumenti), è necessario impostare un suggerimento in modo che sia sempre chiaro il motivo per cui questo o quel pulsante sono necessari.

Spettro dei colori

Non dipingere componenti sul modulo in tutti i colori dell'arcobaleno. Questo stanca gli occhi e disperde l'attenzione dell'utente. Non sembra bello. L'evidenziazione viene utilizzata quando è necessario attirare l'attenzione dell'utente su un determinato elemento o una certa parte della finestra. Ad esempio, colorare i record in cui gli errori sono presenti in rosso chiaro o, al contrario, i record in cui la verifica ha avuto esito positivo con il colore verde chiaro.

Conclusione

Esiste un ottimo metodo che ti consente di trovare i difetti del programma in generale e l'interfaccia in particolare. È semplice: immagina di essere al posto dell'utente e per mezz'ora prova a lavorare come funziona. Ancora meglio se l'utente è a portata di mano (ad esempio, lavora nella stessa organizzazione). In questo caso, siediti accanto a lui, ma piuttosto che a lui, e cerca di fare il suo lavoro. Immettere i dati, modificarli, visualizzare report, ecc. Se non sai come farlo nel modo giusto, chiedi al tuo utente. Non eseguire una o due operazioni dello stesso tipo, come nella modalità debug, ma 20-30, o anche più operazioni diverse, in un ordine diverso. Dimentica di inserire qualcosa o inseriscilo in modo errato e guarda come il programma reagirà ad esso. Vedrai rapidamente i punti deboli del tuo programma.

L'autore dell'articolo ha automatizzato il lavoro del comitato di selezione all'università e ha trascorso 3-4 ore al giorno nel comitato di selezione per il primo anno di introduzione del programma, registrando i candidati, compilando i loro dati personali e fornendo loro rapporti di esame. E nel restante orario di lavoro, ha corretto errori e carenze. Credetemi, l'anno prossimo non ci sono praticamente problemi. È stato lo stesso con l'introduzione del modulo personale.

Quindi, ricorda l'usabilità per gli utenti. Lascia che sia facile e piacevole lavorare con i tuoi programmi.

Creatura interfaccia l'utente decide di scegliere dalla tavolozza dei componenti i componenti Delphi necessari per il funzionamento del programma interfaccia anche la gestione interfaccia visualizzare le informazioni e trasferirle nel modulo con il layout successivo.

L'interfaccia utente che crei dovrebbe utilizzare elementi standard familiari agli utenti e garantire la massima praticità. Tutto ciò è in definitiva determinato da un criterio come l'efficacia dell'interfaccia: il massimo risultato con il minimo sforzo.
I principi per la creazione di un'interfaccia intuitiva sono noti. Tre principi di base possono essere considerati i principi più generali durante la creazione di interfacce utente:

  1. Il programma dovrebbe aiutare a completare l'attività e non diventare questa attività.
  2. Quando lavora con il programma, l'utente non dovrebbe sentirsi un pazzo.
  3. Il programma dovrebbe funzionare in modo che l'utente non consideri il computer un pazzo.
Primo principio - questa è la cosiddetta "trasparenza" dell'interfaccia. L'interfaccia utente dovrebbe essere intuitiva, facile da imparare e non creare problemi per l'utente che dovrà superare nel processo. Utilizzare componenti standard, senza decorazioni eccessive, applicare i soliti metodi di controllo utilizzati da programmi simili e si raggiungeranno i criteri di prestazione primo principio.

Secondo principio sta nel trascurare le capacità intellettuali degli utenti. Dalla mia esperienza, so che spesso gli utenti non solo non sanno come lavorare al computer, ma hanno semplicemente paura di fare qualcosa da soli. Pertanto, l'interfaccia utente dovrebbe essere il più amichevole possibile.
Inoltre, le paure degli utenti sono spesso giustificate, poiché il costo del programma e del computer stesso non possono essere confrontati con il costo, ad esempio, creato dagli sforzi a lungo termine del database. Questo è il motivo per cui il programmatore, durante la creazione dell'interfaccia utente, deve sempre incorporare nel programma la "protezione contro gli sciocchi" - da azioni errate e da input dell'utente di dati errati. Ma alcuni programmatori sono troppo entusiasti di tale protezione, lo rendono troppo invadente e, di conseguenza, il programma ricorda il famoso "passo a sinistra, il passo a destra è considerato una via di fuga"! E ciò che il programmatore crea come soluzione al problema, inizia a creare problemi.
Per rispettare secondo principio non è necessario consentire al programma di "correggere" le azioni dell'utente e indicare cosa fare esattamente con lui, guidandole in un quadro ristretto. Inoltre, non si dovrebbe essere eccessivamente trascinati dall'output di messaggi informativi-suggerimenti, in particolare quelli di dialogo, questo distrae l'utente dal lavoro. Ed è meglio prevedere l'opzione di disabilitare i prompt.

Terzo principio è creare un programma con le maggiori capacità "mentali" possibili. Nonostante il rapido sviluppo della tecnologia informatica, anche i programmi ampiamente distribuiti possono essere chiamati condizionatamente solo con intelligenza artificiale. Interferiscono con il lavoro dell'utente mostrando finestre di dialogo con domande sciocche che sono sconcertanti anche nelle situazioni più semplici. Di conseguenza, gli utenti nel loro cuore esclamano: "Bene, questa stupida macchina!"
Personalmente, sono irritato dalle domande costanti di quasi tutti gli editor di testo sull'opportunità di salvare il testo modificato, sebbene il testo originale e quello attuale non differiscano per un simbolo. Sì, ho composto qualcosa, ma poi ho restituito tutto indietro, davvero è impossibile capirlo! Devo controllare se non ho rovinato nulla.

Prova ad aderire alle seguenti regole:

Elementi di interfaccia standard
Utilizzare i componenti standard per questo elemento di interfaccia. Dopo aver incontrato il tuo programma, l'utente non perderà tempo a conoscerlo, ma inizierà immediatamente a lavorare - questo è uno dei segni di un programma creato professionalmente.
Piccola tavolozza degli strumenti
Cerca di non usare troppi componenti diversi. E ovviamente, usando da qualche parte in un posto un componente standard, in un caso simile lo usi anche.
Stessa distanza tra i controlli
Posizionare gli elementi dell'interfaccia alla stessa distanza tra loro. I componenti sparsi in modo orribile creano la sensazione di un prodotto non professionale. Al contrario, il posizionamento accuratamente verificato sulla forma di pulsanti, interruttori, caselle di controllo e altri componenti che compongono l'interfaccia è un segno di qualità del lavoro.
TabOrder. L'ordine "corretto"
TabOrder - questo è l'ordine in cui il cursore dello schermo si sposta attraverso i controlli quando viene premuto un tasto linguetta. In un programma scritto correttamente, il cursore si sposta, seguendo la logica del lavoro dell'utente con il programma. Quando si crea un programma, un programmatore cambia spesso componenti, ne rimuove alcuni, ne aggiunge altri secondo necessità. Di conseguenza, nel programma finito, il cursore salta casualmente attorno al modulo. Al completamento del programma, non dimenticare di configurare TabOrder.
Selezione del carattere
I caratteri lasciano soli. I caratteri Delphi predefiniti stessi sono adatti a qualsiasi sistema su cui è possibile eseguire il programma. Usa il grassetto per evidenziare solo elementi importanti. L'applicazione è corsivo e specialmente sottolineaturache l'utente può prendere per un collegamento ipertestuale è di cattivo gusto.
Selezione del colore
Per quanto riguarda i colori degli elementi dell'interfaccia, così come nel caso dei caratteri, è meglio lasciarli standard, per impostazione predefinita. Delphi utilizza la tavolozza di sistema di Windows e l'utente, modificandolo, regolerà facilmente i colori per se stesso.
Gestione alternativa
Un programma creato professionalmente dovrebbe poter essere controllato non solo con il mouse, ma anche dalla tastiera. Non ci dovrebbero essere funzioni accessibili solo con l'esecuzione del mouse (il disegno negli editor grafici non conta!). Per le funzioni più utilizzate, è necessario fornire "tasti di scelta rapida" per il loro accesso rapido.
Mattoni di interfaccia
Per quanto riguarda gli elementi specifici dell'interfaccia utente, la qualità dell'interazione dell'utente con il programma dipende da: E ora voglio mostrare quali strumenti offre Delphi per la gestione dei componenti sul modulo, la loro posizione relativa e il comportamento del cursore quando viene premuto un tasto linguetta.

Per disporre i componenti nell'ordine corretto l'uno rispetto all'altro, innanzitutto è necessario evidenziarli. È possibile trascinare semplicemente il mouse sull'area del modulo che contiene i componenti selezionati. O tenendo premuto " Cambio", punta con lo stesso mouse ogni componente da selezionare. Clic ripetuto del mouse sul componente selezionato (quando premuto" Cambio") rimuove la selezione da essa.

I componenti selezionati possono essere gestiti nel loro insieme: spostarsi all'interno del modulo, assegnare un valore alle stesse proprietà, copiare (per l'installazione, ad esempio, in un altro modulo), persino eliminare.

Ora fai clic con il tasto destro su uno dei componenti e dal menu "pop-up" seleziona Posizione -\u003e Allinea ... Viene visualizzata una finestra di dialogo che consente di regolare la posizione dei componenti nel gruppo in orizzontale e in verticale. Ad esempio, dobbiamo allineare i nostri quattro pulsanti a sinistra e assicurarci che ci sia la stessa distanza verticale tra loro. Per fare ciò, selezionare i pulsanti di opzione Orizzontale: lati sinistro e Vertikal: spazio equamente.

Selezione dell'oggetto Centro, sistemeremo i componenti in modo che i loro centri si trovino sulla stessa linea in senso orizzontale o verticale e il punto Centra nella finestra sposta i componenti al centro della finestra, anche in orizzontale o in verticale.

Nella stessa riga di menu linguetta Order ... fa apparire una finestra di dialogo che controlla il movimento del cursore sugli elementi dell'interfaccia quando viene premuto un tasto linguetta. Quando il modulo viene visualizzato sullo schermo, il cursore si troverà naturalmente sul componente situato sulla prima riga della finestra di dialogo. E poi si sposterà verso il basso nell'elenco. Nella finestra di dialogo, le due frecce blu su e giù controllano la posizione del componente selezionato. Selezionare il componente desiderato, utilizzare le frecce per spostarsi sulla riga desiderata nell'elenco e così via.

Quando si seleziona una voce di menu Controllo -\u003e appare un sottomenu composto da due elementi:

  • Portare in primo piano
  • Mandare indietro
Questi sono metodi componenti, disponibili anche a livello di codice. Button1.SendToBack sposta il pulsante sullo "sfondo" e Button1.BringToFront - portare in primo piano". Cioè, se un componente si trova sopra un altro, questi metodi cambiano il loro posto. I casi in cui ciò può applicarsi sono abbastanza ovvi.

solo per il risultato

scadenze strette

Trasparenza

attuazione del progetto

supporto tecnico come regalo

Programmazione, miglioramenti della consultazione 1C

Come lavoriamo

1. Discutiamo il problema per telefono. Se si dispone dell'accesso remoto, mostrare sullo schermo del computer.

2. Valutiamo il lavoro in rubli, se il progetto è grande, in caso contrario, il numero approssimativo di ore.

3. Facciamo il lavoro.

4. Accettate lavori nel vostro programma, se ci sono difetti, li correggeremo.

5. Fatturiamo che paghi.

Costo del lavoro

1. Tutti i lavori sono suddivisi in 3 categorie: consultazione, aggiornamento di una configurazione standard, sviluppo o programmazione di un nuovo rapporto, elaborazione, pulsanti, ecc.

3. Per lavori di durata superiore a 10 ore, un'attività tecnica è precompilata con una descrizione e il costo del lavoro. Il lavoro inizia dopo l'approvazione dei termini di riferimento con te.

Supporto tecnico

1. Se riscontri errori in lavori precedentemente accettati, entro 3 mesi li correggiamo gratuitamente.

2. Per i clienti abituali, correggiamo gratuitamente eventuali difetti nel nostro lavoro durante tutto l'anno.

Programmi per la gestione della tua azienda.

Acquista 1C: Enterprise

Siamo un rivenditore ufficiale di 1C, è possibile acquistare vari prodotti software e licenze da noi. Oltre all'acquisto di una "scatola", ti aiuteremo a configurare il programma, consultare e configurare le impostazioni di base.

  • Contabilità
  • Store Automation
  • Vendita all'ingrosso
  • La guida all'installazione e alla configurazione iniziale è inclusa nel pacchetto!
  • Ottimizzare le configurazioni in base alle esigenze del cliente, sviluppando nuovi moduli in assenza delle funzioni necessarie nella configurazione standard.
1c contabilità 1C: gestione commerciale 1C: vendita al dettaglio 1C: Stipendio e gestione delle risorse umane
Da 3300 rub. Da 6700 rub. Da 3300 rub. Da 7400 rub.

Fornire un server.

Server di configurazione istantaneo + 1C.

Nessun server? Non importa, selezioniamo e configuriamo rapidamente il server nel cloud. Pagando una piccola somma, ottieni una soluzione molto affidabile.

  • Disponibilità 24 \\ 7
  • Non è necessario mantenere il proprio amministratore di sistema (il risparmio coprirà i costi del server).
  • Rapida configurazione e installazione di 1C sul server, dopo 3 giorni avrai già un sistema completamente funzionante.
  • In qualsiasi momento, è possibile passare al server locale se la soluzione non funziona.

SMS dal tuo 1C

Vuoi che i clienti vengano informati su promozioni e sconti? I clienti non tornano? Imposta l'invio di SMS direttamente da 1C!

La nostra azienda sarà in grado di configurare in breve tempo l'invio di SMS ai propri clienti direttamente da 1C. Esempi di eventi che possono essere automatizzati:

  • Grazie per l'acquisto e bonus immediatamente dopo il prossimo acquisto.
  • Accumulo di bonus sulla carta come regalo per il tuo compleanno \\ ad un altro giorno significativo o festivo.
  • Notifica di ricevimento della merce in magazzino.
  • Scadenza del bonus regalo.
  • Notifica di ricezione del pagamento anticipato e prenotazione della merce.
  • Indirizzo con le indicazioni per il negozio \\ ufficio, numeri di telefono.
  • Eccetera.

L'impostazione in 1C può essere effettuata dai nostri specialisti o dai nostri dipendenti. Puoi conoscere le tariffe nella pagina Tariffe SMS.

  • Garanzia di consegna SMS, il denaro viene ritirato solo per gli SMS consegnati.
  • Fatturazione separata di ciascun SMS.
  • Riempi l'equilibrio in molti modi.
  • Visualizza la cronologia di tutti gli SMS inviati in qualsiasi momento.
  • Il nome del mittente anziché il numero digitale sul telefono del destinatario del messaggio.

Uno dei punti di forza dell'ambiente di programmazione Delphi è la sua architettura aperta, grazie alla quale Delphi consente una sorta di metaprogrammazione, che consente di "programmare l'ambiente di programmazione". Questo approccio porta Delphi a un livello completamente nuovo di sistemi di sviluppo di applicazioni e consente di incorporare strumenti aggiuntivi in \u200b\u200bquesto prodotto che supportano quasi tutte le fasi della creazione di sistemi applicativi. Una gamma così ampia di opportunità si apre grazie al concetto delle cosiddette interfacce aperte implementate in Delphi, che sono il collegamento tra l'IDE (Integrated Development Environment) e gli strumenti esterni.

Questo articolo si concentra sulle interfacce aperte di Delphi e fornisce una panoramica delle loro capacità. Delphi definisce sei interfacce aperte: Interfaccia strumento, Interfaccia di progettazione, Interfaccia esperta, Interfaccia file, Interfaccia di modifica e Interfaccia controllo versione. È improbabile che nell'ambito di questo articolo saremo in grado di coprire in dettaglio e illustrare le capacità di ciascuno di essi. I codici sorgente di Delphi ti aiuteranno a comprendere meglio i problemi in discussione, dal momento che gli sviluppatori hanno fornito loro commenti dettagliati. Le dichiarazioni di classi che rappresentano interfacce aperte sono contenute nei moduli corrispondenti nella directory ... \\ Delphi \\ Source \\ ToolsAPI. L'interfaccia di progettazione (modulo DsgnIntf.pas) fornisce strumenti per la creazione di editor di proprietà ed editor di componenti.

L'editor delle proprietà e dei componenti è un argomento degno di una discussione separata, pertanto ricordiamo che l'editor delle proprietà controlla il comportamento della finestra di ispezione degli oggetti quando si tenta di modificare il valore della proprietà corrispondente e l'editor dei componenti viene attivato facendo doppio clic con il pulsante sinistro del mouse sull'immagine del componente posizionato nel modulo. L'interfaccia controllo versione (modulo VCSIntf.pas) è progettata per creare sistemi di controllo versione. A partire dalla versione 2.0, Delphi supporta il sistema di controllo della versione integrato Intersolv PVCS, quindi nella maggior parte dei casi non è necessario sviluppare il proprio sistema. Per questo motivo, ometteremo anche la discussione sull'interfaccia di controllo versione. L'interfaccia file (modulo FileIntf.pas) consente di ridefinire il file system IDE funzionante, che consente di scegliere il proprio modo di archiviare i file (ad esempio nei campi Memo sul server di database). L'interfaccia di modifica (modulo EditIntf.pas) consente di accedere al buffer del codice sorgente, che consente di analizzare il codice e generarlo, determinare e modificare la posizione del cursore nella finestra dell'editor del codice e controllare anche la selezione sintattica del testo di origine.

Le classi speciali forniscono interfacce ai componenti posizionati nel modulo (determinazione del tipo di componente, ottenimento di collegamenti ai componenti padre e figlio, accesso alle proprietà, attivazione del focus, cancellazione, ecc.), Al modulo stesso e al file di risorse del progetto. Inoltre, l'interfaccia di modifica consente di identificare i cosiddetti notificatori modulari che determinano la reazione a tali eventi come la modifica del testo di origine di un modulo, la modifica di un modulo, la ridenominazione di un componente, il salvataggio, la ridenominazione o l'eliminazione di un modulo, la modifica di un file di risorse del progetto, ecc. Interfaccia strumento (modulo ToolIntf. pas) fornisce agli sviluppatori strumenti per ottenere informazioni generali sullo stato IDE ed eseguire azioni come l'apertura, il salvataggio e la chiusura di progetti e singoli file, la creazione di un modulo, la ricezione di informazioni sul progetto corrente (numero di moduli e moduli, i loro nomi, ecc.) , registrazione del file system, organizzazione delle interfacce per i singoli moduli, ecc. Oltre ai notificanti modulari, Tool Interface definisce i notificatori aggiuntivi che informano su eventi come l'apertura / chiusura di file e progetti, il caricamento e il salvataggio del file desktop del progetto, l'aggiunta / rimozione di moduli di progetto, l'installazione / disinstallazione di pacchetti, la compilazione di un progetto e a differenza dei notificatori modulari, i notificatori aggiuntivi consentono di annullare l'esecuzione di alcuni eventi.

Inoltre, l'interfaccia degli strumenti fornisce l'accesso al menu principale IDE Delphi, consentendo di aggiungere ulteriori elementi. L'interfaccia Expert (modulo ExptIntf.pas) è la base per la creazione di esperti: moduli software che sono integrati nell'IDE per espandere la sua funzionalità. Un esempio di esperto è la Creazione guidata modulo database Delphi, che genera un modulo per la visualizzazione e la modifica del contenuto di una tabella del database. Dopo aver definito la classe di esperti, è necessario assicurarsi che Delphi "impari" sul nostro esperto. Per fare ciò, è necessario registrarlo chiamando la procedura RegisterLibraryExpert, passandogli un'istanza della classe expert come parametro. A titolo di esempio, creiamo un semplice esperto nello stile esStandard, che, quando si seleziona la voce di menu corrispondente, Delphi visualizza un messaggio che è in esecuzione. Come puoi vedere dalla tabella sopra, lo stile esStandard richiede di sovrascrivere sei metodi:

Affinché l'esperto sia "potenziato", è necessario selezionare la voce di menu Componente / Installa componente ..., selezionare il modulo contenente l'esperto nella finestra di dialogo Sfoglia (nel nostro caso exmpl_01.pas), fare clic su OK e dopo aver compilato il pacchetto dclusr30.dpk nel menu principale di Delphi, nella sezione Aiuto, dovrebbe apparire la voce Simple Expert 1, quando selezionata, appare il messaggio informativo "Standard Expert iniziato!". Perché Delphi inserisca una voce di menu esperto nella sezione Guida rimane un mistero. Se non ti piace il fatto che la voce di menu appaia ovunque Delphi e non dove lo desideri, è possibile la seguente opzione: crea un esperto nello stile del componente aggiuntivo, che esclude la creazione automatica della voce di menu e aggiungi la voce di menu "manualmente" utilizzando gli strumenti dell'interfaccia dello strumento. Ciò ti consentirà di specificare la posizione del nuovo elemento nel menu principale in modo arbitrario.

Per aggiungere una voce di menu, utilizzare la classe TIToolServices - la base dell'interfaccia dello strumento - e le classi TIMainMenuIntf, TIMenuItemIntf che implementano interfacce per il menu principale dell'IDE e i suoi elementi. L'istanza ToolServices della classe TIToolServices viene creata dall'IDE stesso quando viene inizializzata. La responsabilità di rilasciare le interfacce al menu principale di Delphi e ai suoi elementi è interamente a carico dello sviluppatore. Lungo la strada, compliceremo un po 'il carico di lavoro dell'esperto: quando attiva la sua voce di menu, fornirà informazioni sul nome del progetto attualmente aperto nell'ambiente: in questo esempio, la funzione AddIDEMenuItem è al centro della scena, aggiungendo una voce di menu al menu principale di IDE Delphi. Come parametri, vengono passati ad esso il testo di una nuova voce di menu, il suo identificatore, l'identificatore della voce prima della quale viene inserita una nuova voce, la rappresentazione simbolica della chiave, che insieme al tasto Ctrl per accedere rapidamente alla nuova voce, e un gestore di eventi corrispondente alla selezione della nuova voce. Abbiamo aggiunto una nuova voce di menu alla sezione Visualizza davanti alla voce Orologi.

Ora conosciamo i notificanti. Definire un notificatore aggiuntivo che tiene traccia degli orari di chiusura / apertura dei progetti e regola di conseguenza il campo in cui è memorizzato il nome del progetto attivo (ometteremo per brevità l'implementazione di metodi che non sono cambiati rispetto all'esempio precedente): Per implementare il notificatore, abbiamo definito la classe TAddInNotifier, che è un discendente TIAddInNotifier e sovrapposto al metodo FileNotification. L'IDE chiamerà questo metodo ogni volta che si verifica un evento, al quale può rispondere la notifica del componente aggiuntivo (ciascuno di questi eventi è indicato da una costante corrispondente di tipo TFileNotification). Il campo Esperto nella classe TAddInNotifier viene utilizzato per il feedback con l'esperto (metodo TAddInNotifier.FileNotification). Nel distruttore esperto, la notifica del notificatore viene rimossa e il notificatore viene distrutto. E ora illustriamo l'uso di notificatori modulari. Creiamo un esperto del componente aggiuntivo che visualizza i messaggi su ogni atto di salvataggio di un file di progetto (non forniamo una spiegazione dei metodi che già conosciamo): In questo esempio, un esperto del componente aggiuntivo monitora gli eventi corrispondenti all'apertura / chiusura di progetti.

Ogni volta che viene aperto un progetto, viene registrato un notificatore modulare corrispondente al file di progetto. In termini di implementazione, i notificatori modulari sono simili ai notificanti add-in: definiamo la classe TModuleNotifier, che è un discendente di TIModuleNotifier e sovrascriviamo i suoi metodi Notify e ComponentRenamed. L'IDE chiama il metodo di notifica quando si verificano determinati eventi relativi a questo modulo; All'interno di questo metodo, viene determinata la reazione a un particolare evento. Il metodo ComponentRenamed viene chiamato quando viene modificato il nome del componente che giace sul modulo del modulo. Si noti che non utilizziamo questo metodo, ma dobbiamo sostituirlo; altrimenti, quando il nome del componente cambia, verrà chiamato il metodo astratto della classe base, il che porterà a conseguenze imprevedibili.

La registrazione di un notificatore modulare è un processo un po 'più complicato rispetto alla registrazione di un notificatore aggiuntivo: prima otteniamo l'interfaccia del modulo (TIModuleInterface), quindi registriamo il notificatore utilizzando l'interfaccia del modulo. Quando il progetto viene chiuso, la registrazione del notificatore modulare viene rimossa (di nuovo usando TIModuleInterface) e il notificatore viene distrutto. In conclusione, mostriamo come è possibile determinare la posizione del cursore nella finestra dell'editor del codice. Creiamo un esperto che, quando si sceglie la voce di menu appropriata, visualizzerà un messaggio contenente il nome del file attivo e la posizione del cursore in esso (viene fornita l'implementazione dei soli metodi essenziali per questo esempio): Per determinare la posizione del cursore, dovremmo ottenere la seguente sequenza di interfacce: module interface (TIModuleInterface); interfaccia dell'editor di codice (TIEditorInterface); interfaccia per la presentazione del modulo nella finestra dell'editor (TIEditView).

Se un file con il testo di origine (* .pas) è attivo quando si seleziona una voce di menu Esperto, viene visualizzato un messaggio contenente il nome del file attivo e la posizione corrente del cursore in esso. Se il file non pas è attivo, il messaggio non viene visualizzato. Per ottenere il nome del file attivo, utilizzare il metodo GetCurrentFile della classe TIToolServices. Questo conclude la nostra discussione su come usare interfacce aperte. Il CD-ROM contiene il codice sorgente per tutti gli esempi precedenti. Il CD-ROM contiene anche un esempio più complesso e dettagliato, contenente un esperto aggiuntivo che consente all'utente di aggiungere un segnalibro al codice sorgente dei moduli Delphi. Una guida rapida all'installazione e all'utilizzo di Bookmark Expert si trova nel file bkmrks97.htm. Quindi, questo articolo delinea interfacce aperte e fornisce esempi del loro uso. Ancora una volta, grazie alla disponibilità del codice sorgente per interfacce aperte, puoi facilmente capire i dettagli che ti interessano. Speriamo che la varietà di funzionalità fornite dalle interfacce aperte darà origine a più di un'idea audace e utile.

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam