Autor Beitrag
Xearox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Do 21.10.10 14:39 
Hallo zusammen

hab folgendes Problem.
Hab vor einiger Zeit mir einen kleinen Wecker Programmiert.
So vorgestern hab ich dann mal bisschen weiter dran gearbeitet.

Ich habe ein MainMenu, wo man es die möglichkeit gibt, Festvorhandene Sound Datein zu ändern.
Das klappt auch soweit ganz gut, in einem Label lasse ich mir anzeigen, was zur Zeit verwendet wird.
Jedoch wird es im TMediaPlayer nicht geändert.

Ablauf - Test:

Ich starte das Programm.
Änder den Sound auf Wecker Sound normal.
Dann stelle ich die Zeit ein.
Klicke dann auf Einschalten.
Eine Minute später kommt die Sound wiedergabe.
Klicke auf Ausschalten, Wecker wird Ausgeschaltet, jedoch bleibt er geöffnet.
Stelle nun eine andere Zeit ein und wähle einen anderen Sound aus, in meinem Fall, Rock N Roll Train - AcDc.
Klicke nun wieder auf Einschalten.
...
Doch eine Minute später bleibt der Sound weg, es passiert nichts.

Ich habe auch schon eine Procedure erstellt, welche zusätzlich den Befehl " MediaPlayer1.Filename := (ExtractFilePath(ParamStr(0)) + MusikDat); " macht.
Jedoch passiert so auch nichts.


Hier mal mein Code:

ausblenden volle Höhe Delphi-Quelltext
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:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
unit Main;

interface

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

type
  TForm1 = class(TForm)
    TimerUhr: TTimer;
    BT_On: TButton;
    Bt_Off: TButton;
    Label_H: TLabel;
    Label_M: TLabel;
    L_Clock: TLabel;
    Bt_H_Plus: TButton;
    Bt_H_Minus: TButton;
    Bt_M_Plus: TButton;
    Bt_M_Minus: TButton;
    Label3: TLabel;
    Label4: TLabel;
    BClose: TButton;
    P_Status: TPanel;
    Debug_Wecker: TLabel;
    MediaPlayer1: TMediaPlayer;
    TrayIcon1: TTrayIcon;
    BMinimieren: TButton;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Bearbeiten1: TMenuItem;
    Suchen1: TMenuItem;
    Fenster1: TMenuItem;
    ffnen1: TMenuItem;
    Speichern1: TMenuItem;
    Beenden1: TMenuItem;
    WeckZeitLschen1: TMenuItem;
    UhrzeitSuchen1: TMenuItem;
    Minimieren1: TMenuItem;
    Schließen1: TMenuItem;
    Einstellung1: TMenuItem;
    MusikDatei1: TMenuItem;
    RockNRollTrainAcDc1: TMenuItem;
    WeckerNormal1: TMenuItem;
    L_Sound: TLabel;
    procedure BCloseClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TimerUhrTimer(Sender: TObject);
    procedure BT_OnClick(Sender: TObject);
    procedure Bt_OffClick(Sender: TObject);
    procedure Bt_H_MinusClick(Sender: TObject);
    procedure Bt_H_PlusClick(Sender: TObject);
    procedure Bt_M_MinusClick(Sender: TObject);
    procedure Bt_M_PlusClick(Sender: TObject);
    procedure WeckerStellen;
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure FormDeactivate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure ApplicationEvents1Minimize(Sender: TObject);
    procedure TrayIcon1DblClick(Sender: TObject);
    procedure BMinimierenClick(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    procedure WeckZeitLschen1Click(Sender: TObject);
    procedure Minimieren1Click(Sender: TObject);
    procedure Schließen1Click(Sender: TObject);
    procedure Speichern1Click(Sender: TObject);
    procedure RockNRollTrainAcDc1Click(Sender: TObject);
    procedure WeckerNormal1Click(Sender: TObject);
    procedure SoundWechseln;
  Private

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Stunden, Minuten, WeckerAktiv: integer;
  WeckerZeit, StundenStr, MinutenStr: String;
  Aktiv: Boolean;
  MusikDat: string;

implementation

uses AddEntry;
{$R *.dfm}

procedure TForm1.WeckerNormal1Click(Sender: TObject);
begin
  MusikDat := 'Wecker.wav';
  SoundWechseln;
  L_Sound.Caption := MusikDat;
end;

procedure TForm1.SoundWechseln;
begin
  MediaPlayer1.Filename := (ExtractFilePath(ParamStr(0)) + MusikDat);
end;

procedure TForm1.WeckerStellen;
begin
  if (Stunden <= 9then
    StundenStr := '0' + IntToStr(Stunden)
  else
    StundenStr := IntToStr(Stunden);

  if (Minuten <= 9then
    MinutenStr := '0' + IntToStr(Minuten)
  else
    MinutenStr := IntToStr(Minuten);
  WeckerZeit := StundenStr + ':' + MinutenStr + ':' + '00';

  if (TimeToStr(Now) = WeckerZeit) then
  begin
    if (WeckerAktiv = 0then
    begin
      MediaPlayer1.Close;
      MediaPlayer1.Filename := (ExtractFilePath(ParamStr(0)) + MusikDat);
      MediaPlayer1.Open;
      MediaPlayer1.Notify := True;
      MediaPlayer1.Play;
      WeckerAktiv := WeckerAktiv + 1;
    end;
  end;

end;

procedure TForm1.WeckZeitLschen1Click(Sender: TObject);
begin
  Minuten := 0;
  Stunden := 0;
  Label_M.Caption := IntToStr(Minuten);
  Label_H.Caption := IntToStr(Stunden);
end;

// ------------------------------------------------------------------------------
procedure TForm1.Beenden1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Bt_H_MinusClick(Sender: TObject);
begin
  if Stunden = 0 then
    Stunden := 23
  else
    Stunden := Stunden - 1;
  Label_H.Caption := IntToStr(Stunden);
end;

// ------------------------------------------------------------------------------
procedure TForm1.Bt_H_PlusClick(Sender: TObject);
begin
  if Stunden = 23 then
    Stunden := 0
  else
    Stunden := Stunden + 1;
  Label_H.Caption := IntToStr(Stunden);
end;

// ------------------------------------------------------------------------------
procedure TForm1.Bt_M_MinusClick(Sender: TObject);
begin
  if Minuten = 0 then
    Minuten := 59
  else
    Minuten := Minuten - 1;
  Label_M.Caption := IntToStr(Minuten);
end;

// ------------------------------------------------------------------------------
procedure TForm1.Bt_M_PlusClick(Sender: TObject);
begin
  if Minuten = 59 then
    Minuten := 0
  else
    Minuten := Minuten + 1;
  Label_M.Caption := IntToStr(Minuten);
end;

// ------------------------------------------------------------------------------
procedure TForm1.Bt_OffClick(Sender: TObject);
begin
  P_Status.Color := clRed;
  P_Status.Caption := 'Ausgeschaltet';
  Aktiv := false;
  if MediaPlayer1.Notify then
  begin
    MediaPlayer1.Stop;
    MediaPlayer1.Notify := false;
    // Mediaplayer1.Close;
  end
end;

// ------------------------------------------------------------------------------
procedure TForm1.BT_OnClick(Sender: TObject);
begin
  WeckerStellen;
  P_Status.Color := clLime;
  P_Status.Caption := 'Eingeschaltet';
  Debug_Wecker.Caption := WeckerZeit;
  Aktiv := True;
end;

// ------------------------------------------------------------------------------
procedure TForm1.BCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TForm1.BMinimierenClick(Sender: TObject); // Minimieren Button
begin
  ShowWindow(Self.Handle, SW_HIDE);
  { Hide the window and set its state variable to wsMinimized. }
  Hide();
  WindowState := wsMinimized;
  // Form1.Visible:=true;
  { Show the animated tray icon and also a hint balloon. }
  TrayIcon1.Visible := True;
  TrayIcon1.Animate := True;
  TrayIcon1.ShowBalloonHint;
end;

// ------------------------------------------------------------------------------
procedure TForm1.FormActivate(Sender: TObject);
begin
  TrayIcon1.Visible := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  MyIcon: TIcon;

begin
  MusikDat := 'Wecker.wav';
  Stunden := 0;
  Minuten := 0;
  WeckerAktiv := 0;
  L_Clock.Caption := TimeToStr(Now);
  { Load the tray icons. }
  TrayIcon1.Icons := TImageList.Create(Self);
  MyIcon := TIcon.Create;
  MyIcon.LoadFromFile('icons/wecker.ico');
  TrayIcon1.Icon.Assign(MyIcon);
  TrayIcon1.Icons.AddIcon(MyIcon);

  MyIcon.LoadFromFile('icons/wecker.ico');
  TrayIcon1.Icons.AddIcon(MyIcon);
  MyIcon.LoadFromFile('icons/wecker.ico');
  TrayIcon1.Icons.AddIcon(MyIcon);
  MyIcon.LoadFromFile('icons/wecker.ico');
  TrayIcon1.Icons.AddIcon(MyIcon);

  { Set up a hint message and the animation interval. }
  TrayIcon1.Hint := 'Wecker';
  TrayIcon1.AnimateInterval := 200;

  { Set up a hint balloon. }
  TrayIcon1.BalloonTitle := 'Restoring the window.';
  TrayIcon1.BalloonHint :=
    'Double click the system tray icon to restore the window.';
  TrayIcon1.BalloonFlags := bfInfo;
end;

procedure TForm1.FormDeactivate(Sender: TObject);
begin
  TrayIcon1.Visible := false;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if MediaPlayer1.Notify = True then
  begin
    MediaPlayer1.Play;
  end
  else
  begin
    MediaPlayer1.Stop;
  end;
end;

procedure TForm1.Minimieren1Click(Sender: TObject);
begin
  ShowWindow(Self.Handle, SW_HIDE);
  { Hide the window and set its state variable to wsMinimized. }
  Hide();
  WindowState := wsMinimized;
  // Form1.Visible:=true;
  { Show the animated tray icon and also a hint balloon. }
  TrayIcon1.Visible := True;
  TrayIcon1.Animate := True;
  TrayIcon1.ShowBalloonHint;
end;

procedure TForm1.RockNRollTrainAcDc1Click(Sender: TObject);
begin
  MusikDat := 'RockNRollTrain.wav';
  SoundWechseln;
  L_Sound.Caption := MusikDat;
end;

procedure TForm1.Schließen1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Speichern1Click(Sender: TObject);
begin
  Add_Entry.ShowModal;
end;

// ------------------------------------------------------------------------------
procedure TForm1.TimerUhrTimer(Sender: TObject);
begin
  L_Clock.Caption := TimeToStr(Now);
  if Aktiv then
    WeckerStellen;

end;
// ------------------------------------------------------------------------------

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  { Hide the window and set its state variable to wsMinimized. }
  Hide();
  WindowState := wsMinimized;
  Form1.Visible := True;
  { Show the animated tray icon and also a hint balloon. }
  TrayIcon1.Visible := True;
  TrayIcon1.Animate := True;
  TrayIcon1.ShowBalloonHint;
end;

procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
  { Hide the tray icon and show the window,
    setting its state property to wsNormal. }

  TrayIcon1.Visible := false;
  Show();
  WindowState := wsNormal;
  Application.BringToFront();
end;

end.



Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 21.10.2010 um 15:57
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Fr 22.10.10 22:59 
hat keiner eine Idee?
Hab meinen Code nochmals überprüft, hab keinen Fehler gefunden, Theoretisch muss es funktionieren.
Jedoch läuft es einfach nicht. :(
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Sa 23.10.10 11:46 
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
Hab meinen Code nochmals überprüft, hab keinen Fehler gefunden, Theoretisch muss es funktionieren.
Jedoch läuft es einfach nicht. :(
Ich habe mir zwar nicht Deinen Sourcecode detailliert angesehen, aber mir fällt auf, daß Du die Soundzuweisungen in den Prozeduren Soundwechseln und Weckerstellen unterschiedlich programmiert hast.
Probiere es mal so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.SoundWechseln;
begin
  MediaPlayer1.Close;
  MediaPlayer1.Filename := (ExtractFilePath(ParamStr(0)) + MusikDat);
  MediaPlayer1.Open;
end;
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Do 28.10.10 23:27 
hat leider keine Änderung ergeben.
Nach dem der Wecker einmal eingeschaltet und man dann den Sound wechselt und wieder auf einschalten klickt, nach dem man auf ausschalten geklickt hat, wird nichts mehr wieder gegeben.
Leider...
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Fr 29.10.10 00:04 
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
hat leider keine Änderung ergeben.
Nach dem der Wecker einmal eingeschaltet und man dann den Sound wechselt und wieder auf einschalten klickt, nach dem man auf ausschalten geklickt hat, wird nichts mehr wieder gegeben.
Wenn es Dir nichts ausmacht, schicke mir mal Deine Dateien zu (zum Nachbauen hab ich nämlich keine Lust). Ich schau es mir dann einmal an.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 29.10.10 01:48 
- Nachträglich durch die Entwickler-Ecke gelöscht -