Arbeiten mit DDE- und OLE DDE- und OLE-Funktionen und Einsatz als OLE-Server von Microsoft Visual FoxPro
Diese Schulung dient der Einführung in die Ansteuerung von anderen Anwendungen wie WinWord, Excel, Project, Outlook via OLE-Automation aus Microsoft Visual Foxpro
Themenübersicht DDE-Funktionsübersicht, Beispiel OLE-Automation mit MS WinWord, Beispiel OLE-Automation mit MS Excel, Beispiel MAPI und VFP OLE-Automation mit MS Outlook, Beispiel OLE-Automation mit MS Project OLE-Automation mit MS SQL-Server OLE-Automation mit MS Access FPOLE.DLL-Funktionsübersicht Remote OLE-Automation
Office Automation und Möglichkeiten der Anbindung von Software
Was ist Office Automation? Betriebssystem Standardanwendungen Textverarbeitung Tabellenkalkulation Terminverwaltung etc. Business Anwendungen Auftragsbearbeitung bzw. eigentliche Geschäfts-anwendung (Eigene Programmierung)
Möglichkeiten der Anbindung ODBC - Open Database Connectivity DDE - Dynamic Data Exchange OLE - Object Linking a. Embedding COM - Component Object Model DCOM - Distributed COM (Transport) ActiveX - „a new Word for OLE“
Kurze Übersicht über die DDE-Funktionen von Microsoft Visual FoxPro
DDE-Funktionsübersicht DDESetOption Safety, TimeOut DDEInitiate DDEExecute DDETerminate DDELastError DDESetTopic System, ggf. Document DDEPoke (Write) DDERequest (Read) Server: DDEAdvise (Topics) DDEEnabled
DDE-Initialisierung * ggf. =ddeSetOption( "TimeOut", 3000) *-- Fehlermeldungen abschalten =ddeSetOption( "Safety", .f.) *-- Prüfen ob WinWord schon geöffnet lhWord= ddeInitiate( "Winword", "System") if lhWord < 0 run /n7 &lcWordExe return endif =ddeTerminate( lhWord)
DDE-Ansteuerung if ddeExecute( lhWord, '[DateiNeu “&lcTemplate“]') ? ddeExecute( lhWord, '[BearbeitenGeheZu “Adresse_an“]') ? ddeExecute( lhWord, '[Einfügen “Firma GmbH“ ]') ? ddeExecute( lhWord, '[BearbeitenGeheZu “Adr_Ansch“]') ? ddeExecute( lhWord, '[Einfügen “Straße"]') *-- Und nun eine Variable/TabellenFeld einfügen lcOrt= “PLZ Wohnort" ? ddeExecute( lhWord, '[BearbeitenGeheZu “An_Ort“]') ? ddeExecute( lhWord, '[Einfügen “&lcOrt“]') endif
DDE-Set Topic * Hier gehts darum, Falls Winword geöffnet ist, das * gewünschte Dokument als Aktives Dokument für den DDE-Kanal * anzuwählen. Mit Hilfe der Topics kann festgestellt werden, * ob ein bestimmtes Dokument geöffnet ist lhWord= ddeInitiate( "Winword", "System") ? ddeExecute( lhWord, '[Dateiöffnen "&lcRngDoc"]') lcTopics= ddeRequest( lhWord, "topics") if .not. (upper( lcRngDoc) $ upper(lcTopics)) ? ddeTerminate( lhWord) return endif
Verschiedene DDE-Beispiele * -- setzen von Topic: Die Rechnung lh2= DDEINITIATE( "Winword", "&lcRngDoc") *-- An den Anfang des Dokuments gehen ? ddeExecute( lh2, '[BeginnDokument]') *-- An den Anfang der Zeile gehen ? ddeExecute( lh2, '[BeginnZeile]') *-- Markieren einschalten ? ddeExecute( lh2, '[MarkierungErweitern]') *-- bis zum Ende der Zeile markieren ? ddeExecute( lh2, '[EndeZeile]') *-- und nun den Inhalt der Markierung auslesen ? ddeExecute( lh2, '[BearbeitenTextMarke "Auslesen"]')
OLE-Automation Allgemein Vorbemerkungen zum Einsatz von OLE-Automation
Was ist OLE ? Client und Server Die Registry Objektbasiert Linked Objects Embedded Objects OLE 2 embedded objects in-place-editing
OLE Automation Allgemein Application-Objekt Collections - Child-Objektlisten Objekte Eigenschaften Methoden Funktionen (bei Application) Sprache beachten (bzw. setzen)
OLE-Automation mit WinWord Ansteuerung von WinWord via OLE-Automation aus Microsoft Visual FoxPro
Vorgängerversion WinWord 95 Objektmodell von Word nur Word.Basic interaktionsfähig Befehle von Word WordBasic DateiBeenden DateiNeu Dialoge (nur lesen, nicht schreiben (!)) Sprache beachten für WordBasic (!)
OLE-Automation mit WinWord Objektmodell von WinWord 97 Application Documents Paragraphs (Absätze) Range (Bereich von Zeichen) Chars Dialoge
Objektmodell von WinWord
Alternative WordBasic Für Anwendungen in WinWord 2.0 und WinWord 95: CreateObject(“Word.Application”) oBasic= oApp.WordBasic( <Befehl>) oBasic.FileOpen( <Pfad>) oBasic.FilePrint() oWord.Quit() Hilfe: WrdBasic.hlp WordBasic immer verfügbar
Hinweise zu WinWord Custom Document Properties
Beispiele mit WinWord Verschiedene Beispiele und Übungen zu WinWord mit Microsoft Visual FoxPro
Beispiele mit WinWord An/Abmelden bei Winword Koordinaten einstellen Dokumente öffnen Formate einstellen Bereich selektieren/Fonts Properties, Textmarken Tabellen Serienbriefe Sonstige Funktionen
An/Abmelden bei WinWord *-- Instanzierung einer Word Session oWord= CreateObject( "Word.Application.8") *-- Prüfen ob Instanzierung erfolgreich if isnull(oWord) return endif *-- Winword beenden oWord.Quit(0)
Koordinaten einstellen *-- Sichtbar machen und Koordinaten einstellen oWord.visible= .t. oWord.Left= 380 oWord.Width= 400 oWord.top= 1 oWord.Height= 540 *-- ggf. Visual FoxPro wegschalten _screen.visible = .F.
Dokumente öffnen *-- bestehendes Dokument öffnen owDok= oWord.Documents.open( “dokument") owDok.Close() *-- neues Dokument mit Standardvorlage erstellen owDok= oWord.Documents.Add() *-- neues Dokument mit Vorlage erstellen owDok= oWord.Documents.Add( "Word97.dot")
Formate einstellen *-- Format und Seitenränder des Dokuments setzen with owDok.PageSetup .Papersize= 7 && A4 .Orientation= 0 && Portrait *-- Seitenränder in Punkten angeben .LeftMargin=oWord.CentimetersToPoints( 2.5 ) .RightMargin=oWord.CentimetersToPoints( 2 ) .TopMargin=oWord.CentimetersToPoints( 2.5 ) .BottomMargin=oWord.CentimetersToPoints( 2 ) endwith
Bereiche selektieren *-- Bereich selektieren, Text einfügen oRange= owDok.Range oRange.InsertBefore("Hallo Teilnehmer") *-- Font für selektierten Bereich einstellen With oRange.Font .Bold = .t. .Name = "Arial" .Size = 24 EndWith
Properties, Textmarken * Properties.Add(Name,LinkToContent,Type,Value,LinkSource) *-- Suchen mit Schleife über Count, Exits gibt es nicht =owDok.CustomDocumentProperties.Add( "Name",.f.,4,“<Name>“ ) =owDok.CustomDocumentProperties.Add( "VName",.f.,4,“VName“) *-- Textmarken lcTextMarke= "Adresse" owDok.Bookmarks.Add( lcTextmarke, oRange) if owDok.Bookmarks.Exists( lcTextmarke) owDok.Bookmarks( lcTextmarke ).Select endif
Tabellen (1) *-- Eine Tabelle mit 3 Spalten und 5 Zeilen hinzufügen oTable= owDok.Tables.add( oRange, 5, 3) *-- Die Spaltenbreiten festlegen oTable.Columns(1).Width= oWord.CentimetersToPoints( 8) oTable.Columns(2).Width= oWord.CentimetersToPoints( 2) oTable.Columns(3).Width= oWord.CentimetersToPoints( 6) *-- Zeilenhöhe der Tabelle einstellen lnHeight= oWord.CentimetersToPoints( 1) for each oRow in oTable.Rows oRow.Height= lnHeight oRow.HeightRule= 2 && exact endfor
Tabellen (2) *-- und nun die Tabelle füllen *-- kann natürlich auch mit Daten einer DBF sein oTable.Cell( 1, 1).Range.Text= “W&B GmbH“ oTable.Cell( 2, 1).Range.Text= “Herrn Abb“ oTable.Cell( 3, 1).Range.Text= “Frankfurter Str. 21b“ oTable.Cell( 5, 1).Range.Text= “61476 Kronberg “
Serienbrief (1) lcSource= "C:\Projekt\Devcon\Merge.dbf" *OpenDataSource(Name, Format, ConfirmConversions, * ReadOnly, LinkToSource, AddToRecentFiles, ; * PasswordDocument, PasswordTemplate, Revert, * WritePasswordDocument, WritePasswordTemplate, * Connection, SQLStatement, SQLStatement1) with owDok.MailMerge .MainDocumentType = 0 && wdFormLetters .OpenDataSource( lcSource ) endwith * owDok.MailMerge.CreateDataSource( Name, Header) * lcHeader= "Name, Adresse, Postleitzahl, Ort, Land" * owDok.MailMerge.CreateDataSource( lcSource, lcHeader)
Serienbrief (2) *-- und nun die Tabelle füllen *-- kann natürlich auch mit Daten einer DBF sein * WDFieldType.WDMergeField= 59 * oTable.Cell( 1, 1).Range.Fields.Add( ; * Range, Type, Text) oRange= oTable.Cell( 1, 1) owDok.Mailmerge.Fields.Add( oRange, "CUST_ID") owDok.MailMerge.Execute() owDok.SaveAs( lcPath+ "Word9703") *-- Und nun das Dokument drucken owDok.PrintOut() && alternativ PrintPreview()
Sonstige Funktionen *-- Datei speichern als =owDok.SaveAs( "meindokument" ) *-- Dokument drucken =owDok.PrintOut() =owDok.PrintPreview()
OLE-Automation mit Excel Ansteuerung von Excel via OLE-Automation aus Microsoft Visual FoxPro
OLE-Automation mit Excel Excel-Objekte in der Registry: Application Sheet (Tabelle) WorkSpace (Arbeitsbereich) VBAModule Chart Template (Vorlage) Direkt erzeugbar mit CreateObject( )
Objektmodell von Excel
Hinweise zu Excel =SYS( 3005, 1033/1031) - Sprache Excel.Application.Visible Excel.InterActive für Anzeigemodus Anwender kann nicht eingreifen Excel.DisplayAlerts für Fehleranzeige geht bei WinWord leider nicht! FOR EACH MemVar IN Group
Beispiele mit Excel Verschiedene Beispiele und Übungen zu Excel mit Microsoft Visual FoxPro
Beispiele mit Excel Anmelden bei Excel Tabellen anlegen Werte einfügen Sonstige Funktionen
Anmelden bei Excel =sys( 3005, 1033) && Sprache Englisch oExcel= createObject( "Excel.Application") if isnull( oExcel) return .f. endif *-- Fenstereinstellungen für Excel, Faktoren beachten oExcel.Top= 0 oExcel.Height= _vfp.height*0.91 oExcel.Left= (_vfp.Width*0.76) +2 oExcel.Width= (sysmetric(1)- _vfp.width)*0.74 *-- Excel anzeigen oExcel.Visible= .T.
Tabellen anlegen (1) *-- Anwendereingaben verhindern oExcel.Interactive= .T. *-- Sicherheitsabfragen unterdrücken oExcel.DisplayAlerts= .f. *-- Neue Arbeitsmappen mit nur einer Tabelle erstellen oExcel.SheetsInNewWorkBook= 1 *-- Eine Arbeitsmappe erstellen *-- es müßte eine Tabelle vorhanden sein ? "Anzahl der Arbeitsmappen:", oExcel.Workbooks.count oBook= oExcel.Workbooks.add
Tabellen anlegen (2) *-- Eine neue Tabelle hinzufügen ? "Anzahl Tabellen in der Arbeitsmappe:", oBook.Sheets.count oSheet= oBook.Sheets.add *-- Die Tabelle löschen oSheet.delete() oSheet= oBook.Sheets(1)
Werte einfügen (1) *-- Nun holen wir uns den Zellbereich von A1 bis A12 oRange= oSheet.Range( "A1:A12") * und nun setzen wir in der Zelle A1 und A2 das Datum oRange.Cells( 1, 1).Value= {01.01.97} oRange.Cells( 2, 1).Value= {01.02.97} * Der Autofillbereich über den Bereich von A1 bis A12 oFillTo= oRange oSheet.Range( "A1:A2").Autofill( oFillTo)
Werte einfügen (2) *-- Nun den Bereich B1 - B10 mit Formel füllen: die Formel ist relativ oRange= oSheet.Range( "B1:B12") oRange.Formula = "=month( A1)" *-- formatieren von Zellen oRange.NumberFormat= "#,##0.00" && US-Notation oRange.Font.Bold= .t. *-- Nun den Bereich C1 bis C12 füllen oSheet.Range( "C1:C12").Formula= "=B1* 1.15" oSheet.Range( "C1:C12").Numberformat= "#,##0.0" *-- Und nun das Autoformat laufen lassen oSheet.Range( "A1:C12").Autoformat( 10)
Werte einfügen (3) *-- 10 Datensätze in das Clipboard kopieren _vfp.DataToClip( "_cTopTen", 10, 3) && 3 = Tabs *-- Datensätze in Excel einfügen oExcel.ActiveSheet.Range( "A2").Select && Zelle A2 oExcel.ActiveSheet.Paste() && einfügen *-- oExcelCells erhält die Referenz auf den *-- eingefügten Bereich oExcelCells= oExcel.Selection *-- und nun noch ein Autoformat oExcelCells.Autoformat(11) *-- immer zwei Reihen farblich anders
Sonstige Funktionen *-- Die aktuelle Arbeitsmappe speichern oExcel.ActiveWorkBook.saveAs( "D_XLS97") *-- Die Summe über die Umsätze der Top 10 * Die erste Zeile enthält die Spaltenköpfe (Feldnamen) ? oExcel.Application.Evaluate( "sum( B2:B11)") *-- Direktes benutzen von Funktionen, auch mit Arrays ? oExcel.evaluate( "fv( 10%, 12, 100)") ? oExcel.evaluate( "correl( {1;2;1},{1.1;1.9;1})")
Mailversand mit ActiveX Empfang und Versand von elektronischen Nachrichten mit Microsoft Visual FoxPro
Mail und VFP FPW: Workgroup Extensions (seit 93) FOXMAPI.FLL nicht mehr unter VFP VFP3: 2 OLE-Container für Messaging Session Control (für Einloggen) Message Control (für Empfang/Versand) Wahlweise Versand via Outlook
MAPI Session Control Verwaltung einer Mailsession, Beginn mit Einloggen via Methode „SignOn“ LogonUI - Flag Dialogmaske für Login NewSession - Flag Neue Exchange-Session Username - String mit Profilname DownloadMails - Flag für Abgleich (Default .T. !) Rückgabe Session-ID für Message Ctrl! Methode „SignOff“
MAPI Message Control (1) Übertragung der SessionID Aufruf Fetch()-Methode FetchUnreadOnly - Nur ungelesene Messages FetchSorted - Eingangsreihenfolge oder Benutzerreihenfolge Anzahl Messages in MsgCount Wechseln durch Ändern MsgIndex beginnt bei 0, also nur bis MsgCount-1, 0=älteste
MAPI Message Control (2) Eigenschaften MAPI-Message: MsgNoteText - Nachrichtentext MsgSubject - Betreff MsgOrigDisplayName - Absender RecipDisplayName - Collection (RecipCount, RecipIndex)
MAPI Message Control (3) Anlegen von neuen Nachrichten: Methode Compose( ) oder MsgIndex auf -1 setzen Versand mit Send( )-Methode Attachments sind in einer Collection vorhanden, Anzahl: AttachmentCount Attachment in AttachmentPathName
OLE-Automation mit Outlook Ansteuerung von MS Outlook via OLE-Automation aus Microsoft Visual FoxPro
OLE-Automation mit Outlook Nachfolger von Exchange und Schedule+ via Exchange Server, Office, Outlook Sonderversion Outlook Express für Mail Dienste werden in Profilen verwaltet Dienste: Exchange, Internet, Fax, CIS Folder (Ein/Ausgang, Journal, Kontakte, Kalender, Aufgaben, Notizen)
Objektmodell von Outlook (1) Wird bei Visual Modeler als UML mitgeliefert (VM in Visual Studio) Ziemlich komplexes Modell Kenntnisse der Struktur sind notwendig um Outlook anzusteuern Hilfe bei Office (extra installieren)
Objektmodell von Outlook (2)
Zugriff auf Outlook = Getobject(„“, „Outlook.Application“) = Createobject(„Outlook.Application“) NameSpace-Objekt („MAPI“ / „Notes“) Login CreateItem Hilfe in VBAOUTL.HLP
Beispiele mit Outlook Verschiedene Beispiele und Übungen zu Outlook mit Microsoft Visual FoxPro
Outlook-Beispiele An/Abmelden bei Outlook Zugriff auf Outlook Bereichseingrenzung Eintrag in das Journal Anlegen eines Termins Anlegen eines Kontakts Outlook-Konstanten
An/Abmelden bei Outlook Anmelden bei Outlook oOutlook= createobject( "Outlook.Application") oSession= .oOutLook.GetNameSpace("MAPI") oSession.LogOn( alltrim( <lcProfile> ), , .t.) Abmelden bei Outlook =oSession.logoff() =oOutlook.quit()
Zugriff auf Outlook *-- Zugriff Journal oJournal = oSession.GetDefaultFolder(11) *-- Zugriff Termine oKontakte = oSession.GetDefaultFolder(9) *-- Zugriff Kontakte oKontakte = oSession.getdefaultfolder(10)
Bereichseingrenzung Bereichseingrenzung Beispiel Journal LOCAL lcRange, ldVon, ldBis lcRange= '[Kategorien]= “ '+ ; alltrim( "<Kategorie>" ) + ‘ " ' lcRange= '[Start] >= "'+ dtoc( ldVon)+ '" ' lcRange= '[Start] <= "'+ dtoc( ldBis)+ '" ' oItems= oJournal.Items.restrict( lcRange ) Schleife über Journaleinträge for each oItem in oItems .. next
Anlegen Journaleintrag *-- Anlegen Eintrag Journal local loItem loItem = oOutlook.createitem(4) *-- Werzuweisung loItem.Subject = „“ loItem.Categories = „“ loItem.Start = „“ loitem.End = „“ loItem.Duration = „“ loitem.Body = „“ loItem.ContactNames = „“ loitem.Type = „“ loItem.Companies = „“ *-- Speichern loItem.Save()
Anlegen Termin *-- Anlegen Eintrag Termin local loTermin loTermin = oOutlook.createitem(1) *-- Werzuweisung loTermin.Subject = <Titel> loTermin.Start = <Datum Zeit> loTermin.End = <Datum Zeit> loTermin.Body = <Text> *-- Speichern loTermin.save()
Anlegen Kontakt *-- Anlegen Eintrag Termin local loAdresse loAdresse = oOutlook.createitem(2) *-- Wertzuweisung loAdresse.LastName = <Name> loAdresse.FirstName = <Vorname> loAdresse.EMail1Address = <eMail> loAdresse.BusinessFaxNumber = <Fax> *-- Speichern loAdresse.save()
Outlook-Konstanten OlDefaultFolder OlItems * Constant Value #define olFolderDeletedItems 3 #define olFolderOutbox 4 #define olFolderSentMail 5 #define olFolderInbox 6 #define olFolderCalendar 9 #define olFolderContacts 10 #define olFolderJournal 11 #define olFolderNotes 12 #define olFolderTasks 13 OlItems * Constant Value #define olMailItem 0 #define olAppointmentItem 1 #define olContactItem 2 #define olTaskItem 3 #define olJournalItem 4 #define olNoteItem 5 #define olPostItem 6 Hinweis: Komplette Konstanten im Notizblatt zu dieser Seite * OlActionCopyLike * Constant Value #define olReply 0 #define olReplyAll 1 #define olForward 2 #define olReplyFolder 3 #define olRespond 4 * OlActionReplyStyle * Constant Value #define olOmitOriginalText 0 #define olEmbedOriginalItem 1 #define olIncludeOriginalText 2 #define olIndentOriginalText 3 * OlActionResponseStyle #define olOpen 0 #define olSend 1 #define olPrompt 2 * OlActionShowOn #define olDontShow 0 #define olMenu 1 #define olMenuAndToolbar 2 * OlAttachmentType #define olByValue 1 #define olByReference 4 #define olEmbeddedItem 5 #define olOLE 6 * OlBusyStatus #define olFree 0 #define olTentative 1 #define olBusy 2 #define olOutOfOffice 3 * OlDaysOfWeek #define olSunday 1 #define olMonday 2 #define olTuesday 4 #define olWednesday 8 #define olThursday 16 #define olFriday 32 #define olSaturday 64 * OlDefaultFolders #define olFolderDeletedItems 3 #define olFolderOutbox 4 #define olFolderSentMail 5 #define olFolderInbox 6 #define olFolderCalendar 9 #define olFolderContacts 10 #define olFolderJournal 11 #define olFolderNotes 12 #define olFolderTasks 13 * OlFlagStatus #define olNoFlag 0 #define olFlagComplete 1 #define olFlagMarked 2 * OlFolderDisplayMode * Constant Value #define olFolderDisplayNormal 0 #define olFolderDisplayFolderOnly 1 #define olFolderDisplayNoNavigation 2 * OlFormRegistry #define olDefaultRegistry 0 #define olPersonalRegistry 2 #define olFolderRegistry 3 #define olOrganizationRegistry 4 * OlGender #define olUnspecified 0 #define olFemale 1 #define olMale 2 * OlImportance #define olImportanceLow 0 #define olImportanceNormal 1 #define olImportanceHigh 2 * OlInspectorClose #define olSave 0 #define olDiscard 1 #define olPromptForSave 2 * OlItems #define olMailItem 0 #define olAppointmentItem 1 #define olContactItem 2 #define olTaskItem 3 #define olJournalItem 4 #define olNoteItem 5 #define olPostItem 6 * OlJournalRecipientType #define olAssociatedContact 1 * OlMailingAddress * Constant Value #define olNone 0 #define olHome 1 #define olBusiness 2 #define olOther 3 * OlMailRecipientType #define olOriginator 0 #define olTo 1 #define olCC 2 #define olBCC 3 * OlMeetingRecipientType #define olOrganizer 0 #define olRequired 1 #define olOptional 2 #define olResource 3 * OlMeetingResponse #define olMeetingTentative 2 #define olMeetingAccepted 3 #define olMeetingDeclined 4 * OlMeetingStatus #define olNonMeeting 0 #define olMeeting 1 #define olMeetingReceived 3 #define olMeetingCanceled 5 * OlNoteColor #define olBlue 0 #define olGreen 1 #define olPink 2 #define olYellow 3 #define olWhite 4 * OlRecurrenceType #define olRecursDaily 0 #define olRecursWeekly 1 #define olRecursMonthly 2 #define olRecursMonthNth 3 #define olRecursYearly 5 #define olRecursYearNth 6 * OlRemoteStatus #define olRemoteStatusNone 0 #define olUnMarked 1 #define olMarkedForDownload 2 #define olMarkedForCopy 3 #define olMarkedForDelete 4 * OlResponseStatus #define olResponseNone 0 #define olResponseOrganized 1 #define olResponseTentative 2 #define olResponseAccepted 3 #define olResponseDeclined 4 #define olResponseNotResponded 5 * OlSaveAsType #define olTXT 0 #define olRTF 1 #define olTemplate 2 #define olMSG 3 #define olDoc 4 * OlSensitivity #define olNormal 0 #define olPersonal 1 #define olPrivate 2 #define olConfidential 3 * OlTaskDelegationState #define olTaskNotDelegated 0 #define olTaskDelegationUnknown 1 #define olTaskDelegationAccepted 2 #define olTaskDelegationDeclined 3 * OlTaskOwnership #define olNewTask 0 #define olDelegatedTask 1 #define olOwnTask 2 * OlTaskRecipientType #define olUpdate 1 #define olFinalStatus 2 * OlTaskResponse #define olTaskSimple 0 #define olTaskAssign 1 #define olTaskAccept 2 #define olTaskDecline 3 * OlTaskStatus #define olTaskNotStarted 0 #define olTaskInProgress 1 #define olTaskComplete 2 #define olTaskWaiting 3 #define olTaskDeferred 4 * OlTrackingStatus #define olTrackingNone 0 #define olTrackingDelivered 1 #define olTrackingNotDelivered 2 #define olTrackingNotRead 3 #define olTrackingRecallFailure 4 #define olTrackingRecallSuccess 5 #define olTrackingRead 6 #define olTrackingReplied 7 * OlUserPropertyType #define olText 1 #define olNumber 3 #define olDateTime 5 #define olYesNo 6 #define olDuration 7 #define olKeywords 11 #define olPercent 12 #define olCurrency 14 #define olFormula 18 #define olCombination 19
OLE-Automation mit Project Ansteuerung von Project via OLE-Automation aus Microsoft Visual FoxPro
OLE-Automation mit Project Application Application Project Project Cell Cell Window Window Task Task Resource Resource Calendar Calendar Resource Resource Pane Pane Assignment Assignment Assignment Assignment List List Task Task Assignment Resource Resource Calendar Calendar Selection Selection Task Task Resource Resource Task Task Object only Object and Collection Legend List List
OLE-Automation mit SQL-Server Ansteuerung von MS SQL-Server via OLE-Automation aus Microsoft Visual FoxPro
OLE-Automation mit SQL-Server Noch in Vorbereitung
OLE-Automation mit Access Ansteuerung von MS Access via OLE-Automation aus Microsoft Visual FoxPro
OLE-Automation mit Access Noch in Vorbereitung
Visual FoxPro als OLE-Server Kurze Übersicht über die OLE-Server-Funktionen von Microsoft Visual FoxPro
Aufrufbare Funktionen Fernsteuerung: FoxDoCmd FoxEval SetErrMode SetOLEObj CloseIt GetLastError
Remote OLE-Automation aus Microsoft Visual FoxPro
Remote OLE Automation Registry Eintragung Remote Automation Connection Manager Erst ab VFP 6.0 sinnvoll...
Zusammenfassung Objektmodell wichtig! Automation erlaubt Einbin-dung von Office Outlook einfach Remote Automation
Vielen Dank! Das waren die Themen: DDE-Funktionsübersicht OLE-Automation mit MS WinWord OLE-Automation mit MS Excel MAPI und VFP OLE-Automation mit MS Outlook OLE-Automation mit MS Project OLE-Automation mit MS SQL-Server OLE-Automation mit MS Access FPOLE.DLL-Funktionsübersicht Aufrufbeispiel in WordBasic Remote OLE-Automation
Wenn Fragen bestehen: Wizards & Builders Frankfurter Str. 21b Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175