sábado, 3 de abril de 2021

Fmx - programa cadastros de amigos


Sempre que ficamos muitos dias sem programar,
Quando voltamos, fica aquele embaraço e perguntas:
Por onde começar? O que fazer? tentar corrigir alguns bugs
De programas passados? nisto lá vai um bom tempo perdido...
Nesta procura, procurei inspiração nos blogs que temos,
E no canal do youtube, e foi lá vendo um vídeo de um programa,
Que criamos alguns anos atrás que tive a idéia de convertê-lo
Para uma janela gráfica do C++ builder.

Criando Projeto:
Quando criamos um projeto no C++ builder, ele gera automaticamente,
Estes quatros arquivos antes memo de salvar e compilar:
Project1.cpp
Este arquivo funciona como a função main() do C/C++,
Ele inicializa os Forms e o que for necessário para o início
através de um método interno.
(Não entendo quase nada disto, mas também não acho isto
importante, pelo menos por agora )

Unit1.CPP: Neste arquivo escrevemos nossas rotinas,
em geral, tudo o que sabemos da linguagem e precisamos aplicar 
para que nosso programa funcione corretamente.

Unit1.H: Neste arquivo escrevemos os protótipos
das funções, declarações de variáveis, de qualquer
tipo aceito pelo C ou C++.

Unit1.FMX:
Neste arquivo são escritos, todas as informações
dos componentes arrastados para o form,
e o interessante dele, é que ele escreve tudo
automaticamente, porém em Delph, mas não me importo.

O que mais me agrada no C++ builder é que podemos
programar sem a IDE (Precisa ter um bom conhecimento)
E possuir uma linha de comando bem configurada,
Apontando para os includes, libs, e ferramenta de builds.
qualquer dia vou tentar isto.
Poderia ter criado o programa num único Form,
Mas por questão de organização e de limpeza de 
Variáveis, limpeza de tela preferi, criar cada função
 em um form Independente, mas até este momento
eu não sabia que iria precisar de alguns valores de variáveis
em outros forms, aqui começaram os problemas.
Depois de muitas cabeçadas me lembrei do comando “extern”,
Que estudamos no começo de nossa formação, mas que na prática,
Nunca o tinha usado antes. Foi a nossa saída, e o programa começou a funcionar.
Quando comecei escrevendo logo declarei uma struct do C,
Esta mania de criar projetos em C++, e mesclar com códigos do C ,
É grave, “Acho que agente sai do C, mas o C nunca sai da gente”
Bom, isto não me incomoda muito, afinal, o C++ builder está preparado
Para aceitar qualquer função do C.
Mas fazendo meus testes declarei uma classe simples do C++,
E tudo funcionou normalmente, porque na verdade,
Uma struct do C e uma classe simples do C++, não possui
Grandes diferenças, eu penso sinceramente que só descobrimos
O poder das classes do C++ quando começamos entender
Método construtor
Método destrutor
Métodos e variáveis privados
Métodos e variáveis públicos
Métodos e variáveis protegidos
Poliformismo
Classes derivadas, etc...
Se um programa é simples e não precisa disto então,
Porque usar uma classe: (Opinião)
O programa terminou e ficou tudo funcionando perfeitamente,
Mas ainda tem uma questão, e se eu quisesse manter os cadastros
Criados para comparação quando saísse e retornasse para o programa?
Certamente precisaríamos salvar tudo em um arquivo,
Nisto o programa sofreria mudanças em todos os forms,
pensando bem isto ficará para uma próxima versão.

Se alguém tiver interesse no projeto, basta entrar em contato.



//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click ( TObject *Sender ) {

Button1 -> Visible = true;

Button2 -> Visible = true;


Edit1 -> Visible = true;

Edit2 -> Visible = true;

Edit2 -> SetFocus ( );

Edit3 -> Visible = true;


if ( Edit2 -> Text != "" && Edit3 -> Text != "" ) {

  a++;

          codigo = a;

          Edit1 -> Text = StrToInt ( a );

  amigo [ codigo ].cod = codigo;


char *pt;

pt = ( char * )  malloc ( 100 );

String st;

st += Edit2 -> Text;

wcstombs (  pt, st.c_str ( ), 100 );

*amigo [ codigo ].nome = pt;


char *pt_2;

pt_2 = ( char * )  malloc ( 100 );

String st_2;

st_2 += Edit3 -> Text;

wcstombs (  pt_2, st_2.c_str ( ), 100 );

*amigo [ codigo ].telefone = pt_2;

}

if ( Edit2 -> Text == "" || Edit3 -> Text == "" ) {

   T_Rect_3 ( 60, 260, 390, 20 );

   T_Text_2 ( 60, 260, 400, 20, 16, true, 0, "Um ou mais campo do cadastro está vazio" );

}

}

//---------------------------------------------------------------------------



 

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.