Autor Beitrag
inspire
Hält's aus hier
Beiträge: 9

Windoof XP mit Vista-Style

BeitragVerfasst: Mi 26.12.07 14:28 
Hey,
ich habe ein Countdownprogramm geschrieben, wobei Labels auf einem Panel die Stunden/Minuten/Sekunden/Millisekunden anzeigen.
Das Fenster wird an den Bildschirm angepasst, das Panel reicht dann über den ganzen Bildschirm. In der Procedure TForm1.FormResize werden dann die Labels auf dem Bildschirm zentriert.
Doch nach ein paar Sekunden werden oben links auf dem Panel Zahlen angezeigt (immer eine neue auf der alten), die ich nicht deuten kann. Doch dort oben liegt kein Panel. Da die Zahlen auch mehrere Hundert groß sind, vermute ich, dass es Zahlen vom Millisekundenpanel sind. Doch das Panel liegt in der Mitte des Bildschirms und läuft dort einwandfrei.

Wie kann es nun sein, dass diese Zahlen irgendwann oben links auf dem Bildschirm erscheinen? Kann ich das mit einem einfachen Attribut des Panels/Labels deaktivieren?

Ich weiß, das ist eine komplizierte Frage und ich will euch nicht den ganzen Programmcode vor die Füße werfen. Ich hoffe, ich habe mich klar ausgedrückt. Wenn nicht, fragt gerne ;)


Vielen Dank

inspire
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mi 26.12.07 15:36 
Zeig mal den relevanten Code.
inspire Threadstarter
Hält's aus hier
Beiträge: 9

Windoof XP mit Vista-Style

BeitragVerfasst: Mi 26.12.07 23:06 
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:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, MMSystem;




......

var
  Form1: TForm1;
  mmResult: Integer;


implementation

{$R *.dfm}


procedure TimeCallBack(TimerID, Msg: Uint; dwUser, dw1, dw2: DWORD); pascal;
begin
  Form1.Label2.Caption:=IntToStr(StrToInt(Form1.Label2.Caption)-1);
  if Form1.Label2.Caption='0' then Form1.nilms;
end;


procedure TForm1.nilms;
begin
  if Label1.Caption='0' then Form1.nils;
  Label1.Caption:=inttostr(strtoint(Label1.Caption)-1);
  Label2.Caption:='1000';
end;


procedure TForm1.nils;
begin
  if Label4.Caption='0' then Form1.nilmin;
  Label4.Caption:=inttostr(strtoint(Label4.Caption)-1);
  Label1.Caption:='60';
end;


procedure TForm1.nilmin;
begin
  if (Label5.Caption='0') then
  begin
    TimeKillEvent(mmResult);

    Label1.Caption:='0';
    Label2.Caption:='0';
    Label4.Caption:='0';
    Label5.Caption:='0';
  end
  else
  begin
    Label5.Caption:=inttostr(strtoint(Label5.Caption)-1);
    Label4.Caption:='60';
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  mmResult := TimeSetEvent(1, 0, @TimeCallBack, 0, TIME_PERIODIC);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Caption:='0';
  Label2.Caption:='0';
  Label4.Caption:='0';
  Label5.Caption:='0';
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  Panel1.Height:=Form1.Height;
  Panel1.Width:=Form1.Width;



  Label1.Top:=round(Panel1.Height/2)-175;
  Label1.Left:=round(Panel1.Width/2)+130;

  Label2.Top:=round(Panel1.Height/2)-108;
  Label2.Left:=round(Panel1.Width/2)+430;

  Label4.Top:=round(Panel1.Height/2)-130;
  Label4.Left:=round(Panel1.Width/2)-250;

  Label5.Top:=round(Panel1.Height/2)-130;
  Label5.Left:=round(Panel1.Width/2)-550;

  doppelpunkt1.Top:=round(Panel1.Height/2)-110;
  doppelpunkt1.Left:=round(Panel1.Width/2)+350;

  doppelpunkt2.Top:=round(Panel1.Height/2)-95;
  doppelpunkt2.Left:=round(Panel1.Width/2)-100;

  doppelpunkt3.Top:=round(Panel1.Height/2)-95;
  doppelpunkt3.Left:=round(Panel1.Width/2)-400;



  stunden.Top:=round(Panel1.Height/2)-150;
  stunden.Left:=round(Panel1.Width/2)-540;

  minuten.Top:=round(Panel1.Height/2)-150;
  minuten.Left:=round(Panel1.Width/2)-280;

  sekunden.Top:=round(Panel1.Height/2)-150;
  sekunden.Left:=round(Panel1.Width/2)+80;

  millisekunden.Top:=round(Panel1.Height/2)-150;
  millisekunden.Left:=round(Panel1.Width/2)+380;
end;


Form1.WindowState ist übrigens wsMaximized.
Form1.BorderStyle ist bsNone.
Einloggen, um Attachments anzusehen!
DrRzf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Do 27.12.07 03:42 
Hab das grad mal angetestet.
An dieser stelle ist kein Label wie du sagtest.
Setzt du Borderstyle auf bs Single und machst das Fenster kleiner wie den Desktop, zeigt er diese Buchstaben sogar
auf dem Desktop ganz links oben in der ecke (ausserhalb der Form)
Solltest du während der Countdown läuft, das Fenster verschieben, kackt das Programm sogar ab.
Ich denk mal dass die sehr häufige aktualisierung des MS Labels etwas überfordert ist, und es dadurch zu diesm phänomen kommt.
Versuch mal die ms anzeige nur im 0,1 sekunden Takt zu aktualisieren.

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
inspire Threadstarter
Hält's aus hier
Beiträge: 9

Windoof XP mit Vista-Style

BeitragVerfasst: Do 27.12.07 17:25 
Vielen dank für den Tipp, funktioniert wirklich besser. Selbst mit 10 ms hab ich keine Probleme mehr...

inspire
DrRzf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Do 27.12.07 20:21 
Noch nachträglich ne kleine anmerkung.
Wenn man die Fenstergrösse verändert, stimmt die aufteilung der Zahlen nicht mehr, vermutlich ist das dann auch bei anderer auflösung so. Die ms ragen dann rechts über den Formularrand hinaus.

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
inspire Threadstarter
Hält's aus hier
Beiträge: 9

Windoof XP mit Vista-Style

BeitragVerfasst: Do 27.12.07 22:09 
Oh ja stimmt, bei kleineren Auflösungen ab 1024x768 stört es. Nochmals danke, hab ich mit zwei Buttons zum Anpassen der Größe/des Abstandes behoben ;)