Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Terminkalender mit Listbox (https://www.delphipraxis.net/28001-terminkalender-mit-listbox.html)

kurzer_newbie 18. Aug 2004 13:34


Terminkalender mit Listbox
 
Hallo Leute

ich bin newbie und versuche gerade einkleines Prog zu schreiben.

In dem Prog gebe ich eine nachricht ein, und nach dem drücken des button erscheint es in der listbox.

nu soll der timer datum und uhrzeit vergleichen und wenn die mit der aktuellen Zeit gleich sind

soll eine Message mit der Nachricht aus der Listbox erscheinen.

Hier mal der Code:
Delphi-Quellcode:
unit calendar_1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    ListBox1: TListBox;
    Button1: TButton;
    MonthCalendar1: TMonthCalendar;
    DateTimePicker1: TDateTimePicker;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a : string;
t, d : string;


begin
t :=timetostr(datetimepicker1.Time);
d :=datetostr(monthcalendar1.Date);

a:=(edit1.Text);

listbox1.Items.Add(d+' '+t+' '+a);


end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

end;

end.
Ich hoffe es kann mir jemand helfen, weil

Problem 2

wenn ich das Programm beende sind die Termine wech, aber das kommt später.

Gruß
Kurzer

[edit=Admin]Dephi-Tags korrigiert. Mfg, Daniel[/edit]

fkerber 18. Aug 2004 13:40

Re: Terminkalender mit Listbox
 
Hi!

Bist du sicher, dass eine Listbox geeignet ist zum Speichern?
Um jetzt Datum und Zeit vergleichen zu können musst du ja den String zuerst wieder zerlegen, umwandeln und dann vergleichen.
Da gibt es doch bestimmt andere Möglichkeiten der Speicherung (Record?!)
Anzeigen kannst du es ja dann immer noch in einer Listbox.

Ciao Frederic

P.S. Die [dp ] sind für die Suche, die [delphi ] für Quellcode :wink:

KrasserChecker 18. Aug 2004 13:44

Re: Terminkalender mit Listbox
 
Hallo erstmal, probiert mal folgendes:

Zu Problem 1:
Das könnte in der der Timer-Methode stehen:

Delphi-Quellcode:
var i:Integer; d,t:String;
begin
  t :=timetostr(datetimepicker1.Time);
  d :=datetostr(monthcalendar1.Date);

  for i:= 0 to ListBox1.Items.Count-1 do begin
    if Pos(d,ListBox1.Items[i])=0 then Continue;
    if Pos(t,ListBox1.Items[i])=0 then Continue;
    ShowMessage(ListBox1.Items[i]);
  end;
end;
Zu Problem 2:
Ein Aufruf der Methoden "SaveToFile" bzw. "LoadFromFile" könnten da Linderung schaffen. :wall:
Z.B.:
Im "OnCreate"-Ereignis:
Delphi-Quellcode:
  ListBox1.Items.LoadFromFile('c:\test.txt');
Im "OnDestroy"-Ereignis:

Delphi-Quellcode:
  ListBox1.Items.SaveToFile('c:\test.txt');

kurzer_newbie 18. Aug 2004 13:47

Re: Terminkalender mit Listbox
 
HI

jo ich habe den verkehrten button benutzt. sorry

ich bin für jedes beispiel dankbar, es muß nur sekundengenau sein und
keine DB.

ich habe schon mit ini und xml probiert, nur bin ich zu blöd dazu, hatte gedacht das geht hiermit einfacher.

Gruß
Kurzer

kurzer_newbie 18. Aug 2004 14:23

Re: Terminkalender mit Listbox
 
He vielen Dank
ihr schreibt ja schneller als ich lesen kann.



Zitat:

Das könnte in der der Timer-Methode stehen:

Delphi-Quellcode:
var i:Integer; d,t:String;
begin
  t :=timetostr(datetimepicker1.Time);
  d :=datetostr(monthcalendar1.Date);

  for i:= 0 to ListBox1.Items.Count-1 do begin
    if Pos(d,ListBox1.Items[i])=0 then Continue;
    if Pos(t,ListBox1.Items[i])=0 then Continue;
    ShowMessage(ListBox1.Items[i]);
  end;
end;

Das funzt so nicht jetzt kommt jede sekunde die Message, und es steht tag, uhrzeit und nachricht,
ich wollte aber nur nachricht.

Gruß
Kurzer

KrasserChecker 18. Aug 2004 14:36

Re: Terminkalender mit Listbox
 
Du brauchst doch nur den angezeigten Eintrag wieder zu löschen. Allerdings sollte die Schleife dann abwärts laufen.
Delphi-Quellcode:
var i:Integer; d,t,s:String;
begin
  t :=timetostr(datetimepicker1.Time);
  d :=datetostr(monthcalendar1.Date);

  for i:= ListBox1.Items.Count-1 downto 0 do begin
    if Pos(d,ListBox1.Items[i])=0 then Continue;
    if Pos(t,ListBox1.Items[i])=0 then Continue;
    s:= ListBox1.Items[i];
    ListBox1.Items.Delete(i);  
    ShowMessage(s);
  end;
end;
Und wenn Du nur den Text haben willst muss Du halt den Text nach Datum & Uhrzeit nehmen:
Delphi-Quellcode:
  .
  .
  .
  s:= ListBox1.Items[i];
  s:= Copy(s,Length(d)+Length(t)+' ',Length(s));

kurzer_newbie 18. Aug 2004 15:04

Re: Terminkalender mit Listbox
 
Hi :gruebel:

Zitat:

Delphi-Quellcode:
s:= Copy(s,Length(d)+Length(t)+' ',Length(s));

ich bekomme hier ne Fehlermeldung: Inkompatible Typen bei ',Length(s)

Gruß
Kurzer

PS.: geht es denn auch anders, wenn ja wonach sollte ich suchen, oder wo gibts Beispiele

fkerber 18. Aug 2004 15:12

Re: Terminkalender mit Listbox
 
Hi!

Ich vermute so:

Delphi-Quellcode:
s:= Copy(s,Length(d)+Length(t)+2,Length(s)-Length(d)-Length(t)-2);
Ciao Frederic

KrasserChecker 18. Aug 2004 15:13

Re: Terminkalender mit Listbox
 
Zur Fehlermeldung:
Das kann nur ein Tippfehler sein. Überprüf doch nochmal die Parameter der "Copy"-Methode

Zu den anderen Möglichkeiten:
Etwas schöner:
records und arrays
Erheblich schöner (aber für Anfänger wohl etwas zu viel):
objekte, klassen & objektlisten

kurzer_newbie 18. Aug 2004 15:30

Re: Terminkalender mit Listbox
 
Jo Danke

es funzt fast, aber er lässt immer den letzten buchstaben weg.

und er machte es immer noch sofort.
er soll die message natürlich erst anzeigen wenn Tag und Uhrzeit mit der aktuellen Zeit über einstimmt.

Gruß
Kurzer


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz