Ir para conteúdo
Fórum Script Brasil

Micheus

Veteranos
  • Total de itens

    3.189
  • Registro em

  • Última visita

Tudo que Micheus postou

  1. Já é meio velhinha, mas sempre tem quem não leu. ;) _______________________________ PREZADOS COLEGAS Há um ano e meio troquei o programa [Noiva 1.0] pelo [Esposa 1.0] e verifiquei que o Programa gerou um aplicativo inesperado chamado [bebê.exe] que ocupa muito espaço no HD. Por outro lado, o [Esposa1.0] se auto-instala em todos os outros programas e é carregado automaticamente assim que eu abro qualquer aplicativo. Aplicativos como [Cerveja_Com_A_Turma 0.3], [Noite_De_Farra 2.5] ou [ Domingo_De_Futebol 2.8], não funcionam mais, e o sistema trava assim que eu tento carregá-los novamente. Além disso, de tempos em tempos um executável oculto (vírus) chamado [sogra 1.0] aparece, encerrando Abruptamente a execução de um comando. Não consigo desinstalar este programa. Também não consigo diminuir o espaço ocupado pelo [Esposa 1.0] quando estou rodando meus aplicativos preferidos. Sem falar também que o programa [sexo 5.1] sumiu do HD. Eu gostaria de voltar ao programa que eu usava antes, o [Noiva 1.0], mas o comando [ Uninstall.exe] não funciona adequadamente. Poderia ajudar-me? Por favor! Ass: Usuário Arrependido RESPOSTA: Prezado Usuário Arrependido, Sua queixa é muito comum entre os usuários, mas é devido, na maioria das vezes, a um erro básico de conceito: muitos usuários migram de qualquer versão [Noiva 1.0] para [Esposa 1.0] com a falsa idéia de que se trata de um aplicativo de entretenimento e utilitário. Entretanto, o [Esposa 1.0] é muito mais do que isso: é um sistema operacional completo, criado para controlar todo o sistema! É quase impossível desinstalar [Esposa 1.0] e voltar para uma versão [Noiva 1.0], porque há aplicativos criados pelo [Esposa 1.0], como o [Filhos.dll], que não poderiam ser deletados, também ocupam muito espaço, e não rodam sem o [Esposa 1.0]. É impossível desinstalar, deletar ou esvaziar os arquivos dos programas depois de instalados. Você não pode voltar ao [Noiva 1.0] porque [Esposa 1.0] não foi programado para isso. Alguns usuários tentaram formatar todo o sistema para em seguida instalar a [Noiva Plus] ou o [Esposa 2.0], mas passaram a ter mais problemas do que antes (leia os capítulos 'Cuidados Gerais' referente a ' Pensões Alimentícias' e 'Guarda das Crianças' do software [CASAMENTO]. Uma das melhores soluções é o comando [DESCULPAR.EXE /flores/all] assim que aparecer o menor problema ou se travar o micro. Evite o uso excessivo da tecla [ESC] (escapar). Para melhorar a rentabilidade do [Esposa1.0], aconselho o uso de [Flores 5.1], [ Férias_No_Caribe 3.2] ou [Jóias 3.3]. Os resultados são bem interessantes! Mas nunca instale [secretária_De_Minissaia 3.3], [Antiga_Namorada 2.6] ou [Turma_Do_Chopp 4.6], pois não funcionam depois de ter sido instalado o [Esposa 1.0] e podem causar problemas irreparáveis no sistema. Com relação ao programa [sexo 5.1] esquece! Esse roda quando quer. Se você tivesse procurado o suporte técnico antes de instalar o [Esposa1.0] a orientação seria: NUNCA INSTALE O [ESPOSA 1.0] sem ter a certeza de que é capaz de usá-lo! Agora.... Boa sorte!
  2. Micheus

    Captura de Tela

    JGS, dê uma olhada neste tópico: Keybd_event(vk_snapshot,0, 0, 0);, Como incluir a seta do mouse na captura (do começo ao fim)O colega Paulo Nobre expos nele o código que você poderá usar. Abraços
  3. aalessandre, pelo seu post em outro tópico, parece que você está usando aversão ZEOSBO-6.6.2-rc.zip. Estes rc é de release candidate, ou seja, é uma candidata à versão final, mas que pode estar sujeita a algumas instabilidades. Voce poderia experimentar baixar a versão ZEOSDBO-6.6.4-stable.zip (observe que é uma versão superior e estavel - stable). Pode ser que você não tenha mais o problema relatado neste tópico. Mas para instalá-la, observe as orientações do colega Jhonas - deixe tudo limpo antes. Boa sorte.
  4. Sonyer, de qualquer modo, o caminho é similar: procedure TForm1.BtnBalizarClick(Sender :Object); begin if Pos('google', Edit1.Text) > 0 then // adiciona na baliza do google else if Pos('dailymotion', Edit1.Text) > 0 then // adiciona na baliza do dailymotion else if Pos('youtube', Edit1.Text) > 0 then // adiciona na baliza do youtube end;No seu Edit, altere a propriedade CharCase para ecLowerCase de modo que o texto estará sempre minúsculo. Acho que era isso. Abraços
  5. nsouza, se for para programar .NET então, como você já tem o conhecimento, parece que é mesmo a melhor continuar com o VB. O Delphi 8 trabalha com a versão 1.0 (talvez a 1.1) do .NET e algumas versões posteriores também. O suporte ao .Net 2.0 só apareceu no 2007 (Delphi Finalmente é compativel com .Net 2.0) e no site da CodeGear, o suporte ao .Net 3.5 aparece no RAD Studio 2009. Com certeza, a Microsoft estaria muito a frente neste quesito (e nem poderia ser diferente ;)) Mas quanto a programação Win32, sem dúvida o Delphi 7 continua sendo a melhor opção (na minha opinião). Abraços
  6. Sonyer, uma vez que no esquema de localização (acho que diz respeito a seu outro tópico sobre este assunto), no evento OnFind, quando RichEdit1.FindText retorna uma posição válida, você terá o texto selecionado baseado no código que lá está: ... FoundPos := RichEdit1.FindText(ReplaceDialog1.FindText, StartSearch, EndSearch, Options); // Marca (seleciona) o texto encontrado if FoundPos <> -1 then begin RichEdit1.SelStart := FoundPos; RichEdit1.SelLength := Length(ReplaceDialog1.FindText); RichEdit1.SetFocus; end; end; O que ocorre ao termino do bloco (após o SetFocus), é que a propriedade SelText conterá o texto selecionado. No seu exemplo, seria: google.com.br; Então, se você ainda precisa fazer algum outro teste sobre o conteúdo selecionado, este é o momento: ... FoundPos := RichEdit1.FindText(ReplaceDialog1.FindText, StartSearch, EndSearch, Options); // Marca (seleciona) o texto encontrado if FoundPos <> -1 then begin RichEdit1.SelStart := FoundPos; RichEdit1.SelLength := Length(ReplaceDialog1.FindText); RichEdit1.SetFocus; FoundPos := Pos('google', RichEdit1.SelText); if FoundPos > 0 then begin // aqui você faz algum processamento end; end; end; Pode ser conveniente que você converta para upper case ou lower case o texto para uma comparação sem erros: FoundPos := Pos('google', LowerCase(RichEdit1.SelText)); ou FoundPos := Pos('GOOGLE', UpperCase(RichEdit1.SelText)); Caso a tal palavra a ser procurada na seleção esteja armazenada em uma variável ou algo assim (ou seja, não seja estática - constante), então pode ser conveniente usar uma das funções sobre ela também. Abraços
  7. nsouza, dependendo do que seja o motivo deste "não consegui", pode ser que este tópico lhe ajude: Conexão MSaccess no Delphi 8 (ref. DevMedia) Este artigo fala um pouco sobre o Delphi 8: Borland Delphi 8 for The Microsoft .NET Framework (ref. ActiveDelphi) - segundo consta lá, Access é suportado. Se você está começando com o Delphi 8, seria interessante pensar em uma versão posterior ou mesmo permanecer na 7 (caso não use .Net). Ainda outro dia, citei que cheguei a instalar ele, mas não o recomendaria - achei uma porcaria (principalmente "pesado"). Para não dizer que sou o único a pensar assim veja este tópico: Discusão sobre Delphi 8 (ref. Via6) Abraços
  8. Sitolino, aparentemente é apenas uma questão da instalação do driver ou configuração do BDE. Quando usa o IBOConsole, ele vai fazer uso da biblioteca "nativa" (GDS32.DLL). Como você configurou o camponente TDataBase do seu projeto? Você usou um alias definido via BDE Administrator? Que driver está usando (ODBC, ...)? As maquinas client, tem o BDE instalado? Abraços
  9. marcelo de souza dias, nativamente não há uma função no firebird para este fim.Mas você pode implementá-la a través da criação e instalação de uma UDF (User Defined Function) criada para este fim ou mesmo, criando uma procedure que retorne resultado extenso. Abraços
  10. denim, você pode encontrar alguma informação com relação a falhas do servidor do bando na pasta de instação dele, em uma arquivo chamado Firebird.log.Quanto a recuperação de dados perdidos, não sei se você vai conseguir recuperá-los não. O apropriado é que haja uma rotina de backups para que nestas eventualidades, tenha-se de onde buscar as informações. Quanto a uma possível corrupção do banco, você pode fazer uso deste artigo: Recuperando banco de dados FireBird Porém, os dados perdidos provavelmente não terão como ser recuperados. Abraços
  11. Geomar Canjundo, a verificação pode ser baseada na data atual em relação com o campo onde você grava a data do pagamento. Em algum lugar, você deve armazenar a informação sobre os pagamentos e também deve ter algum lugar onde tem a informação de que o usuário está matriculado e ativo. Se você informar o banco de dados em uso, o nome das tabelas e campos envolvidos, pode ficar mais fácil de exemplificar. Abraços p.s. Aos brasileiros tão acostumados ao termo (propina) não se impressionem, em Portugal trata-se apenas do que chamamos de mensalidade. ;)
  12. Micheus

    Email com Indy

    Eder, sobre a imagem de fundo do e-mail, veja se este artigo lhe ajuda: Como criar emails em formato HTML usando Indy 9? (por Massuda) E tem também este tópico: Html com imagens dentro corpo do e-mail (ref. forum DevMedia) Quanto ao erro, por acaso você teria trocado a versão do Indy deste o primeiro uso? O erro diz que a função não é conhecida. Pode ter sido removida ou estar em outra unit. Mas, aa pior das hipoteses, você pode criar ela na sua unit: Function CreateUniqueID(HexMode:Boolean=True):String; Var A : Int64; Begin a := Trunc(Now*100000000); If HexMode Then Result := IntToHex(a,14) Else Result := IntToStr(a); Sleep(50); End;conforme a versão do seu Delphi, talvez você não possa usar o cabeçalho com a inicialização do parâmetro, então, retire a igualdade e na chamada à função passe o parâmetro (neste caso True). Abraços
  13. Sempre há. ;) Por acaso, junto com o *.xml, você teria o arquivo *.xtr (Transformation File)? Se sim, poderia usar os componentes TXMLTransformProvider + TClientDataset (paleta Data Access) e com este último, acessar os dados como um dataset qualquer e assim facilmente exportar para *.txt (já tem tópicos sobre isto aqui no forum). Caso não possua o arquivo *.xtr, você pode gerar um a partir do seu arquivo *.xml e utilizá-lo posteriormente. O Delphi fornece uma ferramenta que possibilita isto, trata-se do XML Mapper. Para não me alongar aqui, eu pesquisei um pouco e encontrei um bom artigo que explica como trabalhar com xml do modo que citei: Manipulando um arquivo XML através de um ClientDataSet Abraços
  14. Micheus

    quickreport

    Não entendi direito porque isto estaria ocorrendo. Verifique o que falei acima e se possível, informe como você configurou a propriedade Expression das bandas QRGroup. Abraços
  15. Micheus

    quickreport

    lucy4000, qual a relação deste tópico com o outro: http://scriptbrasil.com.br/forum/index.php?showtopic=133014 São sobre o mesmo problema?
  16. lucy4000, faça select's separados um para cada tipo (filtre eles na cláusula where), depois, no relatório você usa 3 subdetails onde você link na propriedade DataSet coloca o respectivo dataset na ordem desejada. Outra opção, seria usar 3 select's com union. Cada select filtra o tipo específico, na ordem que você precisa. Para garantir a ordenação que você possa precisar (além do tipo) você pode cria uma coluna com valor sequencial fixo onde este campo é usado na cláusula order by. Por ex.: select 1 as Ordem, campo1, campo2, ... from LivroCaixa where tipo = Receitas union select 2 as Ordem, campo1, campo2, ... from LivroCaixa where tipo = Despesa union select 3 as Ordem, campo1, campo2, ... from LivroCaixa where tipo = Movimentacao order by 1, 2, ...os números na cláusula order by, correspondem as colunas da consulta pelo qual queremos ordenar o resultado. Acho que é isso. Abraços
  17. JGS, no help (F1), em I/O Erros, consta: 102 File not assignedEste erro diz respeito ao fato de você estar tentando gravar no arquivo sem ter primeiramente associado "a variável ao arquivo em disco" - faltou o AssignFile. Veja este bom artigo para mais detalhes: Manipulando arquivos textos Abraços
  18. NemesiS, veja se estes tópicos lhe ajudam:Gravar Img Capturada De Webcam, E Salvá-la Em Dir Salvar Imagens No Servidor, Caminho da imagem salvo no BD MySQL O conceito está neles. Abraços
  19. Fuzileir0, no geral, você sempre terá a sequência: componente acesso a dados => fonte de dados => conjunto de dados => conexão com banco de dadostraduzindo: componente data-aware => DataSource => DataSet => Connection/Database Onde os componentes data-aware, são todos aqueles vinculados a um dataset (99,9% das vezes, via o datasource e não diretamente). além da propriedade Enabled, este efeito pode ocorrer se os datasets não estarem abertos (o source e list) ou não haver sido definido um dataset para a propriedade ListSource. da forma como citei no início, o dtSource (DataSource) está ligado a sua tabela zTbl (DataSet) que está ligada a zCon (Connection/Database).Logo o seu componente data-aware, estaria sendo o DBLookupComboBox. Assim, o componente deveria estar ligado a dtSource através de sua propriedade DataSource (e provavelmente está). Onde está o problema então? Como disse antes, uma das possibilidades de o componente ficar desabilitado seria pela ausência de uma dataset ligado a sua propriedade ListSource - e este parece ser o caso. A questão é: Você sabe qual a utilidade do componente TDBLookupComboBox? O que você espera com o seu uso? Tenha em mente sempre o seguinte: os dados (campos) a serem alterados no seu dataset, sempre estarão definidos pelas propriedades DataSource e DataField, ou seja, estas propriedades indicarão qual o dataset e campo serão usados para mostrar a informação, bem como poderão serão alterados e gravados de volta no banco. A propriedade ListSource, tem por objetivo popular a lista (drop-and-down) com a coluna configurada em ListField proveniente do DataSet ligado a ele e usando a propriedade KeyField como a coluna da qual o valor será atribuído a propriedade DataField. Um exemplo: Numa tabela Compras, você tem o campo CodCliente. Este campo é o campo de relacionamento com a tabela Clientes (ou seja, temo este campo lá também - é chave primária), de onde você obtém todas as demais informações do cliente. Então, na tela de cadastro da compra, teriamos: - TblCompra => dataset compra; - DSCompra => datasource com a propriedade DataSet = TblCompra; - QryCliente => dataset cliente; - DSCliente => datasource com a propriedade DataSet = QryCliente; - DBlkCliente => um TDBLookupComboBox com as propriedades: > DataSource = DSCompra > DataField = CodCliente > ListSource = DSCliente > KeyField = CodCliente > ListField = NomCliente Assim, para um nome selecionado da lista, seu respectivo código será atribuído ao campo da tabela Compras. Espero ter tornado as coisa mais claras e não o contrário. :) Abraços
  20. Predes, a função FormatDateTime, faz "qualquer" coisa com a data - basta que use a formatação correta. Se você fizer FormatDateTime('yy', date), terá a o ano com dois dígitos. Usando o exemplo do Jhonas, você pode obter o mesmo resutado fazendo: Label1.Caption := FormatDateTime('"Hoje é dia" dd "do mês" mm "do ano" yy', date); As aspas duplas delimitam o texto que contém caracteres de formatação da função - isso evita conversões errôneas. Abraços
  21. Rajare, esteja certo que não é uma questão de falta de "ginga", mas sim de desconhecimento - natural nos iniciantes. Quando você procurar conhecer os componentes que usa, logo descobrirá como, e o quê, pesquisar. Siga a dica do Jhonas: procure material para estudo. ;) Voce diz usar o componente TADOTable(dataset) para acesso ao banco de dados. Então, a próxima pergunta: Os componentes correspondentes aos tais campos são de que tipo? TEdit's ou TDBEdit's? Se são TDBEdit's, você sabe configurar eles para ficarem associados ao dataset (componentes table ou query)? Se sim, para gravar os dados você precisa apenas chamar o método Post do dataset. Se são TEdit's, você terá que usar o método Append do dataset para criar o novo registro, mover o conteudo dos edits para os respectivos campos (fields) do dataset, e então chamar o método Post do dataset. Em qualquer dos casos, isto feito no evento OnClick do seu botão Salvar. A questão de não deixar o usuário alterar alguma coisa, vai depender de onde está feita a edição, se usando (DB)Edit's ou DBGrid. Em ambos os casos, você poderá utilizar a propriedade Enabled=>False (no caso do DBGrid, será a propriedade da coluna específica - não do componente). De novo, no evento OnClick você executará a ação desejada. Neste caso, para mostrar um form, você tem duas opções chamar o método ShowModal ou Show do form em questão. Há diferença entre as duas opções - procure mais informações a respeito. No índice de Tutoriais e Dicas, você encontra um artigo do colega Prog'amador: Criando Um Relatório no QuickReport Passo a Passo, que pode lhe dar uma noção sobre o assunto. Há também inúmeros tópicos sobre o assunto com bastante informação (gaste um tempinho pesquisando aqui no forum e no Google). É complicado tentar ajudar se você não tiver uma base mínima, senão, estaremos "falando grego" e não chegaremos a lugar algum, ou mesmo, você acaba ficando sem resposta - a idéia do forum é tirar dúvidas e não ensinar programação. Então, sugiro que voce realmente procure estudar apostilas e/ou os exemplos que venham com o Delphi (normalmente tem uma pasta Samples na instalação) para que você comece a se acostumar com os componentes, suas propriedades e métodos, sua finalidade, ... O help também ajuda bastante (precisa um pouco do inglês). Abraços
  22. Igor Leonne, uma opção é a utilização dos arquivos tipo INI (é um arquivo txt, com uma formatação específica) - usa-se a classe TIniFile. Aqui no forum tem vários posts que falam sobre seu uso.Conheça mais sobre o formato dos arquivos INI no artigo INI File (ref. Wikipedia). Uma outra forma, também bem simples é o uso da classe TStringList. Voce declara uma variável local ao procedimento que grava a informação e outra para a leitura da informação (pode também usar um variável global - você é quem sabe) e nestes procedimentos você faz uso da propriedade Values, que armazenar o valor na lista e dos métodos SaveToFile e LoadFromFile, para gravar e carregar os valores respectivamente, veja exemplo: // procedure para um botão que permite salvar o valor dos edits em um arquivo procedure TForm1.BtnSalvaClick(Sender :TObject); var VarList :TStringList; begin VarList := TStringList.Create; // cria a lista try // Inicializamos a lista com o conteúdo desejado VarList.Values['Nome'] := Edit1.Text; VarList.Values['Endereco'] := Edit2.Text; VarList.Values['Telefone'] := Edit3.Text; // Gravamos o arquivo. Coloque o caminho e nome do arquivo conforme necessitar VarList.SaveToFile('c:\temp\Arquivo.txt'); finally VarList.Free; // libera lista da memória end; end; // procedure para um botão de carga do conteúdo do arquivo para os edits // o código pode ser usado em outro evento qualquer, como o OnCreate do // form ou onde for conveniente. procedure TForm1.BtnLoadClick(Sender :TObject); var VarList :TStringList; begin VarList := TStringList.Create; // cria a lista try // Carregamos o arquivo. Coloque o caminho e nome do arquivo conforme necessitar VarList.LoadFromFile('c:\temp\Arquivo.txt'); // Inicializamos a lista com o conteúdo desejado Edit1.Text := VarList.Values['Nome']; Edit2.Text := VarList.Values['Endereco']; Edit3.Text := VarList.Values['Telefone']; finally VarList.Free; // libera lista da memória end; end; O código básico é por ai. Pode ser necessário validações e verificação da existência ou não do arquivo, mas isto fica por sua conta. Abraços
  23. dan_visualdm, espero que a minha resposta não seja a única, porque apenas vi o BDS2006 em operação (uso o D7 e TurboDelphi -> BDS2006 restrito). - D8 for .NET; ( :angry: - não recomendo) - Borland Delphi 2005; - Borland Developer Studio 2006; - Delphi 2007 for Win32; - RAD Studio 2007; (Win e .NET - inclui Delphi for Win32, C++ e Delphi for .NET) - Delphi 2009; (Win32) - RAD Studio 2009. (Win e .NET - inclui Delphi 2009, C++Builder 2009, and Delphi Prism 2009) Detalhes neste link Eu diria todos.Se você acompanhou recentes posts aqui, o colega Eder instalou e fez rodar (com algum trabalho, é verdade) o Delphi 4 (mas também este é bem antigo). Mas, do ponto de vista do uso dos recursos da API incluídas no Vista (novos diálogos, e outros), o suporte aparentemente começa com o 2007. (leia nos link que postei acima). Da mesma forma, algumas outros recursos não estão mais disponíveis no Vista, como é o caso do componente TAnimated, mas o Delphi dá uma forma de contornar o problema através do uso de um componente para este fim: TShellResources. (outras informações você acha em Delphi 2007 Announcement - veja a parte em que aparece Windows Vista). A primeira coisa que você verá de diferente é à IDE - muito mais recursos/janelas. A janela de edição ficou apertada. Eu tenho um monitor de 17" com a resolução 1280x1024 e não gosto muito deste aperto (já estou providenciando um WideScreen :D)Outras diferenças dizem respeito aos componentes (novas paletas), novas ferramentas incluídas (mas vai variar conforme as variações: Enterprise, Professional ou Architect - no 2009) Assista ao vídeo What's new in the Delphi 2009 IDE para ter uma idéia das mudaças que você verá. Em teoria não, já que a sintaxe continua a mesma. Eventualmente existem novas extensões nestas versões (é o caso do arquivo de projeto, e a conversão deve ser automática ao salvar - qualquer coisa, basta usar Save as...)No link Delphi 2007 (acima) há a mesma pergunta e a resposta é praticamente a que citei: Can I open my Win32 projects from D7, D2005, D2006 in Delphi 2007? Yes, you should be able to do so, depending on the installed components required by your projects. Delphi 2007 for Win32 uses the MSBuild system for the build engine, and thus this new release requires a new project file. However, the IDE will seamlessly update your projects to the new format. Outros links interessantes: Creating Windows Vista Ready Applications with Delphi Delphi 6 no Windows Vista Abraços
  24. Sonyer, recentemente houveram outros tópicos questionando sobre RichEdit, você pode dar uma olhada neles para mais algum detalhe. Quando você seleciona um texto em um componente descendente da classe TCustomRichEdit, você terá algumas propriedades para manipular esta informação: - SelStart = posição do texto onde inicia a seleção; - SelLength = quantidade de caracteres selecionados; - SelText = texto atualmente selecinado; - SelAttributes = contém informações sobre a formatação do texto selecionado (na posição do ponto de inserção). A alteração de qualquer informação, como fonte, cor ou tamanho irão refletir sobre o texto selecionado; Quando há um texto selecionado, SelLength é maior que zero e SelText será diferente de ''. Para efeito de posicionamento no texto existente no RichEdit, você deve usar a propriedade Text (não Lines.Text, pois estas incluem os avanços de linha e o posicionamento ficaria incorreto). Se você não precisar usar formatações de texto, pode habilitar a propriedade PlainText para que ele opere como um TMemo (nenhuma formatação), porém com as facilidades de um TRichEdit Para seu caso, a solução mais simples seria fazer algo como: procedure TForm1.BtnQuoteClick(Sender :TOjbect); var FormatedStr :String; begin if Richedit1.SelText <> '' then begin FormatedStr := '[quote]' + Richedit1.SelText+'[/quote]'; Richedit1.SelText := FormatedStr; end; end; Abraços
  25. Leonardo Pizeli, acho que a discussão no tópico Ocultar Pasta, (Mas, ocultar mesmo) pode lhe ajudar com a dúvida ou a incrementá-la. ;) Abraços
×
×
  • Criar Novo...