
Aleksander
Membros-
Total de itens
39 -
Registro em
-
Última visita
Tudo que Aleksander postou
-
Procedure TForm1.FormCreate(Sender: TObject); begin Session.AddPassword('digite a senha da tabela aqui'); Table1.Open; end;
-
Olá amigos, uso HTML apenas para fazer arquivos de help, sendo assim nunca publiquei página, desejo publicar uma página e a única parte que tenho dificuldade é "Quais a linhas necessárias no início do código para que a página seja exibida em sites de busca? Já fiz algumas pesquisas mas ainda tenho dúvidas. Por exemplo como devo usar a linha Charset=iso e como usar corretamenta a tag meta. Se alguém puder de uma forma simples dar uma explicação agradeço.
-
(Resolvido) API-Como carregar um Bitmap
pergunta respondeu ao Aleksander de Aleksander em Delphi, Kylix
Correto Jhonas, a questão foi dada como resolvida por mim ao ter recebido o código mas não havia testado, agora que testei e no meu caso funcionou, segue abaixo uma maneira de carregar uma imagem de extensão .BMP de um determinado arquivo usando a API. Crie as seguintes variáveis globais: hDCImg : HDC; hBitImg : HBITMAP; ps : TPAINTSTRUCT; rc : TRECT; Crie uma procedure para carregar a imagem de um arquivo com o seguinte código: hDCSis := GetDC(0); hDCImg := CreateCompatibleDC(hDCSis); ReleaseDC(0, hDCSis); hBitImg := LoadImage(0,'nomedaimagem.bmp', IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE); SelectObject(hDCImg, hBitImg); Na função WindowProcedure na msg WM_PAINT use o código: BeginPaint(hWin, ps); //Chame a procedure criada aqui GetClientRect(hWin, rc); StretchBlt(ps.hdc, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right-ps.rcPaint.left, ps.rcPaint.bottom-ps.rcPaint.top, hDCImg, 0, 0, rc.right, rc.bottom, SRCCOPY); EndPaint(hWin, ps); Antes de fechar a aplicação delete os itens: DeleteDC(hDCImg); DeleteObject(hBitImg); Se desejar carregar a imagem de um arquivo .RES troque a linha: hBitImg := LoadImage(0,'nomedaimagem.bmp', IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE); Por esta: hBitImg := LoadBitmap(hInstance,'nomedorecurso’); Grande abraço! -
(Resolvido) API-Como carregar um Bitmap
pergunta respondeu ao Aleksander de Aleksander em Delphi, Kylix
Questão resolvida, recebi uma ajuda dos colegas do bcb. grato pelo espaço. -
Ola amigos, como devo me referir a um bitmap para carrega-lo usando API? A janela e os botões eu consegui criar, meu exe ficou com 41k e funciona perfeitamente, usei windows, messages, sysutils, a imagem seria apenas para efeito estético. Se alguém tiver uma dica ou link. Desde já agradeço pela atenção.
-
Olá amigos, estou fazendo algo parecido com uma barra de ferramentas, gostaria de saber como faço para pegar o nome da janela ativa de qualquer aplicativo, se eu usar application.title eu só pego o nome do meu aplicativo, gostaria que no momento que eu clicasse eu outro aplicativo seja Delphi, Word ou outros o nome aparecesse no caption de um label. Grato a todos pela atenção.
-
Olá amigos, no exemplo abaixo o Label1 fica da seguinte forma 25410320, gostaria que ele ficasse assim 25,4. Como posso fazer isso? Grato pela atenção. procedure TForm1.Button1Click(Sender: TObject); var S: string; Free: Int64; begin Free := DiskFree(0); S := 'Espaço livre em (C): ' + intToStr(Free div 1024); Label1.Caption := S; end;
-
Jhonas, esse código que você usou pode ser resumido com: procedure TForm1.FormCreate(Sender: TObject); begin AlphaBlendValue:=120; AlphaBlend := True; end; end. Ainda não está resolvido mas agradeço a ajuda colega. Grande abraço.
-
Olá amigos, todos os aplicativos que desenvolvo costumo criar uma pasta de ajuda com o passo a passo do uso dos mesmos com várias imagens. Para isso uso varios recursos que simulam o PrintScreen, para facilitar meu trabalho uso um form que redimensiono sobre a área desejada para salvá-la, no entanto quando deixo esse form transparente usando o Form1.Brush.Style:=bsClear ao redimensioná-lo ele usa a área de trabalho como se fosse fundo , é horrível. Alguém saberia me informar o que posso fazer para resolver isso? Ele salva a imagem perfeitamente, só me incomoda essa distorção visual na hora arrastar e redimensionar. Grato a todos pela atenção.
-
Caro Churc, segui seu conselho e tirei do AutoCreate, ficou perfeito, muito obrigado. Grande abraço!
-
Olá amigos, dessa vez prometo que não vou fazer pergunta sobre imagem. Uso o codigo abaixo que o colega Churc me ensinou para iniciar com windows, funciona perfeitamente. Desejo colocar um Checkbox onde possa controlar o auto-iniciar, ou seja, com o Checkbox1.Checked :=true ativa o auto-iniciar, Checkbox1.Checked :=false desativa o auto-iniciar. Sei lêr e gravar o valor do registro mas não consegui fazer a ligação. Grato pela atenção. Auto-iniciar procedure TForm1.FormCreate(Sender: TObject); begin with TRegistry.Create do begin RootKey := HKEY_CURRENT_USER; try Openkey('Software\Microsoft\Windows\CurrentVersion\Run', False); WriteString('Cadastro', ParamStr(0)); finally Closekey; Free; end; end; end; lêr e gravar valor procedure TForm1.Button1Click(Sender: TObject); begin with TRegistry.Create do begin try RootKey := HKEY_CURRENT_USER; OpenKey('Cad',True); WriteBool('Dados',checkbox1.Checked); finally CloseKey; Free; end; end; end; procedure TForm1.Button2Click(Sender: TObject); begin with TRegistry.Create do begin try RootKey := HKEY_CURRENT_USER; OpenKey('Cad',False); checkbox1.Checked:=(ReadBool('Dados')); finally CloseKey; Free; end; end; end;
-
Não seria mais facil e mais pratico voce utilizar um quickreport para isto ? Jhonas, já faço uso do Rave para determinados fins, esta questão da imagem no Memo é um caso à parte, de acordo com suas dicas consegui posicionar a imagem em qualquer lugar do Memo inclusive usar todas as propriedades de um Timage, isso foi possível graças ao uso da propriedade Parent. Veja como ficou fácil procedure TForm1.Button1Click(Sender: TObject); begin with TImage.Create(form1) do begin Parent := memo1; width:= 50; height:= 50; left:= 30; top:= 30; proportional:= true; Picture.LoadFromFile('c:\img.bmp'); end; o motivo é que quando definido um bitmap para a propriedade Brush, ele o usa para o preenchimento do fundo ao invés de usar a cor sólida. O estranho é que este recurso deveria utilizar apenas um bitmap de 8x8 pixel. E pelo que pesquisei, a documentação diz que seria copiado apenas um retângulo deste tamanho a partir do canto superior esquerdo. :huh: acho que a melhor opção seria utilizar o componente TRichEdit. vous parlez français? :D Dê uma olhada neste tópico "INSÉRER UNE IMAGE (BITMAP) DANS UN RICHEDIT (RXRICHEDIT)" (não estou gritando, o título está assim mesmo ;)) Não se preocupe, o código está em Inglês. ;) Abraços Le Micheus, muito boa esta dica do RichEdit, agora tenho duas questões resolvidas, tanto inserir a imagem no Memo como no RichEdit, passarei a usar o RichEdit devido ao maior número de opções que ele oferece, falta pouco para fechar este tópico. Antes de trocar o Memo pelo RichEdit, resta uma dúvida. Quando testei a dica do Jhonas usei o código abaixo para imprimir o Memo, mas agora que inseri a imagem ela não é impressa, tentei alterar o código mas não consegui imprimir a imagem, somente o texto é impresso. Por uma questão didática, o que faltou inserir neste código para que ele além de se referir as linhas também se refira à imagem? O código usado para imprimir o Memo. procedure TForm1.Button2Click(Sender: TObject); var i, Linha : Integer; AltLinha : Integer; begin Linha := 0; Printer.BeginDoc; AltLinha := Trunc(Printer.Canvas.TextHeight('My')*1.1); for i := 0 to Memo1.Lines.Count - 1 do begin Printer.Canvas.TextOut(0, Linha, Memo1.Lines[i]); Linha := Linha + AltLinha; if Linha >= Printer.PageHeight then begin Printer.NewPage; Linha := 0; end; end; Printer.EndDoc; end; Grande abraço a todos e obrigado pela atenção.
-
Boa tarde amigos, gostaria de saber porque ao inserir a imagem no Memo usando o código abaixo ela se repete várias vezes e o texto fica acima dela , desejo colocar uma imagem no topo do Memo e abaixo dela inserir o texto, a intenção é inserir uma pequena logomarca no Memo o qual uso como formulário para impressão. Pergunto, como posiciono a imagem no topo do Memo? Como inserir o texto depois da imagem? O código tirado de (DicasDelphi) procedure TForm1.FormActivate(Sender: TObject); var Bmp : TBitmap; begin Bmp :=TBitmap.Create; Bmp.LoadFromFile('c:\img.bmp'); Memo1.brush.Bitmap:=TBitmap.Create; Memo1.brush.Bitmap.LoadFromFile('c:\img.bmp'); end; end; Grato a todos pela atenção
-
Meu caro Churc, muito obrigado pela dica valiosa, este programa é completíssimo! Grande abraço
-
Olá amigos, ao fazer uma pesquisa sobre zoom relacionada ao meu último post, encontrei um programa chamado Zoomtool, achei interessante o fato de que ao passar o cursor do mouse sobre qualquer cor em qualquer parte da tela o programa captura o código RGB da cor, por exemplo quando o cursor está sobre a cor clBtnFace, a cor é exibida num panel e seu código aparece assim : R: 236 G:233 B:216 Gostaria de fazer um programa somente com esta função sem ter que usar programas de terceiros. Grato pela atenção
-
Mestre Sam, de acordo com sua idéia faça o seguinte: No photoshop salve suas Layers cada uma com um nome diferente. No Corel repita o processo inserir objeto para cada uma delas, (não use o comando importar senão o filtro de importação irá juntar as layers e a imagem virá completa). 1 - Selecione a imagem, clique em Bitmaps - Converter em bitmap, na resolução deixe com 300 dpi, Cor RGB (24bits), (é preciso fazer a conversão para editar a imagem pelo Corel). Marque a opção Suavização de serrilhado e clique em OK Repita o procedimento para todas as imagens. 2 - Selecione a imagem, clique em Bitmaps - Rastrear bitmap - (escolha uma opção onde o resultado seja melhot), por exemplo Logotipo detalhado ou Imagem de alta qualidade. Na janela de rastreio marque a opções: Remover fundo para que o fundo branco seja excluido. O restante você pode visualmente escolher as melhores opções na janela de rastreio. Após clicar em Ok a imagem será vetorizada. Repita para todas as imagens. Boa sorte
-
Eder, se você usar imagem com extensão JPG acontecerá isso que você relatou, use imagem com extensão BMP, por exemplo nomedaimagem.bmp. No entanto, vou deixar outro código onde a imagem não bate e volta, ela some na direita e reaparece na esquerda, como neste código não há inversão pode usar imagem JPG ou BMP. Se não desejar que a barra de Scroll horizontal apareça no Form quando a imagem tocar na borda direita, na propriedade do Form basta deixar HorzScrollBar | Visible como False. var Form1: TForm1; x: Integer = 1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 10; Form1.DoubleBuffered:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin image1.Left:=image1.Left + x; if image1.Left>ClientWidth then image1.Left:=ClientWidth - (ClientWidth + Image1.Width); end; end. Boa sorte.
-
Aleksander, dá para utilizar a mesma imagem. Basta fazer um flip horizontal da mesma. O procedimento é o mesmo: ao atingir a margem direita ou esquerda é só inverter a imagem - veja como with Image1.Picture.Bitmap do Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(Width-1, 0, -1, Height)); O código é só este para as duas situações. Abraços Micheus, perfeito!! Abraço Eder, o colega Micheus resolveu o problema do carro voltar de ré, você vai achar muito interessante, assim que a imagem toca a borda do Form ela é invertida, use uma imagem .BMP. ... var Form1: TForm1; x: Integer = 1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 10; Form1.DoubleBuffered:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Left:=Image1.Left + x; if Image1.Left>ClientWidth - Image1.Width-1 then begin x := x * -1; with Image1.Picture.Bitmap do Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(Width-1, 0, -1, Height)); end; if Image1.Left<1 then begin x := x * -1; with Image1.Picture.Bitmap do Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(Width-1, 0, -1, Height)); end; end; end. Abraço
-
Olá amigos, uso este código para ampliar minhas imagens, para a imagem não fugir da tela eu a coloco dentro de um Panel, porém ao clicar com o mouse sobre a imagem ocorre o seguinte: A imagem é amplidada a partir do canto superior esquerdo, gostaria que ela fosse ampliada a partir do local exato do clique do mouse, assim quando eu desejar visualizar um detalhe na imagem clicaria sobre ele para ampliá-lo. Esta é a maneira que uso para ampliar clicando com o botão esquerdo do mouse mas se tiver outra maneira agradeceria a colaboração. procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i: integer; begin for i:= 1 to 10 do form1.Image1.Width:= form1.Image1.Width + 5; form1.Image1.height:= form1.Image1.height + 10; Para diminuir eu uso um Button pois ainda não aprendi a colocar este código no botão direito do mouse para diminuir. var i: integer; begin for i:= 1 to 10 do form1.Image1.Width:= form1.Image1.Width - 5; form1.Image1.height:= form1.Image1.height - 10; Grato a todos pela atenção!
-
(Resolvido) Exibir Barra de progresso ao tocar som
pergunta respondeu ao Aleksander de Aleksander em Delphi, Kylix
Jhonas, com Gauge a questão foi resolvida. Obrigado. Grande abraço. -
Olá Eder, como os colegas praticamente resolveram a questão vou deixar um exemplo que uso, neste exemplo a imagem vai até a borda do Form e volta. ... var Form1: TForm1; x: Integer = 1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 10; Form1.DoubleBuffered:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Left:=Image1.Left + x; if Image1.Left>ClientWidth - Image1.Width-1 then begin x := x * -1; end; if Image1.Left<1 then begin x := x * -1; end; end; end. Como você disse que é para um carro, neste caso ele vai voltar de ré, para resolver isso basta você repetir o código para a segunda imagem com o carro invertido deixando-a invisível, assim quando a imagem1 chegar a borda direita do Form ela some e a imagem2 aparece e quando a imagem 2 chegar na borda esquerda ela some e a imagem1 reaparece sucessivamente. Boa sorte.
-
Olá Mestre Sam, faça o seguinte: No Corel No menu Editar clique em Inserir novo objeto Na janela Inserir novo objeto marque a opção Criar do arquivo Clique no botão Procurar e localize seu arquivo feito no Photoshop (Perceba que ao lado do botão Procurar tem a opção Vincular, mais abaixo explico para que serve) Após localizar clique em OK o arquivo será inserido na página A opção Vincular funciona da sequinte maneira: Se você marcar esta opção, edite o arquivo normalmente no Photoshop e salve. No Corel para ele receber as alterações que você fez no Photoshop, selecione a imagem, no menu Editar clique em Vínculos, na janela Vínculos clique em Atualizar agora e o arquivo que está no Corel receberá todas as alterações feitas no Photoshop. Se não quiser mais que o arquivo tenha vínculo clique em Quebrar vínculo na janela Vínculo. (Só quebre o vínculo se não precisar mais editar o arquivo no Photoshop). Uma sugestão, salve ao fundo do cartão com as imagens no Photoshop sem as letras e depois insira no Corel, as letras você pode digitar no Corel para facilitar as alterações sem precisar ficar editando no Photoshop sempre que tiver a necessidade de alterar algo. Boa sorte.
-
Olá amigos, tenho 2 questões sobre Barra de progresso. Questão 1: Estou usando um arquivo de recurso que toca som .Wav, desejo colocar uma Barra de progresso que acompanhe a execução da música, e um Label que exiba o progresso em porcentagem, não sei como me referir ao arquivo de Recurso para usar a Barra de progresso e o Label. A chamada do som Wav. {$R *.dfm} {$R SomWave.Res} procedure TForm1.Button1Click(Sender: TObject); begin PlaySound('SomWave',hInstance,Snd_Async or Snd_Memory or Snd_Resource); end; end. Questão 2: Aqui tenho o código que uso para mp3, consegui colocar uma Barra de progresso. Desejo que ao completar a Barra de progresso o botão Stop do MediaPlayer1 seja clicado, tentei algumas combinações sem resultado. É possível uma Barra de progresso cheia acionar o clique de um botão? A chamada do som mp3 {$R *.dfm} {$R Som.res} procedure TForm1.Button1Click(Sender: TObject); var rStream: TResourceStream; fStream: TFileStream; fname: string; begin fname:=ExtractFileDir(Paramstr(0))+'Som.mp3'; rStream := TResourceStream.Create (hInstance, 'Som', RT_RCDATA); try fStream := TFileStream.Create(fname, fmCreate); try fStream.CopyFrom(rStream, 0); finally fStream.Free; end; finally rStream.Free; end; ProgressBar1.Max:=0; MediaPlayer1.Close; MediaPlayer1.FileName:=fname; MediaPlayer1.Open; ProgressBar1.Max := mediaPlayer1.Length; end; procedure TForm1.Timer1Timer(Sender: TObject); begin ProgressBar1.Position := MediaPlayer1.Position; end; end. Grato a todos pela atenção.
-
(Resolvido) Colocar uma string na DLL
pergunta respondeu ao Aleksander de Aleksander em Delphi, Kylix
Jhonas, agora funcionou. Muito obrigado. Grande abraço! -
Olá amigos, abaixo tem o exemplo de uma Dll que pequei aqui no forum, troquei algumas letras e inseri o Clear e o SetFocus no Edit, essa Dll possui números e funciona perfeitamenta. A Dll: Library Serial; function Chave(Senha : integer): integer; export; begin Senha := 123; Chave := Senha; end; exports Chave; begin end. Para usar: Function Chave(Senha : Integer):Integer; external 'Serial.dll'; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var N, C : Integer; begin N := StrToInt(Edit1.Text); C := Chave(StrToInt(Edit1.Text)); if N = C then ShowMessage('Serial válido, você acertou!') else ShowMessage('Serial inválido!'); edit1.Clear; edit1.SetFocus; end; end. Desejo colocar uma palavra no lugar dos números, funciona e depois dá erro. Fiz assim: A Dll alterada por mim: Library Senha; function Chave(Senha : string):string; export; begin Senha := 'Delphi'; Chave := Senha; end; exports Chave; begin end. Para usar (se funcionasse é claro) Function Chave(Senha : string):string; external 'Senha.dll'; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var N, C : string; begin N :=Edit1.Text; C := Chave(Edit1.Text); if N = C then ShowMessage('Serial válido, você acertou!') else ShowMessage('Serial inválido!'); edit1.Clear; edit1.SetFocus; end; end. Depois do clique no botão da erro com essa mensagem: Project1.exe raised exception class EinvalidPointer with message ‘Invalid pointer operation’. Process stopped. Use Step or Run to continue. Pergunto: Como onde está o meu erro? Grato a todos pela atenção