GithubHelp home page GithubHelp logo

sampleweb's Introduction

Exportar componentes VCL para D2Bridge

Gerador de código para exportar um form Delphi VCL para D2Bridge

Vídeo Explicativo:
https://www.youtube.com/watch?v=jkmD7aWrf6k&ab_channel=JoemilCassio

Olá pessoal, fiz este código pra facilitar a exportação de um form VCL para o D2Bridge

Ele irá exportar todos controles que são descendentes de TWinControl, só é necessario verificar se o D2Bridge tem suporte para componentes de terceiros

Para usar, basta adicionar as units uExportaControls.pas e View.ExportForm2Web.pas que estão na pasta exportador ao seu projeto, e adicioná-la no uses do form principal.
Pra fazer a chamada da procedure, eu usei as teclas Alt+E, configuradas no evento OnShortCut do Application.Events. Assim, ela irá pegar o form que está ativo no momento

procedure TViewMenu.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  if (Msg.CharCode = Ord('E')) and (HiWord(Msg.KeyData) and KF_ALTDOWN <> 0)
  then begin
    TExportaControls.New
      .SetForm(Screen.ActiveForm)
      .Initialize
      .ListaComponentes
      .ListaLabels
      .GeraCodigo;

    Handled := TRUE;
  end;
end;

Abra o form desejado (aqui usei o SampleForm), nele temos a procedure ExportD2Bridge, que deve ter as seguintes marcações:
{Variaveis D2Bridge} - aqui serão adicionadas as variáveis necessárias
{Yours Controls} - aqui serão adicionados os comandos de exportação dos componentes

procedure TfSampleForm.ExportD2Bridge;
var
  x: Integer;
  {Variaveis D2Bridge}
begin
  inherited;

  Title := 'Sample Form';

  TemplateClassForm := TD2BridgeFormTemplate;
  D2Bridge.FrameworkExportType.TemplateMasterHTMLFile := 'template.html';
  D2Bridge.FrameworkExportType.TemplatePageHTMLFile := 'itemtemplate.html';

  with D2Bridge.Items.add do
  begin
    Row.Items.add.VCLObj(lblTitulo, CSSClass.Text.Size.fs3 + ' ' + CSSClass.Text.Style.bold);
    {Yours Controls}
  end;

end;

E estamos prontos pra realizar a exportação.
Execute sua aplicação em VCL, vá até o form desejado e tecle Alt+E
Neste momento, será mostrado um preview do código de exportação
Clique no button Alterar na Unit, selecione a unit desejada e clique abrir
Volte ao Delphi e confira o código gerado
Agora só executar o projeto web e testar

procedure TfSampleForm.ExportD2Bridge;
var
  x: Integer;
  {Variaveis D2Bridge}
  d2bRow: IItemAdd; {var_row}
  d2bPageControl1: ID2BridgeItemHTMLTabs; {var_pagecontrol}
  d2bTabSheet1,d2bTabSheet2,d2bTabSheet3: IItemAdd; {var_tabsheet}
  d2bPanel1: IItemAdd; {var_panel}
  d2bGroupBox1: IItemAdd; {var_panelgroup}
  d2bPageControl2: ID2BridgeItemHTMLTabs; {var_pagecontrol}
  d2bTabSheet4,d2bTabSheet5: IItemAdd; {var_tabsheet}

