<Jeroen> Wirf: vrouwen versieren kan je gewoon in het OSI model proppen hoor :P
I am dyslexic of Borg prepare to have your ass laminated
Real Programmers always confuse Christmas and Halloween because oct31 = dec25
Je while loopje zorgt ervoor dat het programma 3 seconden wacht inderdaad, maar het is niet echt een splash screen aangezien de rest van het programma niet laad. Pas na 3 seconden nutteloos wachten laad het programma.Kogelvis schreef op 03 november 2002 @ 12:48:
Ik heb een Form genaamd Form2 met een plaatje er in en een timer ingesteld op 3 seconden,
met die ontimer gebeurd het volgende
code:
1 2 3 4 procedure TForm2.Timer1Timer(Sender: TObject); begin Timer1.Enabled := False; end;
Op het hoofdform gebeurd het volgende
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16implementation {$R *.dfm} begin Application.Initialize; Form2 := TForm2.Create(Application); Form2.Show; Form2.Update; while Form2.Timer1.Enabled do Application.ProcessMessages; Application.CreateForm(TForm1, Form1); Form2.Hide; Form2.Free; Application.Run;
En ik zou er nog een try...finally omheenzetten...
Die fout zit dus in mm1.pas op regel 36. Is wel handig als je die regel (en meer) laat zien. Wordt anders lastig achterhalen wat de fout is.hierna volgen mijn procedures van het programma maar als ik het nu probeer te compileren krijg ik de volgende error
ja, er moet end. achter, anders werkt je programma gewoon niet. In de knoop komen met je procedures?! Welke dan?Zo goed ik weet moet nu na die application.run; end. komen maar dat gaat ook niet werken aangezien ik dan in de knoop kom met mijn procedures maar wat kan ik nu doen om het wel werkend te krijgen de search / de pagina's uit de faq en de help van delphi bieden geen oplossing.
We adore chaos because we like to restore order - M.C. Escher
Wat ik je wel aanraad is het volgende: de Form1.Create-event gebruiken om je Form2 te laten zien dan wel die timer te gebruiken en niet alles daar in dat stukke code te zetten waar je nu mee bezig bent...
We adore chaos because we like to restore order - M.C. Escher
True true, maar je zou misschien Always on top op een of andere manier aan kunnen zetten?LordLarry schreef op 03 november 2002 @ 13:33:
Nee, je kan daar best in klooien. Als je maar weet wat je doet. Voor splash screens is het bijna ook de enige juiste manier om het te doen. Het kan wel zoals jij voorsteld, maar wat als er meerdere forms geautocreate worden? Dan wil je wel de splashscreen zolang in beeld houden als het laden van al die forms duurt...
while Form2.Timer1.Enabled do
Application.ProcessMessages;
door
Sleep(2000);
scheelt een hoop gedoe.
op je vraag: mm1.pas, is dat je project-unit of een andere unit? het zou idd makkelijker zijn als je even de functie met die lijn (63) in laat zien, anders zal het wat moeilijk zijn...
If you come here... you'll find me... I promise
Neeeee!!!!Ruben314 schreef op 03 november 2002 @ 13:35:
vervang dit:
while Form2.Timer1.Enabled do
Application.ProcessMessages;
door
Sleep(2000);
scheelt een hoop gedoe.
Sleep is echt een no-no met programmeren in windows! Bijna net zo erg als goto.
En daarbij vervangt het ook niet niet wat daar staat....
En daarbovenop is wat er staat ook nog eens niet gewenst...
[ Voor 0% gewijzigd door LordLarry op 03-11-2002 13:40 . Reden: quote ]
We adore chaos because we like to restore order - M.C. Escher
Splash := TSplash.Create(nil);
Splash.Show;
Splash.Fadein; // fadein heeft een delay
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
MainForm.Show;
MainForm.Refresh;
Splash.Update;
Splash.BringToFront;
-- [sleep of andere nuttige dingtjes] --
Splash.Fadeout; // is wel erg mooi.....
Splash.Free;
Application.Run;
fade in doet:
// fade in als we in win9x/win2k zitten.
// minimaal 1 seconden slash laten zien
procedure TSplash.Fadein;
var
I: Integer;
Info: TOSVersionInfo;
begin
// Check Windows version
Info.dwOSVersionInfoSize := SizeOf(Info);
GetVersionEx(Info);
If ((Info.dwPlatformId = VER_PLATFORM_WIN32_NT) and (Info.dwMajorVersion >= 5)) then
begin
For I:=0 to 25 do
begin
AlphaBlendValue := (10*I);
Update;
end;
Sleep(1000);
end else begin
AlphaBlendValue := 255;
Update;
Sleep(1000);
end;
end;
Fade out kun je zelf wel verzinnen denk ik :-)
Nu wacht ie 3 seconden en doet niets en daarna gaat ie de applicatie laden...
We adore chaos because we like to restore order - M.C. Escher
hier is de code van Form1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
| unit mm1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, MPlayer, ToolWin, ActnMan, ActnCtrls, ExtCtrls,
ActnColorMaps, StdCtrls, jpeg, ComCtrls, Unit2;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
MediaPlayer1: TMediaPlayer;
XPColorMap1: TXPColorMap;
Image1: TImage;
Label3: TLabel;
Image7: TImage;
Image8: TImage;
Image9: TImage;
Image10: TImage;
Image11: TImage;
ProgressBar1: TProgressBar;
Timer1: TTimer;
Label2: TLabel;
Label1: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Exit1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Image7Click(Sender: TObject);
procedure Image8Click(Sender: TObject);
procedure Image9Click(Sender: TObject);
procedure Image10Click(Sender: TObject);
procedure Image11Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
begin
Application.Initialize;
Form2 := TForm2.Create(Application);
Form2.Show;
Form2.Update;
while Form2.Timer1.Enabled do
Application.ProcessMessages;
Application.CreateForm(TForm1, Form1);
Form2.Hide;
Form2.Free;
Application.Run;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName := OpenDialog1.FileName;
MediaPlayer1.Open;
Label3.Caption := ExtractFileName(MediaPlayer1.Filename);
end;
end;
procedure TForm1.Image7Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Previous;
end;
end;
procedure TForm1.Image8Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Rewind;
MediaPlayer1.Play;
MediaPlayer1.TimeFormat := tfMilliseconds;
ProgressBar1.Max := MediaPlayer1.Length;
end;
end;
procedure TForm1.Image9Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Pause;
end;
end;
procedure TForm1.Image10Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Stop;
end;
end;
procedure TForm1.Image11Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Next;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Label3.Caption = 'None' then
ProgressBar1.Enabled := False
else
ProgressBar1.Position := MediaPlayer1.Position;
if Label1.Font.Color = clBackground then
Label1.Font.Color := clSilver
else
Label1.Font.Color := clBackground;
end;
end. |
waarbij
1
| procedure TForm1.Exit1Click(Sender: TObject); |
dit regel 63 is.
edit
Wat mijn doel is is gewoon +/- 3 seconden mn splashscreen te laten zien en dan pas de hoofdapplicatie te openen het programma hoeft verder niks in te laden voor de tijd daarvoor had ik deze oplossing gevonden alleen krijg ik hem niet gecompileerd aangezien hij blijft hangen op regel 63 hij probeert waarschijnlijk die end. te vinden alleen die staat pas aan het eind en die procedures zijn wel makkelijk in de applicatie.
<Jeroen> Wirf: vrouwen versieren kan je gewoon in het OSI model proppen hoor :P
I am dyslexic of Borg prepare to have your ass laminated
Real Programmers always confuse Christmas and Halloween because oct31 = dec25
zoiets als
begin:=now;
...laat je splash zien
...
doe je leuke dingtjes doen en zo
...
while (now-begin<roepmaareentijd) do application.processmessages;
splash.free;
-----
die doe je in je project-source. Die krijg je door project -> view project source (uit m'n hoofd)
[ Voor 0% gewijzigd door Ruben314199 op 03-11-2002 14:05 . Reden: projectsource ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
| unit mm1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, MPlayer, ToolWin, ActnMan, ActnCtrls, ExtCtrls,
ActnColorMaps, StdCtrls, jpeg, ComCtrls, Unit2;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
MediaPlayer1: TMediaPlayer;
XPColorMap1: TXPColorMap;
Image1: TImage;
Label3: TLabel;
Image7: TImage;
Image8: TImage;
Image9: TImage;
Image10: TImage;
Image11: TImage;
ProgressBar1: TProgressBar;
Timer1: TTimer;
Label2: TLabel;
Label1: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Exit1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Image7Click(Sender: TObject);
procedure Image8Click(Sender: TObject);
procedure Image9Click(Sender: TObject);
procedure Image10Click(Sender: TObject);
procedure Image11Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName := OpenDialog1.FileName;
MediaPlayer1.Open;
Label3.Caption := ExtractFileName(MediaPlayer1.Filename);
end;
end;
procedure TForm1.Image7Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Previous;
end;
end;
procedure TForm1.Image8Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Rewind;
MediaPlayer1.Play;
MediaPlayer1.TimeFormat := tfMilliseconds;
ProgressBar1.Max := MediaPlayer1.Length;
end;
end;
procedure TForm1.Image9Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Pause;
end;
end;
procedure TForm1.Image10Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Stop;
end;
end;
procedure TForm1.Image11Click(Sender: TObject);
begin
if Label3.Caption = 'None' then
begin
ShowMessage('Please open a media file first!');
end else
begin
MediaPlayer1.Next;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Label3.Caption = 'None' then
ProgressBar1.Enabled := False
else
ProgressBar1.Position := MediaPlayer1.Position;
if Label1.Font.Color = clBackground then
Label1.Font.Color := clSilver
else
Label1.Font.Color := clBackground;
end;
begin
Application.Initialize;
Form2 := TForm2.Create(Application);
Form2.Show;
Form2.Update;
while Form2.Timer1.Enabled do
Application.ProcessMessages;
Application.CreateForm(TForm1, Form1);
Form2.Hide;
Form2.Free;
Application.Run;
end. |
[edit]
Beta 2 is nu gecompileerd en de setup gedownload de geinterreseerde mensen kunnen hem downloaden door op de volgende link te klikken
CyberAudio
en iedereen bedankt voor de hulp.
[ Voor 0% gewijzigd door Kogelvis op 03-11-2002 14:16 . Reden: Beta 2 downloadlink toegevoegd ]
<Jeroen> Wirf: vrouwen versieren kan je gewoon in het OSI model proppen hoor :P
I am dyslexic of Borg prepare to have your ass laminated
Real Programmers always confuse Christmas and Halloween because oct31 = dec25
Ermmm....niet veel pascal ervaring nog zeker?Kogelvis schreef op 03 november 2002 @ 13:58:
Ok doe ik het even makkelijker
hier is de code van Form1
....
Wat mijn doel is is gewoon +/- 3 seconden mn splashscreen te laten zien en dan pas de hoofdapplicatie te openen het programma hoeft verder niks in te laden voor de tijd daarvoor had ik deze oplossing gevonden alleen krijg ik hem niet gecompileerd aangezien hij blijft hangen op regel 63 hij probeert waarschijnlijk die end. te vinden alleen die staat pas aan het eind en die procedures zijn wel makkelijk in de applicatie.
Je
1
2
| begin end. |
Moet altijd onderaan de unit staan.
Maar je maakt nog een veel grotere fout. Die code die jij daar tussen wil zetten staat echt totaal op de verkeerde plaats. Duidelijk een geval van copy/paste en niet weten waar de klepel hangt
Het was een voorbeeld hoe je code aan te passen in het project bestand (Project1.dpr ofzo). Die code zet je echt nooit in een andere unit. Het is de opstart code van je applicatie en die hoord alleen in de dpr...
Als je 3 seconden niets wil doen en dan pas je app laden kan je het idd beter zoals eerder al gemeld gewoon in de OnShow of OnCreate van je mainform douwen. Maar het lijkt mij wat vreemd. Ik heb liever dat de applicatie alvast geladen wordt in die 3 seconden...
We adore chaos because we like to restore order - M.C. Escher
Dat zeg ik dusKogelvis schreef op 03 november 2002 @ 14:05:
nou ik heb het al opgelost de code is als volgt het moest dus aan het eind staan ipv aan het begin
Maaruh, zoals ik net hierboven gemeld heb is het echt totaal fout! Vind het bijzonder dat het uberhaupt werkt. Kijk gewoon eens naar wat Ruben314 over je project file en dan zie je vast wel wat je fout is
We adore chaos because we like to restore order - M.C. Escher
idd nog geen echte pascal ervaring ben beginner.
Dan vind ik het toch bijzonder knap dat het precies zo in een officieel borland boek vermeld staat. dan zal dit toch wel een goeie manier zijn.Vind het bijzonder dat het uberhaupt werkt.
<Jeroen> Wirf: vrouwen versieren kan je gewoon in het OSI model proppen hoor :P
I am dyslexic of Borg prepare to have your ass laminated
Real Programmers always confuse Christmas and Halloween because oct31 = dec25
Dan ben ik bang dat je het verkeerd begrepen hebt wat daar staat...Kogelvis schreef op 03 november 2002 @ 18:08:
Dan vind ik het toch bijzonder knap dat het precies zo in een officieel borland boek vermeld staat. dan zal dit toch wel een goeie manier zijn.
Je moet het natuurlijk zelf weten, maar kijk gewoon eens in je dpr file en vertel me dan nog eens dat je het goed begrepen hebt.
We adore chaos because we like to restore order - M.C. Escher