Filemaker Plugins

FileMaker Plugin Developer Resource wiki

24usoftware

FileMaker Technologies

FileMaker Plugin erzeugen

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 
  • 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 
computer/software/filemaker.txt · Zuletzt geändert: von 127.0.0.1
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0