Come si fa a recuperare un nuovo nome dell'unità da strumenti open API di Delphi
Domanda
Ho scritto un mago in Delphi XE, e sta funzionando benissimo. Tuttavia, non ho ancora capito come accedere il nome generato predefinito unità (o nome del modulo o il nome del progetto), che OTA di Delphi può creare.
Nel mio vecchio-stile wizard sono stato in grado di chiamare ToolServices.GetNewModuleName alla scoperta di un'unità e la forma nome disponibile che potrei usare quando si generano i file di origine associati. Qual è l'equivalente in di oggi strumenti open API?
Secondo i commenti di unità ToolsAPI, mi dovrebbe restituire un vuoto dal metodo IOTAModuleCreator.GetImplFileName avere Delphi generare il nome del file. Sto tornando una stringa vuota da questo metodo, ma ancora non può vedere dove posso accedere al nome del file che Delphi è di generazione.
Soluzione
C'è un metodo specifico per ottenere una nuova forma e unità nome:
(BorlandIDEServices come IOTAModuleServices) .GetNewModuleAndClassName ( '', UnitIdent, FormName, filename);
che ho usato in alcuni esempi e sembra funzionare bene.
Altri suggerimenti
Il metodo IOTAModuleCreator.NewImplSource hanno un parametter "ModuleIdent", è il nome dell'unità.
Nel mio test, funziona come vi aspettavate (parametro ModuleIdent
nel metodo NewImplSource
riceve il nuovo nome dell'unità). Controllare nuovamente l'implementazione, in particolare verificare che:
- ritorna
IOTACreator.GetUnnamed
True - ritorna
IOTACreator.GetExisting
False -
IOTACreator.GetCreatorType
restituisce l'identificatore appropriato (sUnit
,sForm
, ecc) - Non sono sicuro di questo, ma potrebbe essere importante, anche
Ecco è un esempio di lavoro. Ho appena controllato e il codice sembra ancora al lavoro come previsto in Delphi XE.