Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
ElementSet, onde você tem que especificar (1) propriedade e valor ou (2) propriedade, modificador e valor.
Sim, é universal em termos de acesso às propriedades de controle.
Geralmente o PropGet/Set é um bom mecanismo para lidar com classes de modelos quando a interface herdada é inicialmente desconhecida.
Mas quero trazer a discussão de volta à minha pergunta original - como posso fazer um "começo rápido" para um programador sobre o esquema de cores dos controles?
E é possível implementar não uma classe funcional (SetBgColor ou SetProp(Enum_Color, ), etc.), mas uma classe mais universal de atributos.
Para que todos os controladores pudessem acessar uma classe universal de atributos e o codificador pudesse facilmente entender qual cor é usada por qual controlador.
Mas tudo isso é o meu raciocínio em relação ao meu esquema. Não excluo que isso ainda vai mudar muito quando eu começar a transição. Portanto, tudo o que escrevi acima pode não ser mais relevante para o tópico em discussão aqui. )
Em princípio, concordo que ficará claro que cores tem e o que pode ser mudado.
há uma pergunta então - o tema implica redundância de parâmetros não utilizados?
Sim, é redundante, para todas as variantes. Mas então é conveniente criar um novo tema, repintando e mudando os valores do anterior. Assim como os temas do Windows.
P.S.
E eu sou cético sobre mudanças em massa de alguns valores pelo codificador diferentes daqueles usados no tema atual. Isso me faz lembrar de um projeto Delphi onde a primeira coisa que você tenta fazer é pintar a interface com suas próprias cores que, posteriormente, não muda ao mudar o tema do sistema.
E por que manchar os estilos de design em algum lugar? Herdar uma classe temática de um dos temas existentes e refazer somente aqueles valores nela que precisam ser alterados.
existe esta tecnologia CSS
1) conhecido e bem documentado
2) familiar e versátil
3) tags==controles em princípio, o que o torna adequado para nossa tarefa
experimente, deve funcionar como pretendido.
há uma tecnologia CSS
Depois vá direto para LESS / SCSS (SASS)
Depois vá direto para LESS / SCSS (SASS)
ugh, Lass é provavelmente bom, mas não precisamos de sua funcionalidade. não estamos fazendo um intérprete.
Adotamos puramente o princípio de construir e redefinir estilos em cascata^seletiva^pontualmente - a maneira como eles fazem isso.
E não deixe de incluir uma opção de design responsivo para diferentes resoluções. Ver Consultas de Mídia no CSS
E algumas partes podem ser fixas em tamanho, enquanto outras podem se esticar o máximo que podem.
Prezados membros do fórum, não tenho nenhum desejo de desmotivar ninguém, mas na minha opinião, a tecnologia em discussão é tão complexa que não pode ser implementada por esforços conjuntos dispersos. Não podemos combinar eficazmente estes esforços, pois todos nós diferimos em níveis de compreensão, profissionalismo e abordagens... Também estamos separados por distâncias e até mesmo por países.
Minha conclusão é que esta tecnologia pode ser implementada por um único desenvolvedor que trabalhou longa e duramente nela. Talvez mais de um ano. Mas é improvável que esta pessoa se aproxime desta tecnologia porque ele se esforça demais, tem muita alma e simplesmente se esgota com este trabalho... O projeto é dele e ele tem o direito de não distribuí-lo livremente. (Talvez no início, mas nem sempre).
Creio que esta tecnologia já foi implementada na MQL.
P.S. Embora, mesmo que seja - por que não tentar implementá-lo novamente? ))
Por que poderia ser útil:
1. A interface no bitmap é rápida. Tão rápido que é praticamente indistinguível da interface do sistema. Por exemplo, implementei elementos translúcidos com gradientes, emesmo quando eles se movem, eles são suavemente renderizados sem qualquer atraso visível, levando em conta a mistura de cores e o cálculo do canal alfa em outros objetos com gradientes translúcidos.
2. A interface é escalável. Você pode tornar a aplicação mais complexa e não vai diminuir a velocidade devido à eliminação e criação de um grande número de objetos gráficos. Os custos de redesenhar são mínimos, é apenas substituir um quadro, em milésimos de segundo.
3. Você pode criar controles prontos e fornecer a capacidade de criar novos controles, porque você pode fornecer seu próprio pool de eventos, por exemplo:
OnMouseDown - pressionado o LKM
OnMouseUp - pressione o botão do mouse
OnMouseHoverOn - passar o cursor do mouse sobre um objeto
OnMouseHoverOut - move o cursor do mouse para longe do objeto
OnMouseClick - pressione e clique dentro dos limites do objeto
OnMouseDblClick - clique duplo do mouse dentro dos limites do objeto
OnDragStart - evento que ocorre uma vez no início do movimento com o botão esquerdo do mouse pressionado
OnDragMove - evento gerado durante o movimento com o botão esquerdo do mouse
OnDragEnd - evento gerado após mudança com LKM
OnPut - objeto é lançado para outro objeto
OnGet - objeto é jogado em outro objeto
OnFocus - objeto tem foco
OnBlur - objeto perde o foco
OnResize - o objeto mudou de tamanho
OnParentResize - o objeto pai mudou de tamanho
OnKeyPress - uma tecla pressionada
OnChange - valor de um campo alterado
etc.
Você está exagerando um pouco no que se segue:
A velocidade na qual um bitmap é desenhado depende de seu tamanho. Se você redesenhar todo o bitmap representando a janela quando você redesenhar a peça, a resposta será lenta (verificada). A solução óbvia é ter apenas a área do bitmap pintada de novo.
Entretanto, para redesenhar apenas parte do padrão bitmap representando uma janela, você precisa armazenar a máscara digital do bitmap na memória (em uma matriz). Em seguida, você precisa navegar dentro desta máscara, e encontrar o padrão desejado dentro dela. No entanto, leve em conta que pode haver muitas janelas. Agora avalie a quantidade de memória necessária para armazenar as máscaras de todas as janelas. Você poderia criar um sistema prioritário para escolher quais janelas lembrar e quais "esquecer", e quando. No entanto, não é uma coisa fácil de se fazer.
Você tem que entender, redesenhar é reescrever valores em uma matriz, e se você precisar reescrever 1000000 valores (número aproximado de pixels na imagem da janela e no bitmap), não serão "milésimos de segundos", mas segundos. Portanto, você deve desenhar uma janela completamente apenas uma vez, salvá-la na memória e depois, em eventos, redesenhar cada objeto separadamente. Então, a velocidade será muito alta.
Aparentemente, você implementou apenas objetos separados, mas tente criar uma janela e implementar interatividade de seus elementos ali. Você entenderá o que quero dizer.
Quanto aos eventos citados, sua implementação no programa não está conectada com a tecnologia de controle de desenho e deve estar presente em qualquer interface.
...
Aparentemente, você só implementou objetos individuais, mas tente criar uma janela e implementar a interatividade de seus elementos ali. Você verá o que quero dizer.
...
Você está exagerando um pouco o seguinte:
A velocidade de desenho do bitmap depende de seu tamanho. Se você repintar o bitmap inteiro representando uma janela, a resposta será lenta (testada). A solução óbvia é ter apenas a área da peça a ser repintada.
Entretanto, para redesenhar apenas parte de um desenho de bitmap representando uma janela, você precisa ter uma máscara digital desse bitmap armazenada na memória (em uma matriz). Em seguida, você precisa navegar dentro desta máscara, e encontrar a parte que deseja nela. No entanto, leve em conta que pode haver muitas janelas. Agora avalie a quantidade de memória necessária para armazenar as máscaras de todas as janelas. Você poderia criar um sistema prioritário para escolher quais janelas lembrar e quais "esquecer", e quando. No entanto, esta não é uma tarefa fácil.
Você tem que entender, redesenhar é reescrever valores em uma matriz, e se você quiser reescrever 1000000 valores (número aproximado de pixels na imagem da janela e no bitmap), serão segundos, e não "milésimos de segundo". Portanto, você deve desenhar uma janela completamente apenas uma vez, salvá-la na memória e depois, em eventos, redesenhar cada objeto separadamente. Então, a velocidade será muito alta.
Você provavelmente implementou apenas objetos únicos, mas tente criar uma janela e implementar interatividade de seus elementos lá. Você entenderá do que estou falando.
Quanto aos eventos citados, sua implementação no programa não está relacionada à tecnologia de controle de desenho e deve estar presente em qualquer interface.
Gostaria de fazer um pequeno esclarecimento:
Primeiro criamos uma máscara digital da janela com todos os seus elementos. Depois criamos um bitmap com ResourceCreate(). Temos nossa janela na tabela.
Então movemos o mouse sobre a interface desta janela e pegamos, por exemplo, o evento pontiagudo (_Objeto_Pontuado).
Descreverei duas abordagens de implementação da interatividade de objetos - uma ruim, a outra - melhor:
1. Se a máscara digital de nossa janela não foi salva na matriz após sua primeira criação, então para mudar qualquer detalhe do desenho daquela janela, precisamos recriá-la completamente. Ou seja, é preciso digitalizá-lo novamente. Isto por si só leva tempo porque é necessário inicializar a matriz com os valores de cor dos pixels de todos os padrões de janela para passá-la para ResourceCreate(). Quanto maior a janela e quanto mais detalhes ela contiver, mais demorará (cerca de 250 milissegundos a 2 segundos). E assim, em cada evento de cada elemento. Esta opção é muito defeituosa.
2. Se uma máscara numérica foi armazenada em uma matriz, só precisamos reinicializar aqueles valores que se relacionam com uma parte específica daquela janela. Encontramos essa parte na matriz e reescrevemos seus valores. A seguir, - enviamos a matriz para ResourceCreate() e imediatamente obtemos o resultado.
Essa é na verdade a tecnologia completa. Quase)))