begin
  inherited;

  Title := 'Sample Form';

  TemplateClassForm := TD2BridgeFormTemplate;
  D2Bridge.FrameworkExportType.TemplateMasterHTMLFile := 'template.html';
  D2Bridge.FrameworkExportType.TemplatePageHTMLFile   := 'itemtemplate.html';

  with D2Bridge.Items.add do
  begin
    Row.Items.add.VCLObj(lblTitulo, CSSClass.Text.Size.fs3 + ' ' + CSSClass.Text.Style.bold);
    {Yours Controls}
    d2bRow := Row.Items.add; // ----
      d2bRow.FormGroup('Label1', CSSClass.Col.colsize1).AddVCLObj(Edit1);
      d2bRow.FormGroup('Label2', CSSClass.Col.colsize3).AddVCLObj(Edit2);
      d2bRow.FormGroup('Label3', CSSClass.Col.colsize1).AddVCLObj(ComboBox1);
      d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox1);
    d2bRow := Row.Items.add; // ----
      d2bRow.FormGroup('Label4', CSSClass.Col.colsize4).AddVCLObj(Edit3);
      d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox2);
      d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox3);
      d2bRow.FormGroup('Label18', CSSClass.Col.colsize1).AddVCLObj(Edit13);
    d2bPageControl1 := Tabs;
      d2bTabSheet1 := d2bPageControl1.AddTab('Endereço').Items.add;
        d2bRow := d2bTabSheet1.Row.Items.add; // ----
            d2bRow.FormGroup('Label5', CSSClass.Col.colsize1).AddVCLObj(Edit4);
            d2bRow.FormGroup('Label6', CSSClass.Col.colsize3).AddVCLObj(Edit5);
            d2bRow.FormGroup('Label7', CSSClass.Col.colsize1).AddVCLObj(ComboBox2);
            d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox4);
        d2bRow := d2bTabSheet1.Row.Items.add; // ----
            d2bRow.FormGroup('Label8', CSSClass.Col.colsize5).AddVCLObj(Edit6);
            d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox5);
        d2bGroupBox1 := d2bTabSheet1.PanelGroup('GroupBox1', false).Items.add;
          d2bRow := d2bGroupBox1.Row.Items.add; // ----
              d2bRow.FormGroup('Label14', CSSClass.Col.colsize1).AddVCLObj(Edit10);
              d2bRow.FormGroup('Label15', CSSClass.Col.colsize3).AddVCLObj(Edit11);
              d2bRow.FormGroup('Label16', CSSClass.Col.colsize1).AddVCLObj(ComboBox4);
              d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox10);
          d2bRow := d2bGroupBox1.Row.Items.add; // ----
              d2bRow.FormGroup('Label17', CSSClass.Col.colsize5).AddVCLObj(Edit12);
              d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox11);
              d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox12);
      d2bTabSheet2 := d2bPageControl1.AddTab('TabSheet2').Items.add;
        d2bRow := d2bTabSheet2.Row.Items.add; // ----
            d2bRow.FormGroup('Label9', CSSClass.Col.colsize1).AddVCLObj(Edit7);
            d2bRow.FormGroup('Label10', CSSClass.Col.colsize3).AddVCLObj(Edit8);
            d2bRow.FormGroup('Label11', CSSClass.Col.colsize1).AddVCLObj(ComboBox3);
            d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox7);
        d2bRow := d2bTabSheet2.Row.Items.add; // ----
            d2bRow.FormGroup('Label12', CSSClass.Col.colsize5).AddVCLObj(Edit9);
            d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox8);
            d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(CheckBox9);
        {d2bRow := d2bTabSheet2.Row.Items.add; // ----
            d2bRow.FormGroup('Label13', CSSClass.Col.colsize8).AddVCLObj(Memo1);}
      d2bTabSheet3 := d2bPageControl1.AddTab('TabSheet3').Items.add;
        d2bPageControl2 := Tabs;
          d2bTabSheet4 := d2bPageControl2.AddTab('TabSheet4').Items.add;
          d2bTabSheet5 := d2bPageControl2.AddTab('TabSheet5').Items.add;
    d2bPanel1 := HTMLDIV('expanel expanel-body').Items.add;
      d2bRow := d2bPanel1.Row.Items.add; // ----
          d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(Button1);
          d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(Button2);
          d2bRow.FormGroup('', CSSClass.Col.colauto).AddVCLObj(Button3);
  end;
end;

O projeto usado é o demo Template que vem junto com o D2Bridge. Fiz uma cópia do mesmo, só abrir o projeto e testar.
Adicione ou remova componentes do form SampleForm e faça mais testes
Eu adicionei as pastas do D2Bridge no Library Path do Delphi.

Para mais informações sobre o D2Bridge, acesse o discord:
https://discord.com/channels/1168534461663690805/1168534462418649095

Para tirar dúvidas sobre este exportador, você pode entrar em contato comigo no grupo do D2Bridge no WhatsApp

Se este código te ajudou, que tal uma contribuiçãozinha 😎?


Chave PIX: [email protected]
Nome: Joemil Cássio
Valor: R$ 100,00 (ou qualquer outro valor)
Código da transferência: ExportVLC2D2Bridge
Código QrCode (Copia e Cola): 00020126450014BR.GOV.BCB.PIX0123joemil.cassio@gmail.com5204000053039865406100.005802BR5913Joemil Cassio6008Sinop-MT62220518ExportVLC2D2Bridge6304B0EF

sampleweb's People

Contributors

joemilc avatar

Stargazers

 avatar  avatar Carlos A. Caballero Yunis avatar Juvenal Batista avatar

Watchers

 avatar

Forkers

joaofilho92

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.