Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Tela De Apresentação


Guest --André --

Pergunta

Guest --André --

Olá pessoal fiz uma tela de apresentação para o meu programa, mas eu queria fazer de um jeito diferente da imagem que apresenta, Eu tenho um embrema do meu projeto e gostaria que aparecesse esse embrema sem ele estar no quadrado da janela, digo que ele só aparece o desenho e não o quadrado.

:blink:

Tipo o desenho, aparecesse só ele e não os lados.

Tem como fazer isso?

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Guest --André --
fiz o teste no delphi 7 e esta funcionando perfeitamente ... veja se o seu codigo esta como este:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Form1.Brush.Style := bsClear;
   Form1.BorderStyle := bsNone
end;

end.

Muito bom!!!!! Deu certo, Valeu Obrigado Jhonas, por ter me ajudado muito.

Até +

Iiiiiiiiiiiiiiiii, conclusões precipitadas, fiz o teste sem colocar no meu projeto e funfou beleza, e ai fiz nele e não dá por causa que eu uso o VclSkin.

"Mas será que tem jeito de eu o skin não fazer influenciar nesse form do splash, tipo desveincular o skin dele?

Link para o comentário
Compartilhar em outros sites

  • 0

Tudo bem ... eu tambem uso Skin na janela de apresentação e ativo esta skin no on create do form, desta maneira voce deve jogar o codigo antes da ativação da skin

exemplo:

procedure TForm1.FormCreate(Sender: TObject);
begin


   Form1.Brush.Style := bsClear;  // aqui voce coloca o codigo da janela
   Form1.BorderStyle := bsNone

   ss := Copy(CaminhoDasSkins,1,Pos('*.skn',CaminhoDasSkins)-2);
   SkinData1.Active := false;
   SkinData1.SkinFile := ss + 'iTunes.skn';
   if not SkinData1.Active Then SkinData1.Active := True;  // aqui voce ativa a skin

end;

Link para o comentário
Compartilhar em outros sites

  • 0

Vou tantar dar uma forcinha para ver se esse tópico encerra, ok?!

Seguinte, como já disse antes, acho que a solução está no código existente no link que postei lá encima. Então, segue anexo um exemplo, já com executável para ser testado (tem só que renomear porque se deixar como exe, tem anti-virus que não abre)

A estrutura é a seguinte:

- 2 janelas de Splashs (uSplashPuma.pas e uSplashAsas.pas) que são mostradas simultaneamente;

-> ambas possuem um TImage para "abrigar" a imagem em questão, no formato BMP;

-> ambas possuem a propriedade BorderStyle = bsNone;

-> ambas possuem um timer para em 10 segundos fechar a janela

-> um evento OnClick no TImage para fechar a janela ao clicar na imagem antes dos 10 segundos;

- 1 Form principal (uMainForm.pas) a ser mostrado ao final da apresentação das janelas Splash;

-> este form não tem nada.

- 1 unit (uRegionUtils.pas) onde coloquei o código listado no link;

Alterações no Source do projeto:

- o fonte do projeto foi alterado para mostrar as janelas sem incluí-las na lista de forms da aplicação;

- a primeira janela (puma) é apresentada com Show, para que a segunda janela possa ser apresentada independentemente da primeira ser fechada. Já esta segunda, é apresentada com ShowModal, o que causará uma pausa antes que a janela principal possa ser mostrada pelo método padão.

O resultado:

Aparecerão duas janelas de Splash (lado a lado) como mencionei, sendo que a área transparente não faz parte da janela, ou seja, o formato da janela será o da imagem. Assim, clicar na área onde você enxerga o fundo, resulta em perder o foco.

Não é uma questão de deixar o form transparente, mas sim de remover a área transparente do form - é como se ali o form que você usou em design-time (retangular) não existisse mais.

É testar para entender melhor.

Abraços

TestaSplash.zip

Link para o comentário
Compartilhar em outros sites

  • 0

Cara ... eu so te dei um exemplo... no seu codigo voce vai procurar onde voce ativa a skin e aquele codigo que deixa a janela invisivel tera que ser colocado antes da ativação da skin ... deu pra entender ??? este codigo que te passei como exemplo é apenas parte do meu codigo que eu uso ... so o coloquei como referencia para voce ... valeu ?

Link para o comentário
Compartilhar em outros sites

  • 0
Ok Micheus, mas se eu coloco uma imagem minha ele não muda.
Essa imagem é BMP?

Voce colocou ela no exemplo que anexei?

Faz o seguinte, este form que você tá usando como Splash (com a sua imagem), hospeda ele em algum site de compartilhamento para que a gente possa baixá-lo.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --André --
coloca o seu codigo do seu form onde voce ativa a sua skin ... fica mais facil mostrar para voce onde fazer a alteração.

Mas não tenho ativação do Skin, faço pelo componente mesmo esse é os meus codigos da janela splash:

O Skin está no form Principal e é ativado por ele mesmo.Uso o VclSkin.

unit Fsplash;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;

type
  TFrmSplash = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmSplash: TFrmSplash;

implementation

{$R *.dfm}

