FileMaker Plugin 
Entwicklung 
Christian Schmitz
FileMaker Plugin 
• FileMaker Plugin Schnittstelle 
• Für FileMaker 7 und neuer 
• Erlaubt eigene Funktionen in C, C++, Ob...
Plugins können nicht 
• Skriptschritte definieren/ändern 
• Zugriff nehmen auf WebDirect Seiten 
• Auf FileMaker Go laufen...
Benötigt 
• Plugin SDK von FileMaker 
• Download auf filemaker.com 
http://www.filemaker.de/support/docs/fm_plugin_sdk.13....
FileMaker SDK 13 
Bibliotheken von 
FileMaker 
C Header
FileMaker SDK 11 
Bibliotheken von 
FileMaker 
C Header 
Projekt Windows 
Beispiel! 
Projekt Mac OS X
Dokumentation? 
• Teilweise im C++ Quelltext
Dokumentation? 
• Teilweise im C++ Quelltext 
• Im Internet 
• http://fmplugins.idma.co.nz/index.php/Main_Page 
• Open Sou...
Was ist ein Plugin? 
• Programm Bibliothek mit Metadaten 
• Mac 
• Bundle, 32/64bit 
• Dateiendung .fmplugin 
• Windows 
•...
API 
• Klassen für Parameter/Ergebnis 
• Evaluate 
• StartScript 
• ExecuteFileSQL & ExecuteSQL
Klassen 
• Data 
• DataVect 
• BinaryData (Container) 
• Text 
• FixPt (Zahlen) 
• DateTime 
• CharacterStyle (für formati...
Plugin Configuration 
• Plugin name "MBS Plugin" 
• Plugin eindeutige 4 Zeichen ID "MBSP" 
• Version 
• Infotext 
• Funkti...
Funktionen 
• Plugin definiert Funktionen 
• C Funktion, e.g. MBS 
• ID (laufende Nummer) 
• FileMaker Deklaration, e.g. M...
Leere Funktion 
FMX_PROC(fmx::errcode) Test 
(short funcId, 
const fmx::ExprEnv& environment, 
const fmx::DataVect& dataVe...
Funktionparameter in C 
• funcID: ID aus Funktionsdefinition 
• environment: Aktuelle Umgebung für 
Evaluate, ExecuteSQL, ...
Funktionsergebnis in C 
• results: Variable für Ergebnis der Funktion 
• Ergebnis der Funktion hier zuweisen 
• Text, Zeit...
Hello World Funktion 
{ 
fmx::TextAutoPtr resultText; 
resultText->Assign("Hello World"); 
return result.SetAsText( *resul...
AutoPtr 
• C++ Memory Management 
• const &fmx::Text &text 
• Referenz von FileMaker für existierendes Objekt 
• fmx::Text...
AutoPtr 
• TextAutoPtr 
• FixPtAutoPtr 
• DateTimeAutoPtr 
• BinaryDataAutoPtr 
• DataAutoPtr 
• ColorAutoPtr 
• Character...
Addieren Funktion 
const fmx::FixPt &Zahl1 = dataVect.AtAsNumber(0); 
const fmx::FixPt &Zahl2 = dataVect.AtAsNumber(1); 
f...
Großbuchstaben Funktion 
const fmx::Text &text = dataVect.AtAsText(0); 
fmx::TextAutoPtr resultText; 
resultText->SetText(...
Großbuchstaben Funktion 
char buffer[200] = {0}; 
const fmx::Text &text = dataVect.AtAsText(0); 
text.GetBytes(buffer, siz...
Anzahl Parameter 
if (dataVect.Size() < 2) 
{ 
return kErrorParameterMissing; // 102 
}
SDK Kompatibilität 
• Neuere SDKs definieren neue SDK Funktionen 
• FM13 SDK bei Windows inkompatibel zu FM12. 
• Weak Lin...
Trying 24U Template 
• Template laden 
• Xcode & Visual C Projekte kopieren und aktualisieren 
• eventuell kleine Fixes fü...
Fragen? 
• Demo
Danke für das Bewerten dieses Vortrages 
Vortragende(r) 
Titel Vortrag 
Vielen Dank unseren Sponsoren 
FileMaker Konferenz...
Nächste SlideShare
Wird geladen in …5
×

FMK2014: FileMaker Plugin erzeugen by Christian Schmitz

1.657 Aufrufe

Veröffentlicht am

Mit WebDirect kann man wieder mehr Plugins einsetzen auf dem Server. Da bietet es sich doch an eventuell ein eigenes Plugin zu bauen für Schnittstellen. Per Plugin etwas schneller machen, auf Betriebssystemfunktionen zugreifen oder das Plugin als Schnittstelle zu einer C Bibliothek nehmen, die etwas wichtiges macht. Wir schauen uns die Vorraussetzungen an, das Plugin SDK und wie man eigene Funktionen definiert. In der Demo bauen wir ein Plugin selbst und probieren es gleich mal aus.

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.657
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
13
Aktionen
Geteilt
0
Downloads
17
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

FMK2014: FileMaker Plugin erzeugen by Christian Schmitz

  1. 1. FileMaker Plugin Entwicklung Christian Schmitz
  2. 2. FileMaker Plugin • FileMaker Plugin Schnittstelle • Für FileMaker 7 und neuer • Erlaubt eigene Funktionen in C, C++, Objective-C & Objective-C++ zu definieren
  3. 3. Plugins können nicht • Skriptschritte definieren/ändern • Zugriff nehmen auf WebDirect Seiten • Auf FileMaker Go laufen • Layouts ändern • Textausrichtung im Formatierten Text • Extended Data Source anbieten
  4. 4. Benötigt • Plugin SDK von FileMaker • Download auf filemaker.com http://www.filemaker.de/support/docs/fm_plugin_sdk.13.0.1.zip • Filemaker Plugin Template von 24U http://content.24usoftware.com/PlugInTemplate • Visual Studio für Windows • Xcode für Mac OS X
  5. 5. FileMaker SDK 13 Bibliotheken von FileMaker C Header
  6. 6. FileMaker SDK 11 Bibliotheken von FileMaker C Header Projekt Windows Beispiel! Projekt Mac OS X
  7. 7. Dokumentation? • Teilweise im C++ Quelltext
  8. 8. Dokumentation? • Teilweise im C++ Quelltext • Im Internet • http://fmplugins.idma.co.nz/index.php/Main_Page • Open Source Plugins lesen • Internet Foren • Viel probieren
  9. 9. Was ist ein Plugin? • Programm Bibliothek mit Metadaten • Mac • Bundle, 32/64bit • Dateiendung .fmplugin • Windows • Zwei DLLs: eine 32bit, eine 64bit • Dateiendungen fmx/fmx64
  10. 10. API • Klassen für Parameter/Ergebnis • Evaluate • StartScript • ExecuteFileSQL & ExecuteSQL
  11. 11. Klassen • Data • DataVect • BinaryData (Container) • Text • FixPt (Zahlen) • DateTime • CharacterStyle (für formatierten Text) • Locale
  12. 12. Plugin Configuration • Plugin name "MBS Plugin" • Plugin eindeutige 4 Zeichen ID "MBSP" • Version • Infotext • Funktionenliste
  13. 13. Funktionen • Plugin definiert Funktionen • C Funktion, e.g. MBS • ID (laufende Nummer) • FileMaker Deklaration, e.g. MBS(FunctionName) • Mindeste und maximale Anzahl Parameter • Flags: kMayEvaluateOnServer, kDisplayInAllDialogs
  14. 14. Leere Funktion FMX_PROC(fmx::errcode) Test (short funcId, const fmx::ExprEnv& environment, const fmx::DataVect& dataVect, fmx::Data& results) { return 0; }
  15. 15. Funktionparameter in C • funcID: ID aus Funktionsdefinition • environment: Aktuelle Umgebung für Evaluate, ExecuteSQL, StartScript • dataVect: Parameterliste aus FileMaker
  16. 16. Funktionsergebnis in C • results: Variable für Ergebnis der Funktion • Ergebnis der Funktion hier zuweisen • Text, Zeitstempel, Zahlen, Container • errcode: Fehlercode für Rückgabe • Hole ( LetzteFehlerNr )
  17. 17. Hello World Funktion { fmx::TextAutoPtr resultText; resultText->Assign("Hello World"); return result.SetAsText( *resultText, result.GetLocale() ); }
  18. 18. AutoPtr • C++ Memory Management • const &fmx::Text &text • Referenz von FileMaker für existierendes Objekt • fmx::TextAutoPtr • Neues Objekt zum Ändern • Wird automatisch freigegeben, wenn Funktion endet.
  19. 19. AutoPtr • TextAutoPtr • FixPtAutoPtr • DateTimeAutoPtr • BinaryDataAutoPtr • DataAutoPtr • ColorAutoPtr • CharacterStyleAutoPtr • QuadCharAutoPtr • LocaleAutoPtr • DataVectAutoPtr • RowVectAutoPtr • ExprEnvAutoPtr
  20. 20. Addieren Funktion const fmx::FixPt &Zahl1 = dataVect.AtAsNumber(0); const fmx::FixPt &Zahl2 = dataVect.AtAsNumber(1); fmx::FixPtAutoPtr Ergebnis; num->AssignFixPt( Zahl1 ); num->Add( Zahl2, *Ergebnis ); results.SetAsNumber(*Ergebnis); return 0;
  21. 21. Großbuchstaben Funktion const fmx::Text &text = dataVect.AtAsText(0); fmx::TextAutoPtr resultText; resultText->SetText(text); resultText->Uppercase(); return results.SetAsText( *resultText, results.GetLocale() ); • Mit den Text Funktionen vom Plugin SDK
  22. 22. Großbuchstaben Funktion char buffer[200] = {0}; const fmx::Text &text = dataVect.AtAsText(0); text.GetBytes(buffer, sizeof(buffer), 0, fmx::Text::kSize_End, fmx::Text::kEncoding_UTF8); char* b = buffer; while (*b) { *b = toupper(*b); b++; } fmx::TextAutoPtr resultText; resultText->Assign(buffer, fmx::Text::kEncoding_UTF8); return results.SetAsText( *resultText, results.GetLocale() );
  23. 23. Anzahl Parameter if (dataVect.Size() < 2) { return kErrorParameterMissing; // 102 }
  24. 24. SDK Kompatibilität • Neuere SDKs definieren neue SDK Funktionen • FM13 SDK bei Windows inkompatibel zu FM12. • Weak Linking hilft.
  25. 25. Trying 24U Template • Template laden • Xcode & Visual C Projekte kopieren und aktualisieren • eventuell kleine Fixes für aktuelles Mac/Win SDK • Eigene PLUGIN_ID_STRING festlegen! • Eigene Funktion definieren • Probieren & Testen
  26. 26. Fragen? • Demo
  27. 27. Danke für das Bewerten dieses Vortrages Vortragende(r) Titel Vortrag Vielen Dank unseren Sponsoren FileMaker Konferenz 2014 Winterthur www.filemaker-konferenz.com

×