Vai al contenuto principale
I Visual Components sono implementati in FRE for Windows.
Component Synchronizer è un componente speciale che reagisce automaticamente ai diversi eventi dei Visual Components. È possibile collegare più Visual Components al Synchronizer e farli funzionare come un’unica applicazione. Non è necessario usare Component Synchronizer con tutti i componenti collegati, ma solo con quelli effettivamente utilizzati. Ad esempio, è possibile collegare solo Image Viewer tramite la proprietà ImageViewer e Text Editor tramite la proprietà TextEditor. Component Synchronizer non dispone di un’interfaccia utente. Non usa funzionalità interne dei Visual Components, ma solo la COM API dei componenti. Component Synchronizer funziona come descritto di seguito.

Quando un componente è collegato al Synchronizer tramite l’API

Se un componente o un oggetto è collegato a Component Synchronizer tramite:
In questo caso, la proprietà IComponentSynchronizer::ImageViewer viene impostata sull’oggetto ImageViewer specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
IImageViewer::ZoomRectEnabledTrue
IImageViewer::DocumentProcessingParamsIComponentSynchronizer::DocumentProcessingParams
IImageViewer::FRPageLa pagina di IComponentSynchronizer::Document con indice IComponentSynchronizer::PageIndex
In questo caso, la proprietà IComponentSynchronizer::ZoomViewer viene impostata sull’oggetto ZoomViewer specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
IZoomViewer::SymbolRectEnabledTrue
IZoomViewer::DocumentProcessingParamsIComponentSynchronizer::DocumentProcessingParams
IZoomViewer::FRPageLa pagina di IComponentSynchronizer::Document con indice IComponentSynchronizer::PageIndex
In questo caso, la proprietà IComponentSynchronizer::TextEditor viene impostata sull’oggetto TextEditor specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
ITextEditor::SynthesisParamsForDocumentIl valore della proprietà SynthesisParamsForDocument dell’oggetto IComponentSynchronizer::DocumentProcessingParams
ITextEditor::FRPageLa pagina di IComponentSynchronizer::Document con indice IComponentSynchronizer::PageIndex
In questo caso, la proprietà IComponentSynchronizer::TextValidator viene impostata sull’oggetto TextValidator specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
ITextValidator::SynthesisParamsForDocumentIl valore della proprietà SynthesisParamsForDocument dell’oggetto IComponentSynchronizer::DocumentProcessingParams
ITextValidator::FRDocumentIComponentSynchronizer::Document
In questo caso, la proprietà IComponentSynchronizer::DocumentViewer viene impostata sull’oggetto DocumentViewer specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
IDocumentViewer::FRDocumentIComponentSynchronizer::Document
IDocumentViewer::DocumentProcessingParamsIComponentSynchronizer::DocumentProcessingParams
IDocumentViewer::ActivePageLa pagina di IComponentSynchronizer::Document con indice IComponentSynchronizer::PageIndex
In questo caso, la proprietà IComponentSynchronizer::Document viene impostata sull’oggetto FRDocument specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
IImageViewer::FRPage IZoomViewer::FRPage ITextEditor::FRPage IDocumentViewer::ActivePageLa prima pagina di IComponentSynchronizer::Document
IComponentSynchronizer::PageIndex0
IDocumentViewer::FRDocument ITextValidator::FRDocumentIComponentSynchronizer::Document
In questo caso, la proprietà IComponentSynchronizer::DocumentProcessingParams viene impostata sull’oggetto DocumentProcessingParams specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
IImageViewer::DocumentProcessingParams IZoomViewer::DocumentProcessingParams IDocumentViewer::DocumentProcessingParamsIComponentSynchronizer::DocumentProcessingParams
ITextEditor::SynthesisParamsForDocument ITextValidator::SynthesisParamsForDocumentIl valore della proprietà SynthesisParamsForDocument dell’oggetto IComponentSynchronizer::DocumentProcessingParams
In questo caso, la proprietà IComponentSynchronizer::PageIndex viene impostata sul valore specificato, quindi vengono eseguite le operazioni seguenti:
La proprietàViene impostata su
IImageViewer::FRPage IZoomViewer::FRPage ITextEditor::FRPage IDocumentViewer::ActivePageLa pagina di IComponentSynchronizer::Document con indice IComponentSynchronizer::PageIndex

Quando un componente connesso genera un evento

Eventi dell’Image Viewer connesso:
Se Image Viewer genera l’evento OnMouseButtonUp, Component Synchronizer esegue le seguenti operazioni:
if( mouseButton == MBU_LeftButton && ZoomViewer != 0 ) {
 int documentX = 0;
 int documentY = 0;
 ImageViewer->ScreenToDocument( x, y, &documentX, &documentY );
 ZoomViewer->CenterOnDocumentPoint( documentX, documentY );
}
Se Image Viewer genera l’evento OnBlockSelectionChanged, Component Synchronizer esegue le seguenti operazioni:
if( selected == VARIANT_TRUE ) {
 if( textEditor != 0 ) {
  textEditor->ShowBlock( blockIndex, NotFound );
 }
}
Se Image Viewer genera l’evento OnTableCellsSelected, Component Synchronizer chiama il metodo ShowBlock dell’oggetto TextEditor con l’indice del Block selezionato e l’indice della cella in basso a destra.
Se Image Viewer genera l’evento OnAfterDblClick, Component Synchronizer esegue le seguenti operazioni:
if( textEditor != 0 ) {
 textEditor->ActivateOn( blockIndex, x, y );
}
Se Image Viewer genera l’evento OnActivePageChanged e le proprietà ZoomViewer, TextEditor, DocumentViewer dell’oggetto ComponentSynchronizer sono già state impostate, la proprietà FRPage o ActivePage del componente corrispondente viene impostata sulla pagina specificata del documento.
Se Image Viewer genera l’evento OnSelectTool, Component Synchronizer esegue le seguenti operazioni:
if( ZoomViewer == 0 ) {
 return;
}
IFRPagePtr curPage;
ZoomViewer->get_FRPage( &curPage );
if( curPage != 0 ) {
 ZoomViewer->put_ActiveTool( selectedTool );
}
Se Image Viewer genera l’evento OnOptionsChanged e le proprietà ZoomViewer, DocumentViewer, TextEditor, TextValidator dell’oggetto ComponentSynchronizer sono già state impostate, viene chiamato il metodo UpdateOptions degli oggetti ZoomViewer, DocumentViewer, TextEditor, TextValidator.
Eventi dello Zoom Viewer connesso:
Se Zoom Viewer genera l’evento OnVisibleDocumentAreaChange, Component Synchronizer esegue le seguenti operazioni:
if( ImageViewer != 0 ) {
 ImageViewer->put_ZoomRect( visibleRect );
 if( isInFocus ) {
  ImageViewer->ShowDocumentArea( visibleRect );
 }
}
Se Zoom Viewer genera l’evento OnBlockSelectionChanged, Component Synchronizer esegue le seguenti operazioni:
if( selected == VARIANT_TRUE ) {
 if( textEditor != 0 ) {
  textEditor->ShowBlock( blockIndex, NotFound );
 }
}
Se Zoom Viewer genera l’evento OnTableCellsSelected, Component Synchronizer chiama il metodo ShowBlock dell’oggetto TextEditor con l’indice del Block selezionato e l’indice della cella in basso a destra.
Se Zoom Viewer genera l’evento OnAfterDblClick, Component Synchronizer esegue le seguenti operazioni:
if( textEditor != 0 ) {
 textEditor->ActivateOn( blockIndex, x, y );
}
Se Zoom Viewer genera l’evento OnActivePageChanged e le proprietà ImageViewer, TextEditor e DocumentViewer dell’oggetto ComponentSynchronizer sono già state impostate, la proprietà FRPage o ActivePage del componente corrispondente viene impostata sulla pagina specificata del documento.
Se Zoom Viewer genera l’evento OnSelectTool, Component Synchronizer esegue le seguenti operazioni:
if( ImageViewer == 0 ) {
 return;
}
IFRPagePtr curPage;
ImageViewer->get_FRPage( &curPage );
if( curPage != 0 ) {
 ImageViewer->put_ActiveTool( selectedTool );
}
Se Zoom Viewer genera l’evento OnOptionsChanged e le proprietà ImageViewer, DocumentViewer, TextEditor e TextValidator dell’oggetto ComponentSynchronizer sono già state impostate, viene chiamato il metodo UpdateOptions degli oggetti ImageViewer, DocumentViewer, TextEditor e TextValidator.
Eventi del Document Viewer connesso:
Se Document Viewer genera l’evento OnActivePageChanged e le proprietà ImageViewer, ZoomViewer e TextEditor dell’oggetto ComponentSynchronizer sono già state impostate, la proprietà FRPage del componente corrispondente viene impostata sulla pagina specificata del documento.
Se Document Viewer genera l’evento OnDocumentChanged e le proprietà ImageViewer, ZoomViewer, TextEditor e TextValidator dell’oggetto ComponentSynchronizer sono già state impostate:
  • la proprietà FRDocument dell’oggetto TextValidator viene impostata sul nuovo documento
  • le proprietà FRPage degli oggetti ImageViewer, ZoomViewer e TextEditor e la proprietà ActivePage dell’oggetto DocumentViewer vengono impostate sulla prima pagina del nuovo documento
Se Document Viewer genera l’evento OnOptionsChanged e le proprietà ImageViewer, ZoomViewer, TextEditor e TextValidator dell’oggetto ComponentSynchronizer sono già state impostate, viene chiamato il metodo UpdateOptions degli oggetti ImageViewer, ZoomViewer, TextEditor e TextValidator.
Eventi del Text Editor connesso:
Se Text Editor genera l’evento OnEditorBlockChanged, ComponentSynchronizer esegue le seguenti operazioni:
  1. Se le proprietà ImageViewer e ZoomViewer dell’oggetto ComponentSynchronizer sono già state impostate, viene chiamato il metodo SetSelectedBlocksIndices degli oggetti ImageViewer e ZoomViewer per il blocco specificato.
  2. Se si tratta di un blocco di tabella, viene chiamato il metodo SetSelectedCells degli oggetti ImageViewer e ZoomViewer per la cella selezionata.
  3. Quindi viene chiamato il metodo ShowDocumentArea degli oggetti ImageViewer e ZoomViewer.
Se Text Editor genera l’evento OnSymbolSelected, Component Synchronizer esegue le seguenti operazioni:
if( ZoomViewer != 0 ) {
 ZoomViewer->put_SymbolRect( symbolRect );
}
if( ImageViewer != 0 ) {
 ImageViewer->ShowDocumentArea( symbolRect );
}
if( ZoomViewer != 0 ) {
 ZoomViewer->ShowDocumentArea( symbolRect );
}
Se Text Editor genera l’evento OnActivePageChanged e le proprietà ImageViewer, ZoomViewer e DocumentViewer dell’oggetto ComponentSynchronizer sono già state impostate, la proprietà FRPage o ActivePage del componente corrispondente viene impostata sulla pagina del documento specificata.
Se Text Editor genera l’evento OnOptionsChanged e le proprietà ImageViewer, ZoomViewer, DocumentViewer e TextValidator dell’oggetto ComponentSynchronizer sono già state impostate, viene chiamato il metodo UpdateOptions degli oggetti ImageViewer, ZoomViewer, DocumentViewer e TextValidator.
Eventi del Text Validator connesso:
Se Text Validator genera l’evento OnSymbolSelected, Component Synchronizer esegue le seguenti operazioni:
if( ZoomViewer != 0 ) {
 ZoomViewer->put_SymbolRect( symbolRectangle );
}
Se Text Validator genera l’evento OnSelectionChanged, Component Synchronizer esegue le seguenti operazioni:
int symbolPos;
IEditorPosition* nextPosition;
position->get_Symbol( &symbolPos );
nextPosition->put_Symbol( symbolPos + length );
if( textEditor != 0 ) {
 textEditor->SetSelection( position, nextPosition );
}
Se Text Validator genera l’evento OnActivePageChanged e le proprietà ImageViewer, ZoomViewer, TextEditor e DocumentViewer dell’oggetto ComponentSynchronizer sono già state impostate, la proprietà FRPage o ActivePage del componente corrispondente viene impostata sulla pagina del documento specificata.
Se Text Validator genera l’evento OnDocumentChanged e le proprietà ImageViewer, ZoomViewer, TextEditor e DocumentViewer dell’oggetto ComponentSynchronizer sono già state impostate:
  • la proprietà FRDocument dell’oggetto DocumentViewer viene impostata sul nuovo documento
  • la proprietà FRPage degli oggetti ImageViewer, ZoomViewer e TextEditor e la proprietà ActivePage dell’oggetto DocumentViewer vengono impostate sulla prima pagina del nuovo documento
Se Text Validator genera l’evento OnOptionsChanged e le proprietà ImageViewer, ZoomViewer, TextEditor e DocumentViewer dell’oggetto ComponentSynchronizer sono già state impostate, viene chiamato il metodo UpdateOptions degli oggetti ImageViewer, ZoomViewer, TextEditor e DocumentViewer.

Vedi anche

ComponentSynchronizer