SlideShare ist ein Scribd-Unternehmen logo
FileMaker Plugin 
Entwicklung 
Christian Schmitz
FileMaker Plugin 
• FileMaker Plugin Schnittstelle 
• Für FileMaker 7 und neuer 
• Erlaubt eigene Funktionen in C, C++, Objective-C & 
Objective-C++ zu definieren
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
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
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 Source Plugins lesen 
• Internet Foren 
• Viel probieren
Was ist ein Plugin? 
• Programm Bibliothek mit Metadaten 
• Mac 
• Bundle, 32/64bit 
• Dateiendung .fmplugin 
• Windows 
• Zwei DLLs: eine 32bit, eine 64bit 
• Dateiendungen fmx/fmx64
API 
• Klassen für Parameter/Ergebnis 
• Evaluate 
• StartScript 
• ExecuteFileSQL & ExecuteSQL
Klassen 
• Data 
• DataVect 
• BinaryData (Container) 
• Text 
• FixPt (Zahlen) 
• DateTime 
• CharacterStyle (für formatierten Text) 
• Locale
Plugin Configuration 
• Plugin name "MBS Plugin" 
• Plugin eindeutige 4 Zeichen ID "MBSP" 
• Version 
• Infotext 
• Funktionenliste
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
Leere Funktion 
FMX_PROC(fmx::errcode) Test 
(short funcId, 
const fmx::ExprEnv& environment, 
const fmx::DataVect& dataVect, 
fmx::Data& results) 
{ 
return 0; 
}
Funktionparameter in C 
• funcID: ID aus Funktionsdefinition 
• environment: Aktuelle Umgebung für 
Evaluate, ExecuteSQL, StartScript 
• dataVect: Parameterliste aus FileMaker
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 )
Hello World Funktion 
{ 
fmx::TextAutoPtr resultText; 
resultText->Assign("Hello World"); 
return result.SetAsText( *resultText, 
result.GetLocale() ); 
}
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.
AutoPtr 
• TextAutoPtr 
• FixPtAutoPtr 
• DateTimeAutoPtr 
• BinaryDataAutoPtr 
• DataAutoPtr 
• ColorAutoPtr 
• CharacterStyleAutoPtr 
• QuadCharAutoPtr 
• LocaleAutoPtr 
• DataVectAutoPtr 
• RowVectAutoPtr 
• ExprEnvAutoPtr
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;
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
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() );
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 Linking hilft.
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
Fragen? 
• Demo
Danke für das Bewerten dieses Vortrages 
Vortragende(r) 
Titel Vortrag 
Vielen Dank unseren Sponsoren 
FileMaker Konferenz 2014 Winterthur 
www.filemaker-konferenz.com

Weitere ähnliche Inhalte

PDF
Web-Services mit Go
PPTX
Multiple Domains mit Composite C1 verwalten
PDF
Docker Entwicklungsumgebung für TYPO3 mit xdebug
PPTX
PHAR better Tools
PPT
XML-Socket-Server zur Kommunikation mit Flash
PDF
PHP-Entwicklung mit PEAR
PDF
Skalierbare Anwendungen mit Google Go
PDF
FMK2016 - Christian Schmitz - MBS FileMaker Plugin
Web-Services mit Go
Multiple Domains mit Composite C1 verwalten
Docker Entwicklungsumgebung für TYPO3 mit xdebug
PHAR better Tools
XML-Socket-Server zur Kommunikation mit Flash
PHP-Entwicklung mit PEAR
Skalierbare Anwendungen mit Google Go
FMK2016 - Christian Schmitz - MBS FileMaker Plugin

Andere mochten auch (20)