end.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom neste caso voce tera que deixar a skin desativada , ou seja na propriedade active vai deixar como false.. a modificação para o seu form esta ai:

unit Fsplash;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;

type
  TFrmSplash = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmSplash: TFrmSplash;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin

   Form1.Brush.Style := bsClear;  // aqui voce coloca o codigo da janela
   Form1.BorderStyle := bsNone

   if not SkinData1.Active Then SkinData1.Active := True;  // aqui voce ativa a skin

end;

end;
Verifiqei um erro ... corrigindo
procedure TFrmSplash.FormCreate(Sender: TObject);  //  trocar pelo nome do seu form
begin

   Form1.Brush.Style := bsClear;  // aqui voce coloca o codigo da janela
   Form1.BorderStyle := bsNone

   if not SkinData1.Active Then SkinData1.Active := True;  // aqui voce ativa a skin

end;
Bom neste caso voce tera que deixar a skin desativada , ou seja na propriedade active vai deixar como false.. a modificação para o seu form esta ai: correção no nome do form
unit Fsplash;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;

type
  TFrmSplash = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmSplash: TFrmSplash;

implementation

{$R *.dfm}


procedure TFrmSplash.FormCreate(Sender: TObject);
begin

   FrmSplash.Brush.Style := bsClear;  // aqui voce coloca o codigo da janela
   FrmSplash.BorderStyle := bsNone

   if not SkinData1.Active Then SkinData1.Active := True;  // aqui voce ativa a skin

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --André --
Bom neste caso voce tera que deixar a skin desativada , ou seja na propriedade active vai deixar como false.. a modificação para o seu form esta ai:

unit Fsplash;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, WinSkinData;

type
  TFrmSplash = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    SkinData1: TSkinData;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmSplash: TFrmSplash;

implementation

{$R *.dfm}

Uses FPrincipal;

procedure TFrmSplash.FormCreate(Sender: TObject);
begin


   FrmSplash.Brush.Style := bsClear;  // aqui voce coloca o codigo da janela
   FrmSplash.BorderStyle := bsNone;


   if not SkinData1.Active Then SkinData1.Active := True;  // aqui voce ativa a skin

end;

end.

Desse jeito que você colocou não dá certo o Skin Continua Ativo mesmo eu deixando ele desativado no proprio componente.

Link para o comentário
Compartilhar em outros sites

  • 0

OK ... então mude o comando da skin para active do form e teste

if not SkinData1.Active Then SkinData1.Active := True; // aqui voce ativa a skin

se ainda assim não funcionar voce pode jogar a skin no segundo formulario da sua aplicação, ai ele não vai interferir na apresentação do formulario FrmSplash;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --André --
OK ... então mude o comando da skin para active do form e teste

if not SkinData1.Active Then SkinData1.Active := True; // aqui voce ativa a skin

se ainda assim não funcionar voce pode jogar a skin no segundo formulario da sua aplicação, ai ele não vai interferir na apresentação do formulario FrmSplash;

Jhonas se eu deixo no formulário de splash o skin ele não continua interferindo no splash e no formulario principal e os demais não funciona.

Micheus do jeito que você me passou eu entendi, mas gostaria de saber em questão de outras imagem daquele mesmo jeito, mas com fundo diferente o caso é como posso fazer com outras oque eu tenho que mudar, por exemplo e se eu tiver uma imagem igual à esta:

Tipo o fundo o céu sumisse:

wallpaperpaisajes3dportxj8.th.jpg

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus do jeito que você me passou eu entendi, mas gostaria de saber em questão de outras imagem daquele mesmo jeito, mas com fundo diferente o caso é como posso fazer com outras oque eu tenho que mudar, por exemplo e se eu tiver uma imagem igual à esta:

Tipo o fundo o céu sumisse:

wallpaperpaisajes3dportxj8.th.jpg

André, leia e veja os casos abaixo e você haverá de convir que seria algo meio complicado de ser feito nesta imagem, não acha?

DÊ uma olhada nessas imagens

PIRAMIDE

ROMA

Estas aqui seriam mais simples, bastaria você fazer uso de um editor e remover ou pintar toda a área a ficar transparente de uma mesma cor, já que atualmente elas possuem uma gama de cores similares, o que não deixaria o recurso de transparência funcionar (até mesmo a transparência oferecida pelo componente TImage, quanto mais outro algorítmo qualquer). Este tipo de intervenção já foi mencionado pelo pessoal nos posts iniciais.

Veja como elas devem ficar para que o esquema de transparência (em qualquer uso) funcione:

thecolosseumromeitalysi5.th.png pyramidsofgizaegyptjf8.th.png

Também é importante ter em mente que, em geral, a cor a ser tratada como sendo a de transparência é a cor do 1º pixel (o superior, mais a esquerda) ou aquele definido na propriedade TransparentColor (até alterei a procedure CreateRegion para refletir esta alteração que não foi prevista inicialmente pelo autor do código - já atualizei o anexo lá em cima no post#30).

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --André --

Olá pessoal, muito obrigado pela atenção de vocês, com esse post fiquei mais por dentro disso tenho tudo anotado aqui sobre este tópico, muito obrigado.

Tudo Resolvido.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...