Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ShowMessage mit Hilfe von Datum in ListView (https://www.delphipraxis.net/8423-showmessage-mit-hilfe-von-datum-listview.html)

Akut-Programming 4. Sep 2003 13:40


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:
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;
THX
Gruß,

Tpercon 4. Sep 2003 13:51

Re: ShowMessage mit Hilfe von Datum in ListView
 
Auf den ersten Blick solltest du
Delphi-Quellcode:
lv_eintraege.Items.Count
in
Delphi-Quellcode:
lv_eintraege.Items.Count - 1
ändern!

Und nochwas:
Du wirst in deinem Beispiel nie einen Dialog sehen!
Delphi-Quellcode:
(lv_eintraege.Items[i].Caption=DateToStr(now)) and (lv_eintraege.Items[i].Caption=TimeToStr(now))
Was steht bei dir in der Caption? Ein Datum, eine Uhrzeit oder beides?
Falls beides, dann wäre der Vergleich
Delphi-Quellcode:
lv_eintraege.Items[i].Caption=DateTimeToStr(now)
richtig.

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.

Akut-Programming 4. Sep 2003 14:10

Re: ShowMessage mit Hilfe von Datum in ListView
 
:roll: Jetzt bekomm ich aber auch keine Meldung angezeigt. Es passiert nichts!! :cry:

Tpercon 4. Sep 2003 14:12

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.

Yheeky 4. Sep 2003 14:15

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

Tpercon 4. Sep 2003 14:19

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.

Akut-Programming 4. Sep 2003 14:20

Re: ShowMessage mit Hilfe von Datum in ListView
 
Sorry, hatte erst nicht gesehen, das du noch editiert hast!!

Zitat:

Zitat von Tpercon
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.

Ne, so richtig kenn ich den Unterschied auch noch nicht, da XML für mich neu ist. Von dem einen bekomme ich zu verstehen, das caption die Spalte ist, vom anderen höre ich, das es SubItem ist.

Zitat:

Zitat von Tpercon
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.

Deshalb wollt ich ja eigentlich auch die Uhrzeit, die sich in einer anderen Spalte befindet, mit der "jetzigen" vergleichen. Wenn Datum und Uhrzeit nicht gleich sind, sollte ich doch auch nich zich Meldungen bekommen, oder?

Akut-Programming 4. Sep 2003 14:21

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.

Akut-Programming 4. Sep 2003 14:26

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!

Tpercon 4. Sep 2003 14:26

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:
Spalte1|Spalte2|Spalte3
Datum|Zeit|Termin
Den Inhalt von Spalte1 bekommst du über die Caption, den Inhalt von Spalte 2 über SubItems[0], den inahlt von Spalte3 über SubItems[1].
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 23:49 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz