{"id":88,"date":"2017-02-23T14:38:11","date_gmt":"2017-02-23T14:38:11","guid":{"rendered":"http:\/\/hahne-software.de\/?p=88"},"modified":"2018-05-24T12:18:27","modified_gmt":"2018-05-24T12:18:27","slug":"erste-schritte-2","status":"publish","type":"post","link":"https:\/\/hahne-software.de\/?p=88","title":{"rendered":"Erstellung einer Klasse f\u00fcr StorableObjects"},"content":{"rendered":"<h4>Erstellen einer Tabellen-Klasse:<\/h4>\n<pre>[SOTable('CUSTOMER')] \/\/ Name der Tabelle in der Datenbank \r\nTCustomer = <strong>class<\/strong>(TStorableObject)\r\n<strong>private\r\n <\/strong> sName : String;\r\n<strong>public\r\n <\/strong> [SOField('CUS_ID', ftAutoInc, 0, 'ID', [sflPrimaryKey])]\r\n  <strong>property<\/strong> ID; \/\/ Ist bereits in der Basisklasse TStorableObject deklariert und muss nur ver\u00f6ffentlicht werden.\r\n\r\n  [SOField('CUS_NAME', ftString, 50, 'Name')]\r\n  [SOFieldEx(2,50)]\r\n  [SODefaultValue('(leer)')]\r\n  <strong>property<\/strong> Name : <strong>String<\/strong> <strong>read<\/strong> sName <strong>write<\/strong> SetName; \r\n<strong>end<\/strong>;\r\n\r\n<strong>procedure<\/strong> TCustomer.SetName(Value : <strong>String<\/strong>);\r\n<strong>begin\r\n <\/strong> UpdateValue(sName, Value); \/\/ Rufe die Methode in TStorableObject zur Aktualisierung des Wertes der Property \"Name\"\r\n<strong>end<\/strong>;<\/pre>\n<h3>Attribute:<\/h3>\n<p>Die Definition der Klasse TCustomer erfolgt per Ableitung von TStorableObject. \u00dcber die Anweisungen in [] bei der jeweiligen Property werden die Eigenschaften der Property beschrieben.<\/p>\n<p>Der Aufbau ist dabei folgender:<\/p>\n<p>[SOField(&lt;Feldname&gt;, &lt;Datentyp&gt;, &lt;Feldl\u00e4nge&gt;, &lt;Klartextname&gt;, [&lt;Flags&gt;], [Join-Feldname])].<\/p>\n<pre>&lt;Feldname&gt;      = Name des Tabellenfeldes in der Notation: Feld oder auch Tabellenname.Feldname.\r\n\r\n&lt;Datentyp&gt;      = Datentyp des Feldes &lt;Feldname&gt;. M\u00f6gliche Werte siehe <a href=\"http:\/\/hahne-software.de\/?p=127\">unterst\u00fctzte Datentypen<\/a>.\r\n\r\n&lt;Feldl\u00e4nge&gt;     = L\u00e4nge des Feldes. Wird nur beim Typ ftString ben\u00f6tigt. Bei allen anderen Typen kann eine 0 angegeben werden.\r\n\r\n&lt;Klartextname&gt;  = Dieser Text wird als Beschriftung in SOView und als \u00dcberschrift in\u00a0SOGridView verwendet.\r\n\r\n&lt;Flags&gt;         = Definiert die Verhaltensweise des Feldes. Siehe m\u00f6gliche <a href=\"http:\/\/hahne-software.de\/?p=130\">Flags bei Felddefinitionen<\/a>.<\/pre>\n<pre>&lt;Join-Feldname&gt; = Name des Feldes in der Notation: Fremd-Tabellenname.Feldname f\u00fcr ein Join bzw. Nested SQL Select.<\/pre>\n<h3>Zusatzattribute (optional):<\/h3>\n<p>[SOFieldEx(&lt;MinLength&gt;, &lt;MaxLength&gt;)]<\/p>\n<pre>&lt;MinLength&gt; = Min. L\u00e4nge der Eingabe f\u00fcr das Feld.\r\n\r\n&lt;MaxLength&gt; = Max. L\u00e4nge der Eingabe f\u00fcr das Feld. Darf nicht gr\u00f6\u00dfer sein als Max. L\u00e4nge des Datenfeldes in der Datenbank.<\/pre>\n<h3>Standardwertvorgabe (optional):<\/h3>\n<p>[SODefaultValue(&lt;Wert&gt;)]<\/p>\n<pre>Wert = Ein Wert vom Typ\u00a0Integer, String, Boolean, TDateTime oder Real.<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Erstellen einer Tabellen-Klasse: [SOTable(&#8218;CUSTOMER&#8216;)] \/\/ Name der Tabelle in der Datenbank TCustomer = class(TStorableObject) private sName : String; public [SOField(&#8218;CUS_ID&#8216;, ftAutoInc, 0, &#8218;ID&#8216;, [sflPrimaryKey])] property ID; \/\/ Ist bereits in der Basisklasse TStorableObject deklariert und muss nur ver\u00f6ffentlicht werden. [SOField(&#8218;CUS_NAME&#8216;, ftString, 50, &#8218;Name&#8216;)] [SOFieldEx(2,50)] [SODefaultValue(&#8218;(leer)&#8216;)] property Name : String read sName write SetName; end; procedure [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,3],"tags":[],"class_list":["post-88","post","type-post","status-publish","format-standard","hentry","category-delphi","category-storableobjects"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/hahne-software.de\/index.php?rest_route=\/wp\/v2\/posts\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hahne-software.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hahne-software.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hahne-software.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hahne-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=88"}],"version-history":[{"count":17,"href":"https:\/\/hahne-software.de\/index.php?rest_route=\/wp\/v2\/posts\/88\/revisions"}],"predecessor-version":[{"id":289,"href":"https:\/\/hahne-software.de\/index.php?rest_route=\/wp\/v2\/posts\/88\/revisions\/289"}],"wp:attachment":[{"href":"https:\/\/hahne-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=88"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hahne-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=88"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hahne-software.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}