Ir para conteúdo
Fórum Script Brasil

Graymalkin

Veteranos
  • Total de itens

    8.257
  • Registro em

  • Última visita

Posts postados por Graymalkin

  1. Na verdade nunca usei uma impressora com guilhotina, mas pelo que li é semelhante aos comandos que usava antigamente nas impressoras matriciais para ejetar a folha, imprimir comprimido, expandido, etc. Experimente alterar a linha seguinte e veja se tem algum efeito:

    s1 = mvImpressaoTexto & chr(27) & chr(119)

    Antigamente nas impressoras matriciais, você abria a porta dela (LPT1, por exemplo), como se fosse um arquivo e "escrevia" nesse arquivo o que você queria imprimir, podendo inserir caracteres especiais para determinados comandos.

    Abraços!

  2. Sim, você pode fazer isso criando um novo bitmap com o tamanho desejado (primeira linha do código abaixo, criando um bitmap de 150x150px):

    Dim img As Bitmap = New Bitmap(My.Resources.imagem, New Size(150, 150))
    Dim memStream As New IO.MemoryStream()
    img.Save(memStream, Imaging.ImageFormat.Png)
    Dim bytes() As Byte = memStream.ToArray()
    Dim sImg As String = BitConverter.ToString(bytes, 0).Replace("-", String.Empty)
    Dim larg As Integer = 100
    Dim alt As Integer = 100
    Dim cImg As String = "{\pict\pngblip\picw" & img.Width.ToString() & "\pich" & img.Height.ToString() & "\picwgoa" & img.Width.ToString() & "\pichgoa" & img.Height.ToString() & "\hex " & sImg & "}"
    fileReader = fileReader.Replace("<foto_pessoa>", cImg)

    Repare também que corrigi a linha que cria o código RTF, porque tinha um Width e Height ali que não tinha reparado (que vinham da declaração da função, e agora são os mesmos da imagem).

    Abraços!

  3. Que eu saiba não tem como. Já tive esse problema também, ao gerar planilhas a partir do meu sistema e ao mesmo tempo estar editando outras. Se for possível, ao invés de copiar e colar, você poderia fazer o preenchimento da seguinte maneira:

    Dim valor = plan1.Range("A1").Value
    plan2.Range("A1").Value = valor
    

    Assim fica menos suscetível a erros de copiar/colar, mas realmente depende do que você precisa "copiar e colar" no caso (se por exemplo, houver uma transposição, você precisaria fazê-la manualmente). Se existirem muitas operações desse tipo e com múltiplas planilhas, realmente fica inviável trocar todas.

    Mas o mais indicado seria orientar o usuário a aguardar o término.

    Abraços!

  4. Tanto wdOpenFormatAuto quanto wdFormatXMLDocument vem de enumerações que você não terá se não referenciar o objeto do Word nas propriedades do projeto. Caso tenha referenciado, você deve precisar colocar seus nomes completos...
     

    Microsoft.Office.Interop.Word.WdOpenFormat.wdOpenFormatAuto
    Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXML

    Ou colocar um Imports no topo:

    Imports Microsoft.Office.Interop.Word

    Ou simplesmente trocar por seus respectivos valores (0 e 11), conforme você pode consultar aqui: https://msdn.microsoft.com/en-us/library/office/aa211923(v=office.11).aspx

    Quanto ao terceiro problema, verifique se o parâmetro está mesmo como ByRef (por referência), pois só assim ele retornará o valor.

    Abraços!

  5. O que você quer não é tão trivial, pois consiste em transformar a imagem em uma sequência hexadecimal para ser armazenada no arquivo. Se você abrir um documento formatado em RTF no Bloco de Notas (ao invés do WordPad) verá que ele tem códigos que definem a formatação do texto (negrito, itálico, fonte, etc.), semelhante a um arquivo HTML (onde as tags definem isso). Fiz um código baseado neste exemplo (http://stackoverflow.com/questions/1490734/programatically-adding-images-to-rtf-document) e deu certo aqui:

    Dim img As Bitmap = My.Resources.imagem
    Dim memStream As New IO.MemoryStream()
    img.Save(memStream, Imaging.ImageFormat.Png)
    Dim bytes() As Byte = memStream.ToArray()
    Dim sImg As String = BitConverter.ToString(bytes, 0).Replace("-", String.Empty)
    Dim cImg As String = "{\pict\pngblip\picw" & img.Width.ToString() & "\pich" & img.Height.ToString() & "\picwgoa" & img.Width.ToString() & "\pichgoa" & img.Height.ToString() & "\hex " & sImg & "}"
    fileReader = fileReader.Replace("<foto_pessoa>", cImg)

    O código acima converte a imagem para PNG em um arquivo na memória (MemoryStream), depois pega os bytes que compõem a imagem e transforma em uma sequência hexadecimal. Além disso, tem também o código necessário para o formato RTF entender que trata-se de uma imagem.

    Certo?

    Abraços!

  6. O que acontece é que ao instanciar no seu exemplo...

    # coding=utf-8
    
    from Pai import Pai
    from Filha import Filha
    #from Neta import Neta
    
    
    class Main:
        p = Pai()
        f = Filha()
        #n = Neta()
    
        p.set_nome("Antonio")
        f.imprimirInformacoes()

    Esse "p" não é o mesmo que o objeto Pai instanciado dentro da classe Filha (apesar do mesmo nome, estão em escopos diferentes). Portanto, para fazer o que você quer, você deveria alterar a classe Filha para:

    # coding=utf-8
    
    from Pessoa import Pessoa
    from Pai import Pai
    
    
    class Filha(Pessoa):
        nome = 'Marina'
        sobrenome = 'Martins'
        corDosOlhos = 'Azuis'
        residencia = 'Planaltina'
        profissao = 'Professora'
        p = Pai()
    
        @classmethod
        def imprimirInformacoes(cls):
            print '%s %s' % (Filha.nome, Filha.sobrenome)
            print 'Os olhos são : ' + Filha.corDosOlhos
            print 'Reside ein: ' + Filha.residencia
            print 'Trabalha como: ' + Filha.profissao
            print 'O nome do pai é: ' + Filha.p.get_nome()

    E trocar a seguinte linha do seu exemplo...

        p.set_nome("Antonio")

    ... por:

        f.p.set_nome("Antonio")

    Note que neste caso o objeto Pai (p) é diferente do objeto Pai criado dentro da classe Filha (f.p). Ou seja, se você for checar o nome do objeto p e do objeto f.p, você terá resultados diferentes.

    Essa acima é uma das possíveis soluções, sendo outra que imagino ser melhor seria passar o objeto Pai ao criar ao objeto Filha. Assim você teria o seu objeto Pai igual em ambas as instâncias. Para isso, você pode colocar a classe Filha com o seguinte código:

    # coding=utf-8
    
    from Pessoa import Pessoa
    from Pai import Pai
    
    
    class Filha(Pessoa):
        nome = 'Marina'
        sobrenome = 'Martins'
        corDosOlhos = 'Azuis'
        residencia = 'Planaltina'
        profissao = 'Professora'
    
        def __init__(self, objPai):
            Filha.p = objPai
            
        @classmethod
        def imprimirInformacoes(cls):
            print '%s %s' % (Filha.nome, Filha.sobrenome)
            print 'Os olhos são : ' + Filha.corDosOlhos
            print 'Reside ein: ' + Filha.residencia
            print 'Trabalha como: ' + Filha.profissao
            print 'O nome do pai é: ' + Filha.p.get_nome()

    E o seu código de exemplo voltaria ao original:

    # coding=utf-8
    
    from Pai import Pai
    from Filha import Filha
    #from Neta import Neta
    
    
    class Main:
        p = Pai()
        f = Filha(p)
        #n = Neta()
    
        p.set_nome("Antonio")
    
        print "f.p.nome == " + f.p.get_nome() 
        print "p.nome == " + p.get_nome()
        
        f.imprimirInformacoes()

    Adicionei os 2 prints para confirmar que ambos tem os mesmos valores. Isso não seria possível com o exemplo anterior, já que tínhamos um "p" fora da classe e outro "p" dentro dela.

    No caso, essa implementação depende do que foi pedido, mas o importante é saber que deve existir uma relação entre dois objetos para que um possa usar propriedades do outro. Ou um objeto instancia um objeto da outra classe (primeiro exemplo) ou faz referência ao mesmo (segundo exemplo).

    Beleza?

    Abraços!

     

     

  7. Você só saberá que um nome é inexistente pelo que ocorrer dentro da rotina/função PesquisaDados(). Ela deveria te retornar algo (como True/False ou a quantidade de registros encontrados) e através disto você poderia saber se algo foi encontrado ou não. Poste aqui esta rotina/função para podermos ajudar com mais detalhes.

    Abraços!

  8. Você está realmente usando o VB6? Ou é o .NET (de 2005 para cá)? Se for o .NET, no controle WebBrowser existe uma função chamada GetElementsByTagName() que te retorna todos os elementos de uma determinada tag (no seu caso, "img"). Com estes elementos você poderia iterar sobre eles e invocar o "onclick" no elemento cuja propriedade "alt" é "Executar" (já que o elemento não é nomeado).

    Abraços!

  9. Fiz o teste aqui no meu e não pede senha. Mas lembrei de outro detalhe, sempre gravo a senha através do PgAdmin III, por isso acho que ele não pede. Você pode então tentar fazer o mesmo, criando um arquivo chamado "pgpass.conf" em "c:\Users\NOMEDOUSUÁRIO\AppData\Roaming\postgresql" (onde NOMEDOUSUÁRIO é a pasta com o nome do usuário do Windows) com o conteúdo:

    localhost:5432:*:postgres:SENHA

    Ou simplesmente abrir o PgAdmin III e conectar no banco armazenando a senha.

    Veja aí se dá certo.

    Abraços!

  10. O problema no seu código é que você provavelmente esqueceu de fechar as chaves (}) após a classe Contato e os todos os métodos estão dentro dela, ao invés de estarem na classe Program. Veja abaixo como seria:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace ConsoleApplication6
    {
        class Program
        {
            static void Main(string[] args)
            {
                CriaMenu();
            }
    
            //Implementação da classe contato
            class Contato
            {
    
                private int id;
                private string nome;
                private string telefone;
                private string email;
    
                public int ID
                {
                    get { return id; }
                    set { id = value; }
                }
    
                public string Nome
                {
                    get { return nome; }
                    set { nome = value; }
                }
    
                public string Telefone
                {
                    get { return telefone; }
                    set { telefone = value; }
                }
    
                public string Email
                {
                    get { return email; }
                    set { email = value; }
                }
    
                public string myProperty
                {
                    //Quando o valor atribuido for vazio,
                    //o valor padrão considerado será null
                    set
                    {
                        if (value == string.Empty)
                            variavel = null;
                        else
                        {
                            variavel = value;
                        }
                    }
                }
            } // Aqui acaba a classe Contato
          
            //Metodo que cria menu na interface do usuario
            static void CriaMenu()
            {
                ConsoleKey key;
                bool opcao;
    
                opcao = true;
                while (opcao)
                {
                    //Limpar a Tela
                    Console.Clear();
    
                    Console.WriteLine("___CONTATOS___");
                    Console.WriteLine("Escolha as opções abaixo:");
                    Console.WriteLine("1 - Incluir");
                    Console.WriteLine("2 - Listar");
                    Console.WriteLine("S - Sair");
                    Console.WriteLine("Opção: ");
    
                    key = Console.ReadKey().Key;
                    switch (key)
                    {
                        case ConsoleKey.NumPad1:
                            Program.AddContato();
                            break;
                        case ConsoleKey.NumPad2:
                            Program.ListContato();
                            break;
                        case ConsoleKey.S:
                            opcao = false;
                            break;
                    }
                }
            }
    
            //Metodo para incluir um contato no arquivo
            static void AddContato()
            {
                Contato contato = new Contato();
                try
                {
                    Console.Clear();
                    Console.WriteLine("Preencha os dados abaixo:");
                    Console.Write("ID: ");
                    contato.ID = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Nome: ");
                    contato.Nome = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Telefone: ");
                    contato.Telefone = Convert.ToInt32(Console.ReadLine());
                    Console.Write("E-Mail: ");
                    contato.Email = Convert.ToInt32(Console.ReadLine());
                    Program.SaveContato(contato);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
    
            //Metodo para salvar um arquivo no contato
            //Arquivo a ser salvo
            static void SaveContato(Contato contato)
            {
                FileStream fs;
                byte[] byteArray;
                string strContato;
    
                try
                {
                    fs = new FileStream(CONST_PATH_ARQUIVO_DADOS, FileMode.Append, FileAccess.Write);
    
                    if (fs.CanWrite)
                    {
                        //Cria uma linha com atributos separados por TAB
                        strContato = Program.ParseContato(c);
    
                        //Para salvar o registro no arquivo utilizando a classe
                        //FileStream, será necessário utilizar uma classe para
                        //converter o texto em bytes.
                        byteArray = Encoding.ASCII.GetBytes(strContato);
    
                        fs.Write(byteArray, 0, byteArray.Length);
                        fs.Close();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
            //Metodo para listar os contatos existentes
            static void ListContato()
            {
                StreamReader sr;
                try
                {
                    sr = new StreamReader(CONST_PATH_ARQUIVO_DADOS);
                    if (sr.BaseStream.CanRead)
                    {
                        Console.WriteLine();
                        while (!sr.EndOfStream)
                        {
                            Console.WriteLine(sr.ReadLine());
                        }
                    }
                    sr.Close();
                    Program.wait();
                }
                catch (Exception ex)
                {
                    Program.errorMessage(ex);
                }
            }
    
            //Metodo para escrever os atributos do contto como uma linha para o arquivo, separa como tab.
            //Contato a ser transformado
            //String com os dados do contato
            static string ParseContato(Contato c)
            {
                //Objeto para trabalhar com a concatenação de texto
                StringBuilder strBuilder;
    
                try
                {
                    strBuilder = new StringBuilder();
    
                    //Separar todos os atributos com TAB, representado pelo caracter \t
                    strBuilder.Append(c.ID);
                    strBuilder.Append('\t');
                    strBuilder.Append(c.Nome);
                    strBuilder.Append('t');
                    strBuilder.Append(c.Telefone);
                    strBuilder.Append('\t');
                    strBuilder.Append(c.Email);
    
                    //Toda linha de um arquivo para o .Net é encerrada pelo caracter \r
                    strBuilder.Append("\r\n");
    
                    return strBuilder.ToString();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
    
            }
        }
    }

    Fora isso, tem outros erros que você vai ver no código quando tiver corrigido isso.

    Abraços!

×
×
  • Criar Novo...