{"id":19248,"date":"2022-02-03T12:20:56","date_gmt":"2022-02-03T15:20:56","guid":{"rendered":"http:\/\/maurinsoft.com.br\/?p=19248"},"modified":"2022-02-03T12:20:56","modified_gmt":"2022-02-03T15:20:56","slug":"implementando-uma-interface-no-lazarus","status":"publish","type":"post","link":"https:\/\/maurinsoft.com.br\/wp\/implementando-uma-interface-no-lazarus\/","title":{"rendered":"Implementando uma Interface no Lazarus"},"content":{"rendered":"\n<p>Vou apresentar aqui muito sutilmente um caso de constru\u00e7\u00e3o de uma interface em Lazarus.<\/p>\n\n\n\n<p>Qual a diferen\u00e7a entre uma interface e uma classe.<\/p>\n\n\n\n<p>A Interface \u00e9 como um contrato, onde se estabelece as conex\u00f5es de sa\u00edda (M\u00e9todos e propriedades) que ser\u00e3o utilizadas.  Nela voce n\u00e3o precisa criar c\u00f3digo, pois s\u00f3 estabelece quais ser\u00e3o as conex\u00f5es.<\/p>\n\n\n\n<p>Ao criar uma classe, vc estabele as conex\u00f5es porem tem que realizar uma s\u00e9rie de codifica\u00e7\u00f5es (implementation) que de fato n\u00e3o seriam necess\u00e1rias. Pois a codifica\u00e7\u00e3o fica a cargo da classe filha.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"exemplo-de-projeto\">Exemplo de projeto<\/h2>\n\n\n\n<p>Desenvolvi uma interface no projeto da API da impressora.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"git-do-projeto\">GIT do Projeto<\/h2>\n\n\n\n<p><a href=\"https:\/\/github.com\/marcelomaurin\/LIBESCPOS\">https:\/\/github.com\/marcelomaurin\/LIBESCPOS<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"exemplo-de-uso\">Exemplo de uso<\/h2>\n\n\n\n<p>Na unit imp_generico.pas, estabelecemos a interface, que ser\u00e1 herdada das demais classes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  { TIMP_GENERICO }\n  TIMP_GENERICO = interface\n    &#91;'{045F6EED-2C11-447D-A7DC-09DB995367C2}']\n\n     function getserial : string;\n     procedure setserial(value : string);\n\n     function InitPrint(): string;\n     function NewLine(): string;\n     function LineText(Info : string): string;\n     function Negrito(): string;\n     function Normal(): string;\n     function Sublinhado(): string;\n     function DoubleTexto(): string;\n     function beep(): string;\n     function Guilhotina(): string;\n     function AcionaGaveta(): string;\n     function Barra1D(Info : string): string;\n     function Barra2D(info : String): string;\n     function loadImagem(X,Y : integer; Info : String): string;\n     function imprimeImagem(X,Y : integer): string;\n     property Serial : String read getserial  write setserial;\nend;                     <\/code><\/pre>\n\n\n\n<p>No fonte imp_ELGINI9.pas, chamamos a interface, criando os m\u00e9todos, realmente propostos na interface.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type\n\n { TIMP_ELGINI9 }\n\n TIMP_ELGINI9 = class(TInterfacedObject,TIMP_GENERICO)\n     FCOLUNA : integer;\n     FSERIAL : String;\n\n private\n     function getserial : string;\n     procedure setserial(value : string);\n\n\n public\n     constructor create();\n     destructor destroy();\n\n     function NewLine(): string;\n     function InitPrint(): string;\n     function LineText(Info : string): string;\n     function beep(): string;\n     function Negrito(): string;\n     function Normal(): string;\n     function Sublinhado(): string;\n     function DoubleTexto(): string;\n     function Guilhotina(): string;\n     function AcionaGaveta(): string;\n     function Barra2D(Info : string): string;\n     function Barra1D(Info : string): string;\n     function loadImagem(X,Y : integer;Info : String): string;\n     function imprimeImagem(X,Y : integer): string;\n     function Centralizado(): string;\n     function PaginaM616(): string;\n     function CorPg618(): string;\n     function HabilitaArmazenaDados(): string;\n     function Armazenadados( Info : string): string;\n     function ImprimeQRCODEArmazenado(): string;\n published\n     property Serial : String read getserial  write setserial;\nend;\n\nvar\n  IMPELGINI9: TIMP_ELGINI9;\n\nimplementation          <\/code><\/pre>\n\n\n\n<p>Omiti a implementation, para que o artigo n\u00e3o fique demasiado longo.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mostra o uso de interface no lazarus<\/p>\n","protected":false},"author":1,"featured_media":19246,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,66,50],"tags":[157,240,256],"class_list":["post-19248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-lazarus","category-programacao","tag-delphi","tag-interface","tag-lazarus"],"_links":{"self":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/posts\/19248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/comments?post=19248"}],"version-history":[{"count":0,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/posts\/19248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/media?parent=19248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/categories?post=19248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/wp-json\/wp\/v2\/tags?post=19248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}