Discussão do artigo "Controles gráficos personalizados. Parte 1: Criando um controle simples"

 

Novo artigo Controles gráficos personalizados. Parte 1: Criando um controle simples foi publicado:

Este artigo cobre os princípios gerais para desenvolvimento de controles gráficos. Vamos preparar ferramentas para um trabalho rápido e conveniente com objetos gráficos, analisar um exemplo de criação de um simples controle para inserir texto ou dados numéricos, bem como os meios para usá-los.

Autor: Dmitry Fedoseev

 
O que será que está planejado para a parte 2?
 
sergeev:

O que será que está planejado para a segunda parte?
Na segunda parte, uma biblioteca de controles padrão (mais de 10 itens: caixa de seleção, caixa de combinação, barras de rolagem, lista, botões de opção etc.); na terceira parte, a criação de formulários com controles.
 

A ideologia mudará? ...Eu realmente preciso que ela mude.

Talvez devêssemos começar com a terceira parte - criar formulários com seus controles.

e depois passar para a próxima parte - o funcionamento interno de cada elemento.

Ou seja, primeiro instrua os usuários sobre como o complexo funciona como um todo, como o elemento filho troca mensagens e eventos com o elemento pai, como a ideologia funciona em geral. Isso é importante porque é desejável passar do geral para o particular, ou seja, para as sutilezas de cada elemento específico.

E, a propósito, você não deve enfatizar o desenho, ou seja, como cada elemento é desenhado (você pode fazer isso brevemente, mas todos os elementos são desenhados pela função Show, para que os usuários saibam onde procurar em cada classe para ver o bloco de desenho). O desenho não é realmente nada comparado à ideologia de todo o processo.

Seria melhor mostrar alguns exemplos prontos de formulários nos quais todos os elementos estão vinculados.

Ou seja, em um exemplo pronto, detalhar os detalhes.

 
sergeev:

A ideologia mudará? ...Eu realmente preciso que ela mude.

Talvez devêssemos ter começado com a terceira parte, a criação dos moldes.

e depois passar gradualmente para o funcionamento interno de cada elemento.

O que exatamente é ideologia?

Uma forma é basicamente nada - coordenadas x e y.

Se você começasse com um formulário, o que escreveria nele - "este é um formulário, e aqui você adicionará um elemento de controle, e aqui você processará seu evento...", mas ninguém sabe que tipo de elemento de controle é esse, o que ele representa.

Se você criar um formulário na segunda parte e tiver apenas um elemento de controle, isso não é indicativo e não é bonito.

 
Integer:

O que exatamente tem a ver com a ideologia?

A forma é essencialmente nada - coordenadas x e y.

Expandido na resposta logo acima.

Você está certo. Esse é o ponto, a forma não é nada. O que importa é o processo de troca de eventos e a interação de todos os elementos como um todo. E isso só pode ser explicado quando você demonstra o trabalho do sistema como um todo, não elemento por elemento.

 
Integer:

Se você criar um formulário na segunda parte, enquanto tivermos apenas um elemento de controle, isso não será indicativo nem bonito.
Você já tem o formulário e a classe de controle prontos?
 
sergeev:

Expandiu a resposta logo acima.

Você está correto. Esse é o ponto, a forma não é nada. O principal é o processo de troca de eventos e a interação de todos os elementos como um todo.

Haverá um botão OK e Cancelar no formulário, salvando dados caso o terminal seja reiniciado. Haverá manipulação de eventos, a capacidade de arrastar o formulário e minimizá-lo.
 
sergeev:
Você tem o formulário e a classe de controle prontos?

Bastante prontos. No início, fiz isso sem subjanelas, agora estou redesenhando tudo para funcionar em subjanelas.

 
sergeev:

A ideologia mudará? ...Eu realmente preciso que ela mude.

Talvez devêssemos ter começado com a terceira parte - criar formulários com seus controles.

e depois passar para a próxima parte - o funcionamento interno de cada elemento.

Ou seja, primeiro instruir os usuários sobre como o complexo funciona como um todo, como as mensagens e os eventos são trocados entre o elemento filho e o elemento pai, como a ideologia funciona em geral. Isso é importante, pois é desejável passar do geral para o particular, para as sutilezas de cada elemento específico.

E, a propósito, não se deve enfatizar a renderização, ou seja, como cada elemento é desenhado. É melhor mostrar alguns exemplos de como as formas funcionam e como todos os elementos estão conectados. O desenho não é realmente nada comparado à ideologia de todo o processo.


Não me diga que já existem exemplos suficientes de criação de códigos simples, mas você não pode criar uma hierarquia de classes bem-sucedida ou, pelo menos, um esquema fácil de implementar de um produto universal e facilmente transformável. Até mesmo as classes padrão da MQ geralmente complicam a criação de programas, pois estabelecem possibilidades antecipadamente.

 
Integer:
Haverá um botão OK e Cancelar no formulário, salvando os dados caso o terminal seja reiniciado. Haverá manipulação de eventos, a capacidade de arrastar o formulário, minimizar.

OK. Isso é muito bom.

Se você falar sobre as funções de alto nível na segunda parte, os componentes do artigo serão usados mais rapidamente.
Eu ainda começaria com formulário + botões (+ caixa de entrada) e, somente na terceira parte, falaria sobre componentes de controle específicos: listas, menus etc.

Afinal de contas, a tarefa é ensinar como escrever esses controles. Mas, enquanto não houver um formulário onde inseri-los, o artigo não terá um efeito tão espetacular e necessário.
Além disso, assim que você apresentar Form+Button (quero dizer, 3 tipos - rádio, push, check) + EditBox já no segundo artigo, o usuário verá as classes como um todo e poderá criar seus próprios controles independentemente.