Ir ao conteúdo
  • Cadastre-se

rockzilla2109

Membro Júnior
  • Posts

    9
  • Cadastrado em

  • Última visita

  1. Coloquei pra download no 4shared uma pasta compactada que contém o componente TComport para delphi e um exemplo de uso. Este componente TComport é o que eu uso para minhas aplicações, e já tinha testado alguns outros componentes mas este foi o que mais me agradou. Link para download (lembrando que para fazer o download é necessário ter uma conta no 4shared que é simples de fazer e sem custo): http://www.4shared.com/rar/Hl-jckrU/delphi_tcomport.htm Para instalar o TComport deve-se abrir o arquivo PkgComPort.dpk pelo delphi, clicar em compilar e depois em instalar. O componente TComport será instalado na paleta "Samples". A seguir, para que o delphi encontre os arquivos do componente, no delphi deve-se clicar no menu Tools->Environment Options->Library-> e clica no botao "..." ao lado da caixa de texto de "library path". Na janela que se abre clique no botao "..." e localize a pasta onde estão os arquivos do componente TComPort (a mesma pasta que contem o arquivo PkgComport.dpk). Clique no botao "Add" e pode-se fechar as janelas que foram abertas. Pronto, agora pode usar o componente comport sem problemas... Notas sobre o Comport: Para "abrir" a porta serial, ou seja, ativá-la, usa-se o método: "ComPort1.Open". Para "fechar" a porta serial, ou seja, desativá-la, usa-se o método: "ComPort1.Close"; Para receber os dados da porta serial, usa-se o evento "ReceiveCallBack". Para transmitir dados pela porta serial, usa-se o método "ComPort1.Send"; O componente Comport possui uma propriedade chamada "ReceiveMode" que pode ser definida como "rmTERM" ou "rmRAW". Esta propriedade define o modo como o comport receberá os dados via porta serial. ReceiveMode = rmTERM -> isso fará com que o evento "ReceiveCallBack" seja acionado (recepção) apenas quando a string recebida for terminada com os bytes definidos na propriedade "Terminator", que por padrão são #13 e #10. ReceiveMode = rmRAW -> isso fará com que o evento "ReceiveCallBack" seja acionado (recepção) a cada byte recebido pela porta serial. Com isso a propriedade "Terminator" não terá influencia nenhuma no processo. Acho que com essas informações já dá pra brincar bastante, né?!? Qualquer dúvida pode perguntar que ajudarei no que for dentro de minha capacidade.
  2. Talvez seja assim que voce quer: var i: integer; //variavel de apoio pra varrer todos os caracteres da string str: string; //variavel de apoio pra string resultante begin //inicializa variaveis de apoio str:= ''; i:= 1; //faz um looping pra varrer todos os caracteres da string original while i <= Length(string_original) do begin //se encontrar dois '/' seguidos... if(string_original[i] = '/')and(string_original[i+1] = '/')then begin str:= str + #13 + #10; //coloca 'enter' e 'carrie return' inc(i,2); //pula os dois caracteres '//' da string_original end else begin //nao encontrou '//' então apenas captura o caracter verificado str:= str + string_original[i]; inc(i); end; end; Memo1.Text:= str; //apenas coloquei um memo pra mostrar o resultado end;
  3. Bom criar componente nem é difícil, é só um pouquinho trabalhoso... Mas coragem, vamos lá. Criaremos um componente visual chamado TVisual. No Delphi, feche todos os projetos abertos e clique em "Project -> New -> Other -> Component". Uma janela será apresentada. No campo "Ancestor Type" selecione TGraphicControl (Controls). No campo "Class Name" digite o nome do componente (TVisual). No campo "Palette Page" selecione a paleta de destino do nosso componente (para criar uma nova paleta apenas digite o nome da nova paleta). No campo "Unit File Name" indique onde deseja salvar a unit do componente e o nome da unit. Eu salvei como "visual.pas". No campo "Search Path" apenas procure a pasta onde você salvou a unit do componente. Isso serve para que o delphi localize os arquivos do componente quando ele for adicionado num projeto. Clique em Ok e a unit do componente será apresentada para que a editemos. Será algo assim: unit Visual; interface uses SysUtils, Classes, Controls; type TVisual = class(TGraphicControl) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TVisual]); end; end. No componente, tudo o que for colocado na cláusula 'private' só será acessado na unit do componente. O que estiver na cláusula 'protected' nao poderá ser acessado na aplicação que conterá o nosso componente. O que estiver na cláusula 'public' será vista/acessada pela aplicação que conterá nosso componente. Em 'published' declaramos as propriedades que serão apresentadas no ObjectInspector. Você verá que já tem uma procedure no componente: "procedure Register". Essa procedure indica pro Delphi em que paleta o componente será instalado e o nome do mesmo. Bom vamos dar alguma funcionalidade para nosso componente visual. Iremos criar uma propriedade do tipo TColor que mudará a cor do componente. Vou colocar comentário pra que entenda o que será feito: unit Visual; interface uses SysUtils, Classes, Controls, Graphics; type TVisual = class(TGraphicControl) private { Private declarations } //variavel interna que receberá a cor //indicada no Object Inspector FCor: TColor; //função que será chamada quando o usuario //mudar a cor no Object Inspector procedure SetCor(value: TColor); protected { Protected declarations } public { Public declarations } //funçao que pinta o componente, acessivel à aplicaçao //quando voce usar o componente procedure Paint; override; //método Create e Destroy fazem as inicializações/ //finalizações do componente respectivamente constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published declarations } //propriedade do tipo TColor a ser mostrada //no Object Inspector. Temos que indicar a //variável de destino (FCor) e a função //disparada ao ter a propriedade modificada, //neste caso a procedure SetCor. //O que estiver escrito após a palavra chave //"default" será adotado como padrão para a propriedade em questão //somente se também declarado na procedure Create property Cor: TColor read FCor write SetCor default clLime; end; procedure Register; implementation //============================================================================== // Register //============================================================================== procedure Register; begin //aqui é indicado a paleta onde seu componente será //instalado e o nome do componente RegisterComponents('Samples', [TVisual]); end; { TVisual } //============================================================================== // On Create //============================================================================== constructor TVisual.Create(AOwner: TComponent); begin inherited; //aqui atribuímos as inicializações //do componente. Neste caso demos uma cor //"default" para a propriedade Cor //através da variável FCor FCor:= clLime; end; //============================================================================== // On Destroy //============================================================================== destructor TVisual.Destroy; begin //coloque aqui o código para fazer //as finalizações necessárias inherited; end; //============================================================================== // On Paint //============================================================================== procedure TVisual.Paint; begin inherited; Canvas.Brush.Color := FCor; //pinta da cor que usuario escolheu Canvas.Brush.Style := bsSolid; //estilo de pintura do componente Canvas.Pen.Color := clBlack; //cor do contorno Canvas.Pen.Width := 1; //espessura do contorno Canvas.Rectangle(ClientRect); //manda pintar o componente inteiro end; //============================================================================== // Set Cor //============================================================================== procedure TVisual.SetCor(value: TColor); begin //atribuimos a cor que foi escolhida //pelo usuário à variável FCor FCor:= value; //invalidate se não me engano //indica pro componente adotar //imediatamente as alterações invalidate; end; end. Com isso terminamos de editar o componente. Salve-o e feche-o. Agora para instala-lo é necessário termos uma package. Uma package é um container que armazena um ou mais componentes. Inclusive é na package que colocamos a imagem que o componente apresenta na palleta - nao iremos abordar a imagem para o componente agora. Vamos então criar nossa package. Vá em "File -> New -> Other -> Package". Na janela que abrir, clique na pasta "Contains" e clique em 'Add'. No campo "Unit File Name", localize a unit do nosso componente e clique em Ok. Agora antes de mais nada salve a package com um outro nome, por exemplo PkgVisual. Se deixar como Package1, quando for instalar a package, todos os componentes que já tinha instalado atraves de uma outra package que tambem era chamada package1 serão excluidos e o ultimo os substituirá. Acredite, já fiz isso algumas vezes hehehe... então para evitar perder outros componentes que porventura foram instalados com uma 'package1' então mudamos o nome da package antes de instalar... Agora na janela da package clique em "Compile" e clique em "Install". Agora pode fechar tudo e iniciar um novo projeto. Procure a paleta em que instalou o componente (no caso eu fiz pra instalar na paleta "Samples"). Coloque o componente no form. Você verá que o componente possui várias propriedades que já são padrão, mas ele contem a propriedade "Cor" que nós criamos. Modifique a propriedade Cor e você verá o componente mudando. Bom é isso. Pode modificar à vontade o componente para que atenda suas necessidades. Lembrando que para modificar o componente basta voce abrir a package do componente, clicar duas vezes na unit do componente apresentada na package, modificar o codigo e na janela da package clicar em "Compile" - nao é mais necessário clicar em "install" porque o componente já está instalado, é só em compile mesmo... Com isso o componente já estará modificado. Para criar componentes nao visuais selecione a classe do seu componente e nao declare um método Paint. Bom qualquer duvida poste aí que ajudarei no que for possivel. Abraço
  4. Bom dia amigo. Bom, você vai precisar salvar os dados da StringGrid e carregar depois. Se pesquisar no google sobre como salvar uma stringgrid voce vai achar um monte de exemplos sobre isso. Um exemplo de rotina para salvar as células do StringGrid está abaixo. Mas como você tem uma stringgrid com dados constantes (sempre mostra todos os dias da semana), então acho que você deveria ter uma matriz bidimensional equivalente às linhas e colunas de datas do StringGrid, na qual você armazena informação de dia com evento marcado e então salvaria a matriz. A mesma rotina usada para salvar/carregar dados do StringGrid poderia ser modificada para salvar/carregar a matriz de eventos e a partir dela você assinalar os dias com eventos no seu StringGrid. As rotinas estão descritas abaixo. Procedure SaveGrid; var f : textfile; x,y : integer; Begin assignfile (f,'NomeArquivo'); rewrite (f); //cria ou sobre-escreve arquivo writeln (f,stringgrid.colcount); //salva quantidade de colunas writeln (f,stringgrid.rowcount); //salva quantidade de linhas For X:=0 to stringgrid.colcount-1 do For y:=0 to stringgrid.rowcount-1 do writeln (F, stringgrid.cells[x,y]); //salva o texto das celulas do SG referenciados por X e Y closefile (f); End; Para ler os dados é o processo inverso: Procedure LoadGrid; var f : textfile; x,y : integer; Begin assignfile (f,'NomeArquivo'); reset (f); //abre para leitura readln (f,stringgrid.colcount); readlln (f,stringgrid.rowcount); For X:=0 to stringgrid.colcount-1 do For y:=0 to stringgrid.rowcount-1 do readln (F, stringgrid.cells[x,y]); closefile (f); End; Agora, para "pintar" as células marcadas você deve fazer escrever sua rotina no evento OnDrawCell do StringGrid. Seria mais ou menos assim: procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); begin if (Row=1) and (Col=1) then //aqui é que você identifica quais linhas e colunas devem ser pintadas. //neste caso está fixado para a celula coluna 1 e linha 1 begin StringGrid1.Canvas.Font.Color := clwhite; //cor do texto StringGrid1.Canvas.Brush.Color := clAqua; //cor de fundo da celula StringGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,StringGrid1.Cells[Col, Row]); end; end; Nao testei os codigos, se tiver alguma duvida ou problema pode falar. Eu fiz uma vez um projeto tipo agenda de compromissos sem usar banco de dados, onde o usuário selecionava uma data num calendario feito de TPanels, e indicava qual seria o evento e quando deveria ser alarmado, alem de ter varias opções como icone ao lado do relogio, programa pode ou nao inicializar junto com o windows, pode colocar senha, mostra os feriados, etc. Se quiser eu te mando (e para todos que se interessarem) o projeto com codigo aberto - aí posso mandar por e-mail ou talvez hospedar no 4shared.com ou em qualquer site indicado. Teh mais
  5. Maninho, estou meio com pressa agora, porque vou viajar daqui a pouco... Mas dá uma olhada aqui no site tem um exemplo legal de como você manipular totalmente a porta serial e ainda conversar com perifericos ligados a ela. e pouco abaixo do inicio dessa página, vai ter um topico chamado "Algumas das funções da API do Windows usadas nos programas aqui apresentados, com o objetivo de acessar a Porta Serial". Estude este tópico e veja se te ajuda em algo. No fim da página você poderá fazer download de códigos fonte. Com relação a componentes do delphi, como o TComPort, vários componentes para Serial sao distribuidos com o codigo-fonte, permitindo a você modificar os dados para controlar pinos da porta
  6. Alguém pode me ajudar? A minha asus k8n está em curto na linha de 3.3V com GND. Sou técnico eletrônico e preciso do esquema elétrico da placa para procurar o defeito. O processador está OK. Alguém sabe onde encontro o esquema elétrico da placa?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...