splach screen

0

mam taki kod

unit Unit1;

interface

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

type
TForm1 = class(TForm)
ProgressBar1: TProgressBar;
Timer1: TTimer;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin

ProgressBar1.Position := ProgressBar1.Position + 10;

if ProgressBar1.Position = 20 then
begin

Label2.Caption := 'Ładowanie bazy danych';
end;

if ProgressBar1.Position = 40 then
begin

Label2.Caption := 'Wczytywanie konfiguracji';
end;

if ProgressBar1.Position = 70 then
begin

Label2.Caption := 'Inicjalizacja';
end;

if ProgressBar1.Position = 100 then
begin
Showmessage('witamy');
form2.show;
timer1.enabled := false;
ProgressBar1.Position := 0;
form1.close;
end;
end;

end.

no i tam chcialem gdzie pisze form1.close; to zeby ta forma co splash screen jest zeby sie zamknela ta druga pokazala a tu jakis blad prosze o pomoc

0

a i mam pytanie czy da sie jakos oprocz tego (PlaySound('C:\Dzwiek.wav', 0, SND_FILENAME+SND_ASYNC);) wywolac muzyke bo ktos kto korzysta z mojego programu akrutat nie ma tam tego plku no i da sie jakos wbudowac piosenke w program??

0

1) Zamiast form1.close daj form1.hide

2) Zasoby

0

Co do SplashScreena to zobacz sobie źrodła na: http://www.speedyshare.com/406126890.html jak
chcesz bez chowania belki na pasku zadań to usuń ze zdarzen OnCreate kod ze zmienną Ex, a poza
tym w OnCreate głownej formatki masz zrobione Sleepy, bo aplikacji nic nie robi, więc dodałem je,
aby uzyskać efekt odczekania. Poza tym poczytaj sobie poniższy artykuł, tam masz również przykłady
i opisany splash: http://4programmers.net/Delphi/Gotowce/Ekranpowitalny-_Splash_Screen

Co do drugiego pytania to tak jak Tobie odpowiedziano - zasoby. Dokładnie masz wszystko opisane
tutaj: Zasoby w EXE Co do dźwięków lub muzyki to ja gdy
chodzi o zasoby umiem z nich odrwarzać przy użyciu biblioteki bass.dll, którą pobierzesz ze strony:
http://un4seen.com/bass.html - w pliku powinny być dołączone oprócz biblioteki przykłady jej użycia
także w Delphi. Jednak moduł bass.pass ładuje bibliotekę statycznie. Natomiast kod poniżej, ktory
użyłem w napisanej przez siebie grze, ładuje bibliotekę dynamicznie i ma procedury, który "mówią"
wszystko o ich działaniu. Kod ten pozwala na odtworzenie modułów muzycznych lub mp3 czy też to
plików wave z zasobów. Procedury OdtwarzajDzwiek - służa do plików mp3/wav/ogg, natomiast jak
nazwa wskazuje OdtwarzajModul - odtwarza mod/xm/it/s3m/stm i innych. W przykładach do dlla jest
wprawdzie podkatalog Dynamic z przykładem modułu do ładowania dynamicznego biblioteki, ale on
zawiera wszystkie funkcje, które trzeba użyć po sobie. Natomiast poniższy kod tylko te najważniejsze.

unit bassfile;

interface

uses
  Forms, Windows, Dialogs, SysUtils;

const
  Sound_Dll_Nazwa = 'bass.dll';
  BASS_SAMPLE_LOOP = 4;
  BASS_MUSIC_RAMPS = $400;
  BASS_STREAM_PRESCAN = $20000;
  BASS_MUSIC_PRESCAN = BASS_STREAM_PRESCAN;

type
  HMUSIC = DWORD;
  HSTREAM = DWORD;
  BOOL = LongBool;

