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



BeitragVerfasst: Do 29.10.09 01:26 
Hallo Leute,

ich habe eine Statusbar unten in meinem Formular. Dort sollen die aktive offene Datei, das Datum und die Uhrzeit dargestellt werden.

1. Frage: Die Uhrzeit ändert sich, deshalb muss das Formular aktualisiert werden mit einem Ereignis. Welches oder besser welche Alternative kennt ihr, dass sich immer das Datum unten bei Minutenwechseln ändert?

2. Frage: Die ganze Geschichte kann ich nicht realisieren, weil es einen Typenkonflikt gibt.

Bsp.:

StatusBar1.Panels.Items[0]:='bla';

Funktioniert nicht, weil ich versuche mit einem String eine TStatusPanel zu füllen. Wie kriege ich das nun rein?
Bei ListBoxen ist das ähnlich, da hatte ich erst

var item:TListBox;

geschrieben gehabt und konnte irgendwie zuweisen(ist eine ganze Weile her).

mfg. IronBull
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Do 29.10.09 02:09 
Du kannst Application.OnIdle nutzen (ist ein event), aber das kommt ziemlich oft rein, öfters als Du das brauchst für eine Uhr.
Du kannst auch einen timer nehmen und Dir jede Sekunde ein Event werfen und die aktuelle Uhrzeit dann reinsetzen.

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 29.10.09 02:34 
Nunja, du versuchst ja schließlich auch dem OBJEKT einen String zuzuweisen, was natürlich nicht funktionieren kann.

user profile iconIronBull hat folgendes geschrieben Zum zitierten Posting springen:

StatusBar1.Panels.Items[0]:='bla';


Anstattdessen das:

ausblenden Delphi-Quelltext
1:
StatusBar1.Panels.Items[0].Text:= 'bla';					

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
Apuch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 27

Kubuntu 9.04, Win 2000
Delphi 7
BeitragVerfasst: Do 29.10.09 02:54 
user profile iconIronBull hat folgendes geschrieben:
1. Frage: Die Uhrzeit ändert sich, deshalb muss das Formular aktualisiert werden mit einem Ereignis. Welches oder besser welche Alternative kennt ihr, dass sich immer das Datum unten bei Minutenwechseln ändert?


Ein Timer-Event ist das einfachste (TTimer unter System in Delphi7). Wenn es wirklich nur aller Minuten sein soll, dann ist der rechenzeitliche Aufwand nahe Null.

MfG

Moderiert von user profile iconNarses: Zitat repariert.

_________________
DasLebenIstZuKurzFürWhitespaces!
IronBull Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 05.11.09 13:18 
Vielen Dank für die Antworten!
Hat geholfen :D
IronBull Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 08.11.09 19:40 
Ok funktioniert bisher alles, außer das Datum spinnt ein wenig. Mein System zeigt mir das korrekte Datum und die Uhrzeit an. Nur wird beim Datum in Delphi angezeigt: 30.12.1899. Habe bei google geschaut, aber finde nichts bzw. bin nicht in der Lage nach dem Stichwort zu suchen

lg. ironbull
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.11.09 20:11 
Dann ist die Datumsvariable nicht initialisiert. Wenn du das aktuelle Datum (Date) nehmen würdest, würde das auch klappen. Aber wenn du den Quelltext geheim halten möchtest, kann da auch niemand etwas genaueres dazu sagen...

Bzw. was meinst du mit "in Delphi"?!? Drück dich doch einmal bitte etwas deutlicher aus...
IronBull Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 08.11.09 20:56 
Entschuldigung, den Code hatte ich vergessen. Ich dachte das ist so eine Standardantwort :D
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Timer1Timer(Sender: TObject);
var Zeit:TTime;
begin
Zeit:=GetTime();
StatusBar1.Panels.Items[2].Text:='Uhrzeit: '+TimeToStr(Zeit);
end;

procedure TForm1.FormCreate(Sender: TObject);
var Datum:TDate;
begin
Timer1.Enabled:=true;
StatusBar1.Panels.Items[1].Text:='Datum: '+ DateToStr(Datum);
end;


Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.11.09 20:59 
Tja, da habe ich die Antwort ja schon gegeben...
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dann ist die Datumsvariable nicht initialisiert.
Vergleich mal die beiden Quelltexte für Zeit und Datum...

Zudem: Was macht GetTime und wozu die zusätzlichen Variablen? Nimm doch z.B. Date bzw. now direkt.
IronBull Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 08.11.09 21:05 
Hehe ich wusste das das mit der "zusätzlichen Variable" kommen wird :D
Ich habe schon gesehen, mist. Danke für den Hinweis.
Hier nochmal für die die später irgendwann bei Google danach suchen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels.Items[2].Text:='Uhrzeit: '+TimeToStr(GetTime());
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=true;
StatusBar1.Panels.Items[1].Text:='Datum: '+ DateToStr(Date);
end;


Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.11.09 21:12 
user profile iconIronBull hat folgendes geschrieben Zum zitierten Posting springen:
Hehe ich wusste das das mit der "zusätzlichen Variable" kommen wird :D
Wobei, um das vielleicht noch klarzustellen, das nicht so gemeint war, dass zusätzliche Variablen grundsätzlich schlecht sind. Das kann durchaus die Übersicht erhöhen.

Zwei Bedingungen müssen dafür aber erfüllt sein, damit solche Variablen sinnvoll ist:
Erstens sollte eine Variable nicht einfach eine andere ersetzen (also statt Date einfach Datum mit dem selben Inhalt). Heißt: es muss auch eine Vereinfachung da sein, z.B. das Ergebnis einer Berechnung in der Variable statt diese Berechnung direkt irgendwo einzusetzen.
Zweitens sollten die Variablen gut bezeichnet sein. Also z.B. CurrentDate oder sowas und nicht einfach Datum.