PDF
Obo tab 2-2013
PPT
Wetterbeobachtung - Ein Vortrag für die Grundschule
PDF
Ausschreibung 13. Karate-Cup Winterthur
PDF
Gatlinburg Tourism Summit
PDF
PDF
Das Ertragbaum System
PPTX
Porsia expo antisemitismus
DOCX
171 Webber Springs Drive Inwood WV 25428
PDF
Governance, Risk & Compliance
PPT
Geld und Weltfinanzsystem
PDF
Werteerziehung für kinder: Demut - Moral Values: Humility
PDF
Saber 9
PDF
yavalu CeBIT 2012 - Managing Trust
PPTX
52 Wochen Erfolg mit Geschäftskunden - Kapitel 01 Prinzipien
PDF
Hsp aufgabenohne tr
PDF
Zehn Hinweise für Architekten
PPTX
FMK2014: FileMaker Module by Karsten Risseeuw
PDF
Infografik: Was Pressestellen wirklich erfolgreich macht
PPTX
Die Geschichte des Schreibens
Obo tab 2-2013
Wetterbeobachtung - Ein Vortrag für die Grundschule
Ausschreibung 13. Karate-Cup Winterthur
Gatlinburg Tourism Summit
Das Ertragbaum System
Porsia expo antisemitismus
171 Webber Springs Drive Inwood WV 25428
Governance, Risk & Compliance
Geld und Weltfinanzsystem
Werteerziehung für kinder: Demut - Moral Values: Humility
Saber 9
yavalu CeBIT 2012 - Managing Trust
52 Wochen Erfolg mit Geschäftskunden - Kapitel 01 Prinzipien
Hsp aufgabenohne tr
Zehn Hinweise für Architekten
FMK2014: FileMaker Module by Karsten Risseeuw
Infografik: Was Pressestellen wirklich erfolgreich macht
Die Geschichte des Schreibens
Anzeige

Mehr von Verein FM Konferenz (20)

PDF
FMK2022 Excel und FileMaker Schittko.pdf
PDF
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
PDF
FMK2022 Custom Functions von Philipp Puls
PDF
FMK2022 FileMaker Fehler von Martin Schwarz
PDF
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
PDF
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
PDF
FMK2022 Neue Programmiertechniken von Adam Augusting
PDF
FMK2022 FileMaker und Javascript von Adam Augustin
PDF
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
PDF
FMK2022 Dokumentation - Thomas Hirt
PDF
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
PDF
FMK2022 FileMaker Integrated Development Environment - Russell Watson
PDF
FMK2022 Datenschutz DSGVO Christoph Kluss
PDF
FMK2022 Rechnungen Inkasso - Christoph Kluss
PDF
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
PDF
FMK2019 bug off lightning talk by Russell Watson
PDF
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
PDF
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
PDF
FMK2019 Hardware Integrated by HOnza Koudelka
PDF
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
FMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Custom Functions von Philipp Puls
FMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Dokumentation - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2019 bug off lightning talk by Russell Watson
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza Koudelka
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
Anzeige

FMK2014: FileMaker Plugin erzeugen by Christian Schmitz

  • 1. FileMaker Plugin Entwicklung Christian Schmitz
  • 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. 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. 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. FileMaker SDK 13 Bibliotheken von FileMaker C Header
  • 6. FileMaker SDK 11 Bibliotheken von FileMaker C Header Projekt Windows Beispiel! Projekt Mac OS X
  • 7. Dokumentation? • Teilweise im C++ Quelltext
  • 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. 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. API • Klassen für Parameter/Ergebnis • Evaluate • StartScript • ExecuteFileSQL & ExecuteSQL
  • 11. Klassen • Data • DataVect • BinaryData (Container) • Text • FixPt (Zahlen) • DateTime • CharacterStyle (für formatierten Text) • Locale
  • 12. Plugin Configuration • Plugin name "MBS Plugin" • Plugin eindeutige 4 Zeichen ID "MBSP" • Version • Infotext • Funktionenliste
  • 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. Leere Funktion FMX_PROC(fmx::errcode) Test (short funcId, const fmx::ExprEnv& environment, const fmx::DataVect& dataVect, fmx::Data& results) { return 0; }
  • 15. Funktionparameter in C • funcID: ID aus Funktionsdefinition • environment: Aktuelle Umgebung für Evaluate, ExecuteSQL, StartScript • dataVect: Parameterliste aus FileMaker
  • 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. Hello World Funktion { fmx::TextAutoPtr resultText; resultText->Assign("Hello World"); return result.SetAsText( *resultText, result.GetLocale() ); }
  • 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. AutoPtr • TextAutoPtr • FixPtAutoPtr • DateTimeAutoPtr • BinaryDataAutoPtr • DataAutoPtr • ColorAutoPtr • CharacterStyleAutoPtr • QuadCharAutoPtr • LocaleAutoPtr • DataVectAutoPtr • RowVectAutoPtr • ExprEnvAutoPtr
  • 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. 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. 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. Anzahl Parameter if (dataVect.Size() < 2) { return kErrorParameterMissing; // 102 }
  • 24. SDK Kompatibilität • Neuere SDKs definieren neue SDK Funktionen • FM13 SDK bei Windows inkompatibel zu FM12. • Weak Linking hilft.
  • 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
  • 27. Danke für das Bewerten dieses Vortrages Vortragende(r) Titel Vortrag Vielen Dank unseren Sponsoren FileMaker Konferenz 2014 Winterthur www.filemaker-konferenz.com