Ir para conteúdo
Fórum Script Brasil

Micheus

Veteranos
  • Total de itens

    3.189
  • Registro em

  • Última visita

Tudo que Micheus postou

  1. Ronaldo Lanhellas, experimente algo assim: procedure .... var CommandLine :String; begin DataConfigs.DataSet.Open; ... // posiciona no registro desejado CommandLine := Format('cmd /c net use S: %s', [DataConfigs.DataSet.FieldByName('PATH_FOTOS').AsString]); WinExec(PAnsiChar(CommandLine), SW_ShowNormal); ... // faça qualquer outra coisa que necessite end;
  2. Está interessado ainda? Sabendo quantos atletas farão parte do time, você vai permitir que ele selecione a quantidade de ótimos, bons, ruims, não é mesmo?! E esta seleção provavelmente será gravada em uma tabela - a da equipe formada, não é?! Bom, não sei que banco de dados você usa, mas supondo que seja um decente, para cada "qualidade" do atleta, você seleciona no banco todos os que não estejam na tabela em formação (not exists). Isto lhe retornará (supostamente) vários atletas com a habilidade escolhida, e tendo a quantidade de atletas disponíveis, voce poderá gerar um número aleatório que irá de 1 até esse total; daí é só percorrer a lista de resultados até chegar na respectiva posição. Este atleta entra na lista do grupo em formação e, então, você começa tudo novamente até que tenha completado o time. Esta é uma opção. (daria para pensar em outra, caso não sirva)
  3. Será que não teria alguma relação com este outro tópico: ActionMainMenuBar não mostra os menus, Os menus sumiram da ActionMainMenuBar
  4. Voce está mesmo se referindo ao componente TTreeview? Se não me falha a memória, não há o que marcar (se considerarmos isto um checkbox). O que poderia ser feito é a seleção múltipla.
  5. Voce está certo. Como disse no início, eu postei aqui por não saber qual seria o lugar correto. Eventualmente, como JavaScript roda localmente, poderia haver algum recurso para fazer o que eu preciso usando ele. De qualquer modo, agora, poderiamos dizer que este tópico deveria estar em Flash e/ou Java - fica a cargo do moderador movê-lo. ;) No caso do Java, eu encontrei um caminho através do JMF - Java Media Framework e um artigo no forum da Sun que parece útil, apesar de não ter funcionado para alguns usuários: Java Media Framework - Here is the source code to JMF Webcam app + saves jpeg. Conforme a documentação que acompanha o donwload adicional (Cross-platform Java), deve ser possível rodar a aplicação em qualquer plataforma - algo que preciso: "The JMF 2.1.1 Reference Implementation supports SunVideo / SunVideoPlus capture devices on Solaris. On Windows, most capture devices that have VFW drivers are supported. On Linux, devices that have a Video4Linux driver are expected to work, but not extensively tested." Ainda sobre Java, para quem puder pagar, no site LAB Asprise há applets para captura de imagem de câmeras e scanners (Win e *x). Grato
  6. Douglas_Soares, agora o bicho pegou. Acho que você perdeu esta parte do meu post: :rolleyes: No momento, eu realmente não tenho como implementar um exemplo - então, não dá para esperar por mim. Eu tentei apenas passar a idéia de como eu faria. Mesmo sem serem post envolvendo png, eles tem aplicação já que os métodos da classe que são utilizados são os mesmos: http://scriptbrasil.com.br/forum/index.php...st&p=359638 http://scriptbrasil.com.br/forum/index.php?showtopic=96887 http://scriptbrasil.com.br/forum/index.php...st&p=414609 Como já disse, você precisará criar os TImage dinamicamente e inserí-los no TImageList. Estes posts, tratam da criação e carga dinâmica de imagens, cópia de imagens de um para outro - coisas que precisarão ser utilizadas. Tudo passa pelo uso do canvas e você pode buscar os métodos adequados pesquisando no help. Leia os posts, releia o que comentei e tente juntar as peças para produzir o resultado que você precisa. Tenho certeza de que você conseguirá. Talvez o colega Jhonas ou Churc possam lhe ajudar. Abraços
  7. Rafael Laurindo, obrigado pelo link. Acredito que seja um caminho para chegar onde eu quero. Entretanto, acredito que irei esbarrar no fato de precisar ter o Flash ("compilador") instalado e isto não é possível - eu precisaria de uma solução freeware. De qualquer modo, swf é uma opção que eu não havia pensado e irei pesquisar para ver se encontro algo pronto disponível na net. Caso alguém lembre de alguma outra opção eu agradeço. Abraços
  8. Considerando que as imagens são png, então elas já tem a informação sobre transparência - o que explica como ele as sobrepõe à imagem do icone padrão. Como não conheço algum componente que faça isto que você quer, e como você não quer editar as imagens, talvez você pudesse considerar implementar o código para criar estas imagens e atribuí-las ao seu ImageList quando o programa inicia. - Cada elemento do TImageList, contém um descendente de TGraphic - TBitmap/TJPGImage/.... (se não estou errando a classe) - Precisaria ter instalada uma unit que desse suporte ao formato png (se não me engano, a GraphicEx da Soft-Gems) - Voce poderia então carregar em um TPNGImage (acho que é esta a classe), a respectiva imagem de fundo. Em outro TPNGImage, carregaria a imagem png do globo que você quer sobrepor a imagem de fundo. - Esta imagem resultante, você atribui a uma nova instância TImage que será adicionada ao componente TImageList. Este processo seria repetido até que você tivesse a sua sequência adiconada a lista. Estou meio enferrujado (não estou mais programando Delphi), mas acredito que algo mais ou menos assim deve funcionar. Inclusive, deixando o código livre para alterações futuras do ícone. Abraços
  9. Douglas_Soares, o globinho fica em movimento na traybar, certo?! É o que deveria acontecer, conforme previsto pelo componente. voce gostaria que por baixo desta animação estivesse o ícone da sua aplicação? Seria isto?Se for, o único modo que vejo de você conseguir isto é combinando a imagem do seu ícone com todas as imagens que você tem do globo em movimento - usando um programa como PhotoShop ou Gimp. Se cada imagem do globinho tiver o "fundo" transparente, não será problema. Caso não tenha, você terá que recortar a imagem do globo para sobrepô-la na imagem do seu ícone. Abraços
  10. rebotea, explique melhor como você está fazendo este processo de copiar de um lado para outro. Voce está usando TDBMemo ou apenas TMemo?
  11. jaumDoDelphi, esqueça qualquer quebra-galho para contornar este tipo de problema. você resolve isto utilizando apenas o método .AsString. Este recurso retornará um string do valor do campo, formatado conforme a propriedade DisplayFormat que você pode usar para os campos numéricos e data/hora. ... Writeln(F,DM.QLIST.FieldByName('COD_INT').AsString + PathSep + // AutoIncrement DM.QLIST.FieldByname('Nome').AsString + PathSep + // STR DM.QLIST.FieldByname('Cidade').AsString + PathSep + DM.QLIST.FieldByname('DATA').AsString); ... Abraços
  12. jaumDoDelphi, com uma consulta assim tão simples, por que é que você não gera logo um arquivo "csv"? Dá uma olhada neste post do colega Churc.
  13. Olá pessoal. Não estou certo se este é o local correto, mas tudo indica que sim. :unsure: Eu estou migrando um sistema desktop para web, onde no servidor roda PHP, no cliente JavaScript (ExtJS). O sistema antigo tem uma janela usada para obter o retrato de um indivíduo, onde a imagem proveniente de uma webcam é recortada no formato (3x4) na posição que o usuário determinar e gravada no banco de dados. Eu preciso implementar este tipo de recurso no novo sistema e penso a solução passa pelo uso de um applet java ou algo parecido. No entanto, como este é minha primeira experiência com algo decente em termos de web, não faço a menor ideia de por onde devo começar a busca (minhas buscas no Google tem sido em vão). Alguém teria alguma pista/dica de como poderia chegar neste tipo de recurso? Grato pela atenção
  14. Se você observar melhor o post#2 que havia citado, você observaria que não está sendo buscada NA tabela, nenhuma informação sobre a seleção realizada no grid - esta informação vem da propriedade SelectedRows. Como usar isto trambém está explicado lá.Mesmo sua abordagem sendo o uso de uma coluna temporária, o processo para obtenção das informações do primeiro grid para montar a consulta para o segundo, é exatamente a mesma: lá eu percorria todos os itens selecionados, no seu caso você trerá que percorrer todas as linhas do DBGrid para ler a tal coluna e então obter os dados da linha selecionada. Algo que há muito tempo já repeti por aqui: Quando você fala de linhas no DBGrid, está falando das linhas do dataset. Assim, se você quiser ler os valores mostrados na atual linha com foco em um DBGrid, basta ler os campos do dataset a ele ligado - será a linha correntemente selecionada. De forma similar, se você manipular o dataset, movendo o registro corrente, observará esta movimentação no DBGrid. Então, se esta sua coluna temporária é fruto de um campo calculado, percorrendo a dataset você poderá obter seu valor e usar os campos do dataset conforme o caso (T ou F). Já se esta coluna é fruto de algum "hackeamento" do DBGrid, percorrer o dataset, fará com que a linha selecionada no DBGrid seja movida e por consequencia você poerá obter o valor da tal coluna para aquele registro. É com você.
  15. arce, seguindo o que coloquei no post#2 voce já tem condição de, quando clicar no tal botão, "navegar" pelos registros selecionados no primeiro DBGrid. A questão de carregar apenas eles no segundo DBGrid (imagino que com mais informações do que você já tem no primeiro), dependendo de qual a finalidade. você poderia usar: - uma tabela temporária; - uma consulta onde você monte a cláusula where com vários OR dos campos chaves obtidos na primeira consulta; - uma tabela virtual (em memória), utilizando algum componente como os Memory Table da biblioteca RXLib, na qual você insere os dados para cada linha desejada. Abraços
  16. Acho que o problema é com o idioma... Na primeira instrução que destaquei, após ter seguido os passos do wizard, ele pede que você vá até o source do projeto e localize a linha onde o delphi cria automaticamente o datamodule e nesta linha você adicione a marca de comentários (//), para que o datamodule não seja criado automaticamente. Depois, na segunda instrução, ele ressalta que você deve incluir a unit daquele datamodule na cláusula uses da unit do seu UserSession. Captou?!
  17. Para acusar o erro na linha "MyDataModule := DataMod.TDataModule1.Create(Self);" como você diz, possivelmente você não declarou a unit do datamodule na cláusula uses da unit UserSessionUnit.pas, conforme solicitado. Voce observou este pontos do artigo? Then, check the main project file and make sure the code to automatically create the data module is removed (since we cannot have just one data module, but we must have one for each incoming request): //Application.CreateForm(TDataModule1, DataModule1); Once the VCL data module is added to your VCL for the Web project, open the UserSessionUnit.pas file. Press Alt+F11 to make sure the VCL data module is added to the uses clause of the UserSessionUnit.pas unit.
  18. E parece certo. Isto que você está tentando fazer é chamado "referência circular" - não é permitido. O que afinal você pretende com uma unit que "precisa" dela própria? Como está não faz o menor sentido.
  19. Faz o seguinte, dá uma olhada neste post, analisa e brinca com o exemplo que eu cito lá (vai precisar de dois PC's na rede local). ;)
  20. Eu pensei que saberia faze isto, considerando que tivesse os fontes inclusos, mas como apenas existe o .exe, onde é que eu vou achar View unit nesta tela: :wacko: homem de pouca fé... Não desista tão rápido. :) Ok. mas adianto que você terá que trocar seu TMemo por um TRichEdit, e já algo a respeito no forum. Abraços
  21. Não vejo qualquer problema em você criar um procedimento para o OnClick no seu form (onde estão as guias) e no código do seu procedimento chamar a sua procedure para o click que está na tal unit. obs: do executável, só dá para ver a tela principal - não mostra nada sobre o código.
  22. Novamente a mensagem de erro é clara.Uma coisa é a declaração de uma procedure e outra é a de um método. Apesar de similares, não são a mesma coisa. Para que você possa atribuir um "procedimento" à um evento de qualquer componente, você tem que declará-lo com todos os parâmetros definidos para aquele evento e ele tem que estar declarado dentro de uma classe - neste caso você pode fazer isto no seu form. Algo assim: TForm1 = Class(TForm) ... procedure Cliquei(Sender :TObject); end; ... Não tenho como fazê-lo não. Aqui na empresa não tenho acesso ao 4share e em casa, esta semana, vai ser difícil de eu conseguir sentar na frente do micro para este tipo de avaliação. Desculpe. Abraços
  23. Bom, eu não quiz entrar no mérito do assunto antes porque não tenho a menor idéia do que você já tinha implementado... ... mas já que você encontrou este "problema", parece-me que ao criar os memos, em run-time, você não está inicializando a propriedade Name deles. Esta propriedade deve ter valor único em todo o form (você já deve saber disto) e, baseado no pouco que você postou, você pode definir o nome como sendo o id do usuário em questão (se há apenas um memo para cada usuário) ou fazer uma concatenação para gerar o tal nome. Como benefício, você poderá fazer a busca imediata pelo nome do componente, ustilizando o método FindComponent(<nome_componente>) (do Form). Dê uma avaliada neste link - post#3, onde tento explicar um pouco do que foi implementado no exemplo em anexo. Olhe ele se for o caso (se não me engano, há comentários). Abraços
  24. Douglas, a mensagem é bem clara. Seu procedimento espera receber como parâmetro um componente da classe TMemo, enquanto você o chama passando o valor em Components[..] que é a classe ancestral TComponent. Assim, supondo que você esteja certo de que o componente apontado por Components[..] é mesmo da classe TMemo, você pode fazer o type-cast sem medo de ser feliz. ;) Sugestão: ... if ExistePalavra(nome, 'memo') then if Components[i] is TMemo then Escrevemensagem(TMemo(Components[i])); ...
  25. Seu problema reside no fato de que você está usando um FOR. Note que você indexa este FOR até o item Count-1. Assim, se Count inicialmente valia 6, então seu for irá fazer interações até que atinga o valor 5 (6-1). Caso você delete um dos itens dentro do FOR, agora você terá apenas 5 itens na lista, ou seja, poderá indexá-los de 0..4 - Resultado: na última interação do FOR, cujo valor será 5, o maior indexador esperado seria 4 (erro: list index out of bound). Para esta situação, você deve usar um WHILE. Assim, você incrementa o indexador (variável "i") apenas quando não deletar um item. Algo assim: ... i := 0; while i < (Lista.Count -1) do begin If Lista[i] = Nome then begin Lista.Delete(i); ShowMessage('O Professor ' + Nome + ' foi removido do Sistema!'); Lista.SaveToFile('c:\Gfe\Arquivos\Notas\Professor.txt'); ListProfessor.DeleteSelected; end else Inc(i); end; ... OBS: Se condirarmos que o seu arquivo não tenha um cabeçalho, então você ainda ter que observar que o indexador deve começar do primeiro elemento que é 0 e não 1, conforme você usou no FOR.
×
×
  • Criar Novo...