![]() |
ShowMessage mit Hilfe von Datum in ListView
Hi Leudz!
Ich ma widder... :oops: Ich wollt es nun so machen (bin dabei einen Terminplaner zu erstellen) das mein Programm über einen Timer meine Spalte "Datum" in Schleife überprüft ob ein Datum = dem des aktuellen Tages ist. Danach soll nach der Uhrzeit überprüft werden, soweit bin ich aber noch nicht. Ich hab es so gemacht, das der Timer erst dann aktiv ist, wenn mindestens 1 Eintrag in der ListView steht. Das funzt auch, nur kommt er danach in ne Zugriffsverletzung, die in ner Schleife endet bzw. immer wieder aufgerufen wird. Ich weiß nicht, ob ich auf die falsche Spalte oder zeile zugreife. Hier ist mal der Code von OnTimer2
Delphi-Quellcode:
THX
procedure Tfrm_terminplaner_main.Timer2Timer(Sender: TObject);
var i: integer; begin for i:=0 to lv_eintraege.Items.Count do begin if (lv_eintraege.Items[i].Caption=DateToStr(now)) and (lv_eintraege.Items[i].Caption=TimeToStr(now)) then begin ShowMessage('Ihr Termin ('+lv_eintraege.Items[i].Caption+') beginnt!'); end; end; end; Gruß, |
Re: ShowMessage mit Hilfe von Datum in ListView
Auf den ersten Blick solltest du
Delphi-Quellcode:
in
lv_eintraege.Items.Count
Delphi-Quellcode:
ändern!
lv_eintraege.Items.Count - 1
Und nochwas: Du wirst in deinem Beispiel nie einen Dialog sehen!
Delphi-Quellcode:
Was steht bei dir in der Caption? Ein Datum, eine Uhrzeit oder beides?
(lv_eintraege.Items[i].Caption=DateToStr(now)) and (lv_eintraege.Items[i].Caption=TimeToStr(now))
Falls beides, dann wäre der Vergleich
Delphi-Quellcode:
richtig.
lv_eintraege.Items[i].Caption=DateTimeToStr(now)
Wie ich das sehe, hast du aber noch nciht so ganz den Unterschied zwischen Caption, SubItems[0], SubItems[1], ... verstanden? Sogar bei der Meldung verweist du darauf. Jetzt hast du aber das Problem, dass du dir irgendwie noch merken mußt, bei welchem Item er schonmal nen Dialog angezeigt hast. Sonst bekommst du an einem Tag "100000mal" (bzw. bei jedem OnTimer Ereignis) den Dialog zu Gesicht. |
Re: ShowMessage mit Hilfe von Datum in ListView
:roll: Jetzt bekomm ich aber auch keine Meldung angezeigt. Es passiert nichts!! :cry:
|
Re: ShowMessage mit Hilfe von Datum in ListView
Deshalb lies dir nochmal meinen Beitrag (untere Hälfte!) von eben durch.
Sag mir mal an Hand eines Beispieles, was du in welcher Spalte stehen hast. |
Re: ShowMessage mit Hilfe von Datum in ListView
In welchem Format hast du es denn in der ListView stehen? Soweit ich weiss gibt "Now" folgendes Format aus:
Datum: dd.mm.yyyy Zeit: hh:mm:ss Wenn du also nur "15:14" in der ListView stehen hast, ist es klar, dass nichts kommt :) Gruß Yheeky |
Re: ShowMessage mit Hilfe von Datum in ListView
@ Yheeky: Die Umwandlung des string Wertes zum Datum wäre echt besser, nur sein Problem scheint wohl viel mehr die Belegung der Spalten zu sein. Im Caption stehen bei ihm: Datum, Uhrzeit und der Termin! Also irgendwas läuft da schief, daher soll er mal den Inhalt der Spalten posten.
|
Re: ShowMessage mit Hilfe von Datum in ListView
Sorry, hatte erst nicht gesehen, das du noch editiert hast!!
Zitat:
Zitat:
|
Re: ShowMessage mit Hilfe von Datum in ListView
@Yheeky: Ich habe das Datum im Format dd.mm.jjjj und die Uhrzeit im Format ss:mm:ss. Also angezeigt müsst ich sie bekommen.
|
Re: ShowMessage mit Hilfe von Datum in ListView
Liste der Anhänge anzeigen (Anzahl: 1)
Hier is ma n Screenshot, da könnt ihr euch den Aufbau ma angucken!
|
Re: ShowMessage mit Hilfe von Datum in ListView
Warum du nach XML fragst verstehe ich jetzt zwar in diesem Zusammenhang nicht, aber na gut.
Ich gehe jetzt mal davon aus, dass dein ListView so aufgebaut ist:
Code:
Den Inhalt von Spalte1 bekommst du über die Caption, den Inhalt von Spalte 2 über SubItems[0], den inahlt von Spalte3 über SubItems[1].
Spalte1|Spalte2|Spalte3
Datum|Zeit|Termin Somit sollte dein obiger Code wie folgt abgewandelt funktionieren:
Delphi-Quellcode:
procedure Tfrm_terminplaner_main.Timer2Timer(Sender: TObject);
var i: integer; begin for i:=0 to lv_eintraege.Items.Count - 1 do begin if (StrtoDate(lv_eintraege.Items[i].SubItems[1])=now) and (StrtoTime(lv_eintraege.Items[i].SubItems[2])=now) then begin ShowMessage('Ihr Termin ('+lv_eintraege.Items[i].SubItems[0]+') beginnt!'); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz