Newsgroup: it.comp.lang.vo-clipper
Titolo: Imaging, OLE e dintorni

Per velocizzare il caricamento di ReportPro prima di ogni suo utilizzo, nei
programmi che faccio lo istanzio nel PostInit della shell principale, dove
oReportPro è definita global, ad esempio:
METHOD PostInit(oParent,uExtra) CLASS StandardShellWindow
 oReportPro:=rp3Runtime{SELF}
oReportPro:HyperLabel:=HyperLabel{#rp3Runtime,"rp3Runtime",NULL_STRING,NULL_
STRING}
 oReportPro:CreateEmbedding("ReportPro.Runtime")
 oReportPro:InitAutoObject()
 oReportPro:SetReportStringAttribute(RPT_ATTR_PRINTER_NAME, oPrinter:Device)
RETURN NIL
In questo modo ho avuto dei notevoli miglioramenti, specialmente nelle
macchine più datate.
La stessa cosa vorrei fare con Imaging della Kodak invece di caricarmi,
prima di ogni visualizzazione, quello che automaticamente mi crea nella Init
della grande finestra utilizzata solo per la visualizzazione delle immagini,
ad esempio:
oDCOCX_Imaging1 := KodakImageEdit{SELF,ResourceID
                                {MAINDIALOG_OCX_IMAGING1,_GetInst()}}
oDCOCX_Imaging1:HyperLabel := HyperLabel
{#OCX_Imaging1,NULL_STRING,NULL_STRING,NULL_STRING}
oDCOCX_Imaging1:CreateFromAppDocStorage(OLEAppDocStorage
                                {__MDFFILENAME__, "MainDialog",
"OCX_Imaging1"})
Qualcuno ha idea di come si possa fare ?
Grazie e buon lavoro a tutti
Claudio Carletta

[...]
Non conosco l'OCX di Imaging, pero' deduco che sia un OLEControl
giusto?
Essendo un controllo non lo puoi caricare senza una finestra
contenitrice.
Potresti inizializzare la finestra la finestra di visualizzazione
delle immagini all'avvio del programma e tenerla nascosta.
Quando ti serve, la visualizzi e il gioco dovrebbe essere fatto.
Alternativamente potresti provare con l'identificare il nome della
classe di automazione (es. non reale "Imaging.kodak") ed
istanziarlo utilizzando la classe OLEAutoObject.
E' solo un'idea....
Saluti
===============================================
Antonello Negrone - Biella - Italy
anto...@anc-software.it
www.anc-software.it

IO carico l'ocx nel postinit della finestra che deve contenere l'immagine,
esso deve essere visto come un OLE control... appunto. Poi (siccome tra il
Wang e il Kodak c'è qualche piccola differenza) mi creo una variabile che
conterrà il nome del sistema operativo che il PC usa, e srivo
 METHOD PostInit(oWindow,iCtlID,oServer,uExtra) CLASS MiaEditWindow
 IF SistemaOperativo = "WINDOWS 98" .or. SistemaOperativo = "WINDOWS 2000"
  SELF:oDCOLEObject1:CreateEmbedding("Imaging.EditCtrl.1")
  SELF:oDCOLEObject2:CreateEmbedding("Imaging.ScanCtrl.1")
 ELSEIF SistemaOperativo = "WINDOWS 95"
  SELF:oDCOLEObject1:CreateEmbedding("WangImage.EditCtrl.1")
  SELF:oDCOLEObject2:CreateEmbedding("WangImage.ScanCtrl.1")
 ENDIF
......
......
......
Naturalmente ti devi creare tutti i prototipi dei metodi con l'opzione
"generate Class" dell'opzione "Setup OLE control"
Ciao
Enio

.. dimenticavo ,
("Imaging.EditCtrl.1")  è la stringa con la quale viene registrato l' OCX
nel registry di Windows, e così vale per tutti gli OCX che vuoi "tirarti
dentro" alle tue applicazioni, questo se non sbaglio si chiama metodo a :
"compile time" ... più veloce !
cioè :
nella finestra ti crei lo spazio inserendo (dalla palette) un OLE Control .
poi fai il "Generate class" dall'opzione Setup OLE control e compili. Poi
vai nelle proprietà del controllo OLE appena messo nella finestra e alla
voce Inherit from... selezioni la classe dell'OCX appena creata.
Poi nel metodo postinit scrivi il codice di "aggancio"
  SELF:oDCOLEObject1:CreateEmbedding("Imaging.EditCtrl.1")    Tra le
parentesi devi mettere la stringa, ripeto, che trovi scritta nel registy di
Windows e che riguarda il controllo OLE .

OOPs .. dimenticavo .
