Ir para conteúdo
Fórum Script Brasil

Aleksander

Membros
  • Total de itens

    39
  • Registro em

  • Última visita

Tudo que Aleksander postou

  1. Micheus, muito obrigado, ficou ótimo!!! Grande abraço!
  2. Aleksander, de uma forma simplista, usando a informação que você passou, bastaria que você copiasse as 10 linhas como você mesmo disse. A propriedade Lines é um objeto do tipo TStrings. Assim sendo, basta indexar as 10 primeiras linhas do seu memo1. Algo assim: var Idx: integer; begin Memo2.Lines.Clear; // limpa memo2 Idx := 0; while (Idx < 10) and (Idx < Memo1.Lines.Count) do begin Memo2.Add(Memo1.Lines[Idx]); Inc(Idx); end; end; Dê uma experimentada e veja se era isso. Abraços Micheus, este seu codigo copia as 10 primeiras linhas do Memo1, mas o que prentendo é copiar o trecho que está sendo exibido, digamos que estou lendo o texto de 50 linhas e que estão sendo exibidas as linhas 15 a 25 porque o Memo1 tem a altura para exibir 10 linhas, desejo copiar só aquelas linhas que estou visualizando no momento independente da posição do cursor.
  3. Boa tarde amigos, tenho o Memo1 com altura suficiente para exibir 10 linhas, neste Memo1 tenho um texto com mais de 50 linhas, desejo copiar para o Memo2 somente a parte do texto que está sendo exibida no Memo1. Como devo fazer? Grato pela atenção.
  4. Micheus, a fonte courier era a peça que faltava. Perfeito, questão resolvida. Grande abraço!
  5. Olá Kiko, sua dica funciona perfeitamente no entanto o valor de ('.......') é fixo, então se o texto variar de tamanho pode não preencher totalmente o Edit ou exceder o espaço. Veja no código do Jhonas que o preenchimento é automático independente do tamanho do texto tornando-se assim mais adequado, sendo assim agradeço a você Kiko pela contribuição. Obrigado. Jhonas, funcionou! Obrigado. Micheus, a finalidade do uso do texto do campo Edit é a seguinte, este texto é enviado para um arquivo de texto e o pontilhado serve para deixar as linhas todas com o mesmo tamanho mas teve um pequeno problema, não atentei para o detalhe que, alguns caracteres tem tamanhos diferentes e por isso quando uso 3 campos Edit no final da linha do arquivo de texto o alinhamento do lado direito não fica igual. Veja abaixo, apesar de ser apenas um caracatere em cada linha não ficou alinhado no final. W...... A..... I..... Abraço
  6. Boa tarde amigos, como devo fazer para autopreencher o restante do Edit com pontos. Por exemlo: Tenho um edit com MaxLength 100: _________________________ Nome ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Gostaria que usando o evento OnExit ficasse assim: _________________________ Nome.................................... ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Grato pela atenção.
  7. Olá Spyder, eu uso o código abaixo para copiar e salvar a tela. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Jpeg; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var bitmap : tbitmap; jpg : tjpegimage; dc : hdc; desktoprect : trect; desktopcanvas : tcanvas; Function GetFileName: String; var szPath: String; i: Integer; begin szPath := 'C:\'; //local de gravação mude para o local desejado i := 1; Result := szPath + 'Screenshot.jpg'; // Screenshot é o nome da imagem, mude se desejar. if FileExists(Result) then begin while (FileExists(szPath + 'Screenshot(' + IntToStr(i) + ').jpg')) do Inc(i, 1); Result := szPath + 'Screenshot(' + IntToStr(i) + ').jpg'; end; end; begin dc:=getdc(getdesktopwindow); try desktopcanvas:=tcanvas.create; bitmap:=tbitmap.create; jpg:=tjpegimage.create; try bitmap.Width:=800; bitmap.Height:=600; desktopcanvas.handle:=dc; desktoprect:=rect(0,0,799,599); bitmap.canvas.CopyRect(desktoprect,desktopcanvas,desktoprect); with jpg do begin compressionquality:=100; //qualidade da imagem assign(bitmap); compress; savetofile(GetFileName); end; finally bitmap.free; desktopcanvas.free; jpg.Free; end; finally releasedc(getdesktopwindow,dc); end; end; //Se quiser acionamento automático do button1, coloque um timer e escolha o intervalo. procedure TForm1.Timer1Timer(Sender: TObject); begin Button1.Click; end; end. As imagens serão gravadas na sequência, por exemplo Screenshot[1].jpg, Screenshot[2].jpg, etc. Aproveito a oportunidade para agradecer ao colega CHURC pela ajuda que me deu na construção deste código. Boa sorte!
  8. Churc, funcionou!!! Muito Obrigado!! Grande abraço!!
  9. Olá colegas, gostaria que meu exe iniciasse junto com o windows, usei o código abaixo, ele criou as chaves mas não funcionou, uso xp sp2 e delphi7. Grato pela atenção. unit Uinicio; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; reg:TRegIniFile; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var s,s2:string; begin Reg:=TRegIniFile.Create('Teste'); S:=ExtractFileDir(Application.ExeName); S2:=ExtractFileName(Application.ExeName); S:=S+'\'+S2; reg.RootKey:=HKEY_USERS; reg.Openkey ('\.DEFAULT\Software\Microsoft\Windows\CurrentVersion',false); reg.WriteString('Run', 'Prog', s); end; end.
  10. Jhonas, ficou ótimo!!! Muito obrigado!!! Grande abraço!
  11. Olá, abaixo tem um código que localiza palavras no texto do Memo, ele funciona, quando mostra a palavra pesquisada dependendo da posição da palavra no texto ela aparece na primeira linha do Memo, outras palavras aparecem na última linha do Memo. Eu gostaria que todas as palavras pesquisadas fossem exibidas na primeira linha do Memo porque no meu texto a primeira palavra esta acompanhada de sua definição que tem até cinco linhas e quando ela aparece na última linha é necessário usar scroll para ver o restante do texto, mas se ela aparecer na primeira linha o texto se enquadra perfeitamente e o resultado fica muito melhor. Por exemplo, digamos que o desenho abaixo é um Memo.. ------------------------------------------------------------------------------------------------- | quero que a palavra apareça só nesta linha | | | e não apareça nesta linha. -------------------------------------------------------------------------------------------------- Usei um Memo com altura para exibir 5 linhas e um Button com o código, agradeço pelo espaço e pela atenção. Abraços. ---------------------------------------------------------------------------------------------------- ... private FSelPos: integer; ... procedure TForm1.Button1Click(Sender: TObject); var S : string; Startpos : integer; begin if FSelPos = 0 then StartPos := FSelPos + Length(Edit1.text); S := Copy(Memo1.Lines.Text, StartPos, MaxInt); S := Memo1.Lines.Text; StartPos := 1; FSelPos := Pos(Edit1.text, S); if FSelPos > 0 then begin FSelPos := FSelPos + StartPos - 1; Memo1.SelStart := FSelPos - 1; Memo1.SelLength := Length(Edit1.text); Memo1.SetFocus; end; end;
  12. Vou explicar da maneira que costumo fazer. 1.Crie um retângulo com 6mm de altura e 40mm de largura. 2.No menu Organizar-Transformações - Girar, abrirá a janela lateral de configuração. 3.Na janela de configuração lateral defina a rotação com o ângulo de 35 graus. 4.Deixe a opção Centro rotativo desmarcada e logo abaixo você terá oito quadrinhos com um círculo no meio, marque o segundo quadrinho da primeira coluna que corresponde a extremidade esquerda do retângulo. QQQ Exemplo: marque este --> QCQ Q= quadrinho C=Círculo QQQ 5.Clique no botão Aplicar ao duplicado, cada clique irá criar um novo retângulo a partir de um eixo que será a extremidade esquerda do retângulo, o duplicado irá girar como um ponteiro de relógio, continue clicando no botão até completar 10 retângulos, agora você tem os dentes da engrenagem, selecione tudo e solde. 6. Faça um círculo com 65mm de diâmetro. 7. Centralize o circulo sobre os retângulos e solde tudo. 9.Agora só falta fazer o furo no centro da engrenagem, crie um círculo com 40mm de diâmetro e posicione no centro da engrenagem. Selecione o círculo primeiro e mantendo a tecla shif pressionada selecione a engrenagem, clique em aparar, retire o círculo e veja que a engrenagem está completa. O tamanho e a quantidade de dentes fica ao seu critério, usei estas medidas para facilitar a explicação. Boa sorte!
  13. Meu caro Churc, muito obrigado !!! Funcionou perfeitamente!!! Um grande abraço!!
  14. Olá, no código abaixo ao clicar no botão ele captura a tela e grava como Imagem.jpg, mas se eu clicar novamento no botão ele ira gravar novamente sobre o arquivo que foi gravado. Pergunto então, como devo fazer para que o programa reconheça que o arquivo já existe e acrescente úm número no nome do novo arquivo para evitar que ele sobrescreva o arquivo existente? Um abraço a todos. :) --------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var bitmap : tbitmap; jpg : tjpegimage; dc : hdc; desktoprect : trect; desktopcanvas : tcanvas; x, y : integer; yy, xx: integer; begin dc:=getdc(getdesktopwindow); try desktopcanvas:=tcanvas.create; bitmap:=tbitmap.create; jpg:=tjpegimage.create; try bitmap.Width:=300; bitmap.Height:=300; desktopcanvas.handle:=dc; desktoprect:=rect(0,0,300,300); bitmap.canvas.CopyRect(desktoprect,desktopcanvas,desktoprect); image1.Picture.Bitmap:=bitmap; for y:=yy to yy+10 do for x:=xx to xx+10 do image1.canvas.pixels[x,y]:=clwhite; with jpg do begin compressionquality:=50; assign(bitmap); compress; savetofile('C:\Imagem.jpg'); <------------ eis a questão :blink: end; finally bitmap.free; desktopcanvas.free; end; finally releasedc(getdesktopwindow,dc); end; end;
×
×
  • Criar Novo...