var
  Chn : DWord;
  Dll_H : THandle;
  MyResource : HRSRC;
  MyGlobal : HGLOBAL;
  PResource : Pointer;
  ResSize : Integer;
  BASS_Init : function(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall;
  BASS_MusicLoad : function(mem: BOOL; f: Pointer; offset, length, flags, freq: DWORD): HMUSIC; stdcall;
  BASS_StreamCreateFile : function(mem: BOOL; f: Pointer; offset, length, flags: DWORD): HSTREAM; stdcall;
  BASS_ChannelPlay : function(handle: DWORD; restart: BOOL): BOOL; stdcall;
  BASS_ChannelStop : function (handle: DWORD): BOOL; stdcall;
  BASS_Free : function : BOOL; stdcall;
  procedure InicjujBibliotekeBass;
  procedure ZwolnijBibliotekeBass;
  procedure OdtwarzajDzwiekPlik(NazwaPliku : PChar; CzyLoop : boolean);
  procedure OdtwarzajModulPlik(NazwaPliku : PChar; CzyLoop : boolean);
  procedure OdtwarzajDzwiekZasoby(NazwaZasobu : PChar; CzyLoop : boolean);
  procedure OdtwarzajModulZasoby(NazwaZasobu : PChar; CzyLoop : boolean);
  procedure ZatrzymajOdtwarzanie;

implementation

procedure InicjujBibliotekeBass;
begin
  if not FileExists(Sound_Dll_Nazwa) then
    begin
    MessageBox(Application.Handle,
    PChar('Nie można znaleźć pliku: ' + Sound_Dll_Nazwa + '!' +#13#10+
    'Odtwarzanie dźwieków nie będzie możliwe.'),
    PChar(Application.Title), MB_OK + MB_ICONERROR);
    Exit;
    end;

  Dll_H := LoadLibrary(PChar(Sound_Dll_Nazwa));

  if Dll_H = 0 then
    begin
    MessageBox(Application.Handle,
    PChar('Nie można załadować pliku: ' + Sound_Dll_Nazwa + '!' +#13#10+
    'Odtwarzanie dźwieków nie będzie możliwe.'),
    PChar(Application.Title), MB_OK + MB_ICONERROR);
    Exit;
    end;

  BASS_Init := GetProcAddress(Dll_H, 'BASS_Init');
  BASS_MusicLoad := GetProcAddress(Dll_H, 'BASS_MusicLoad');
  BASS_StreamCreateFile := GetProcAddress(Dll_H, 'BASS_StreamCreateFile');
  BASS_ChannelPlay := GetProcAddress(Dll_H, 'BASS_ChannelPlay');
  BASS_ChannelStop := GetProcAddress(Dll_H, 'BASS_ChannelStop');
  BASS_Free := GetProcAddress(Dll_H, 'BASS_Free');

  if (@BASS_Init = nil)
  or (@BASS_MusicLoad = nil)
  or (@BASS_StreamCreateFile = nil)
  or (@BASS_ChannelPlay = nil)
  or (@BASS_ChannelStop = nil)
  or (@BASS_Free = nil) then
    begin
    MessageBox(Application.Handle,
    PChar('Nieprawidłowa biblioteka: ' + Sound_Dll_Nazwa + '!' +#13#10+
    'Odtwarzanie dźwieków nie będzie możliwe.'),
    PChar(Application.Title), MB_OK or MB_ICONERROR);
    Exit;
    end;

  if not BASS_Init(-1, 44100, 0, Application.Handle, nil) then
    begin
    MessageBox(Application.Handle,
    'Błąd podczas inicjalizacji audio!',
    PChar(Application.Title), MB_OK + MB_ICONERROR);
    Exit;
    end;
end;

procedure ZwolnijBibliotekeBass;
begin
  BASS_Free;
  FreeLibrary(Dll_H);
end;

procedure OdtwarzajDzwiekPlik(NazwaPliku : PChar; CzyLoop : boolean);
var
  Loopowanie : integer;
  SoundFileName : PChar;
begin
  if (CzyLoop = True) then
     begin
     Loopowanie := BASS_SAMPLE_LOOP;
     end
     else
     begin
     Loopowanie := 0;
     end;

  SoundFileName := NazwaPliku;
  Chn := BASS_StreamCreateFile(False, SoundFileName, 0, 0, Loopowanie);
  BASS_ChannelPlay(Chn, False);
end;

procedure OdtwarzajModulPlik(NazwaPliku : PChar; CzyLoop : boolean);
var
  Loopowanie : integer;
  ModuleFileName : PChar;
begin
  if (CzyLoop = True) then
     begin
     Loopowanie := BASS_SAMPLE_LOOP;
     end
     else
     begin
     Loopowanie := 0;
     end;

  ModuleFileName := NazwaPliku;
  Chn := BASS_MusicLoad(False, ModuleFileName, 0, 0, Loopowanie, 0);
  BASS_ChannelPlay(Chn, False);
end;

procedure OdtwarzajDzwiekZasoby(NazwaZasobu : PChar; CzyLoop : boolean);
var
  Loopowanie : integer;
  SoundResourceName : PChar;
begin
  if (CzyLoop = True) then
     begin
     Loopowanie := BASS_SAMPLE_LOOP;
     end
     else
     begin
     Loopowanie := 0;
     end;

  SoundResourceName := NazwaZasobu;
  MyResource := FindResource(HInstance, SoundResourceName, RT_RCDATA);
  if MyResource = 0 then
    begin
    MessageBox(Application.Handle,
    'Nie można znaleźć zasobu z dźwiękiem!',
    PChar(Application.Title), MB_OK + MB_ICONWARNING);
    Exit;
    end;

  MyGlobal := LoadResource(HInstance, MyResource);
  PResource := LockResource(MyGlobal);
  ResSize := SizeOfResource(HInstance, MyResource);
  Chn := BASS_StreamCreateFile(True, PResource, 0, ResSize, Loopowanie);
  BASS_ChannelPlay(Chn, False);
  FreeResource(MyGlobal);
end;

procedure OdtwarzajModulZasoby(NazwaZasobu : PChar; CzyLoop : boolean);
var
  Loopowanie : integer;
  ModuleResourceName : PChar;
begin
  if (CzyLoop = True) then
     begin
     Loopowanie := BASS_SAMPLE_LOOP;
     end
     else
     begin
     Loopowanie := 0;
     end;

  ModuleResourceName := NazwaZasobu;

  MyResource := FindResource(HInstance, ModuleResourceName, RT_RCDATA);
  if MyResource = 0 then
    begin
    MessageBox(Application.Handle,
    'Nie można znaleźć zasobu z modułem muzycznym!',
    PChar(Application.Title), MB_OK + MB_ICONWARNING);
    Exit;
    end;

  MyGlobal := LoadResource(HInstance, MyResource);
  PResource := LockResource(MyGlobal);
  ResSize := SizeOfResource(HInstance, MyResource);
  Chn := BASS_MusicLoad(True, PResource, 0, ResSize, Loopowanie, 0);
  BASS_ChannelPlay(Chn, False);
  FreeResource(MyGlobal);
end;

procedure ZatrzymajOdtwarzanie;
begin
  BASS_ChannelStop(Chn);
end;

end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0