AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erinnerungsfunktion

Ein Thema von marc.beeh · begonnen am 24. Jan 2004 · letzter Beitrag vom 25. Jan 2004
Antwort Antwort
Benutzerbild von marc.beeh
marc.beeh

Registriert seit: 16. Dez 2003
Ort: Rodgau
47 Beiträge
 
Delphi 7 Enterprise
 
#1

Erinnerungsfunktion

  Alt 24. Jan 2004, 19:13
Hallo,
ich möchte in ein Programm eine kleine "Erinnerungsfunktion" integrieren. Das bedeutet, man gibt eine Uhrzeit und einen Termin-Namen ein und zu der eingegebenen Zeit erscheint dann zum Beispiel ein Info-Fenster. Ich weiß, das ist eine einfaches Problem, aber ich finde da einfach nicht den richtigen Ansatz....
  Mit Zitat antworten Zitat
Anänger
(Gast)

n/a Beiträge
 
#2

Re: Erinnerungsfunktion

  Alt 24. Jan 2004, 20:06
Ich bin zwar Anfänger, aber ich probiers mal

Ich habe dir erstmal nur die Schritte erklärt, um dir es nicht zu einfach zu machen.
Wenn du dabei noch Hilfe brauchst gehe ich natürlich ins Detai.



Ich nehme mal an, du willst mehrere Termine eingeben können und sie sollen in einer Datenbank gespeichert werden.

Also solltest du erstmal die Datenbank herrichten und sie im Programm mit dem Table anmelden.
Daraufhin währe es nett, wenn du die Termine mit Hilfe von einem DBMemo alle Termine anzeigen lässt.

Nun kannst du die Eingabe der Termine programmieren:
Entweder mit hilfe von Eingabeobjekten wie Edit, Combobox etc. und einigen Anweisungen
Oder, was einfacher währe es einfach mit DB-Objekten zu machen.

Du musst allerdings darauf achten, dass die Datum und Uhrzeiteingabe ín dem richtigen Format (standartmäßig dd,mm,jjjj) eingegeben wird.

Dann musst du mit dem Timer am besten mit dem Interval 1000 prüfen, ob das Datum und die Uhrzeit korrekt ist. Wenn das der fall ist kann sich ja ein Shortmessage mit dem Termininhalt öffnen.

Was ich bis jetzt auch nur von anderen Programmen gesehen habe ist, dass sie das Programm im Hintegrund weiter laufen lassen haben, wodurch dich das Programm auch erinnert, wenn es scheinbar gar nicht offen war.
So etwas währe doch auch ganz nett.
  Mit Zitat antworten Zitat
Benutzerbild von marc.beeh
marc.beeh

Registriert seit: 16. Dez 2003
Ort: Rodgau
47 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Erinnerungsfunktion

  Alt 24. Jan 2004, 22:34
Danke erstmal
Also ich bin ein absoluter Einsteiger und habe noch nie etwas mit der BDE gemacht. (Was nicht heißt, das mich eine Problemlösung, die darauf zurückgreift nicht irgendwie reizen würde.)
Aber ich muss jetzt einfach mal ganz dumm fragen: Wie komplizier ist das mit der Datenbank? Wenns net allzu kompliziert ist, wie geht das genau?
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#4

Re: Erinnerungsfunktion

  Alt 25. Jan 2004, 01:32
Eingabe aus Editfeld in Zeitangabe umwandeln:
Delphi-Quellcode:
var termin: TDateTime;

termin:=strtotime(edit1.text);
Dann könntest du mit einem Timer arbeiten, der jede Sekunde prüft:

Timer1.OnTimer:
Delphi-Quellcode:
var jetzt: TDateTime;

jetzt:=strtotime(timetostr(now));
if jetzt>=termin then showmessage('Erinnerung');
Vom Prinzip zumindest , musst mal in die Hilfe schauen, habs nicht überprüft
  Mit Zitat antworten Zitat
Anänger
(Gast)

n/a Beiträge
 
#5

Re: Erinnerungsfunktion

  Alt 25. Jan 2004, 21:05
Woführ DBE steht, weiß ich leider gar nicht,(Borland Database Engine?)
aber ich denke du meintest allgemein Datenbanken.

Das wichtigste ist in diesem fall ein Table, welches direkt mit der Datenbankdatei verknüpft ist/wird und ich dir in dieser Message erklären werde.

Es gibt zwei möglichkeiten eine Datenbank zu erstellen:
Einmal mit dem Programm 'Datenbankoberfläche' welches beim Delphi dabei ist, Oder sie zu erstellen, wenn das Programm gestartet wurde.

Ich gehe jetzt nur darauf ein, wie man es zur Laufzeit macht, da dieses oft geeigneter und viel besser zu erklären ist.

Hier einfach der SourceCode mit einigen Hinweisen, wie man eine Datenbank generiert und aktiviert:

Delphi-Quellcode:
with Table1 do {Zwischen den folgenden begin und end wird nur mit dem
                Table gearbeitet.}

begin
  Active := False; { Hier wird die Table- Komponente deaktiviert }

  { Zuerst den Tabellentyp beschreiben und die Tabelle benennen }
  DatabaseName := 'C:\';{Der Ort, oder auch Pfad genannt, in dem
                             sich die Datenbank befinden soll}

  TableType := ttParadox; {Die Art der Tabelle}
  TableName := 'Datenbank';{Der Name, den die Datenbank erhalten soll}

  { Da das Table ist wie der Name schon sagt eine Tabelle
    Hier erstellst du dir die Spalten}

  with FieldDefs do
  begin
    Clear;
    Add('Feldname', ftInteger{der Typ des Inhaltes}, 0, True);
    Add('Feldname2', ftString, 30, False);
  end;

  { Nun ist alles definiert. Die Tabelle kann erzeugt werden. }
  CreateTable;

  {Als letztes muss die Tabelle nurnoch geöffnet werden}
  Active:=True;
end;
Du kannst denSourceCode direkt zum Test, am besten in eine Leere Anwendung mit einem Table (um nichts zu versauen).kopieren.
Achte nur darauf, wo du sie speicherst!(DatabaseName)

Außerdem sollte in dem OnClose-Ereignis der Form1 unbedingt das Table wieder deaktiviert werden!(Table1.Active:=False

Später, wenn ich dir noch die DB-Objekte erklärt habekannst du einzelne Anweisungen solltest du einfach ausprobieren, wie der Computer reagiert, wenn du z.B. Statt True, False eingibst.
  Mit Zitat antworten Zitat
Benutzerbild von marc.beeh
marc.beeh

Registriert seit: 16. Dez 2003
Ort: Rodgau
47 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Erinnerungsfunktion

  Alt 25. Jan 2004, 21:28
Danke dir. Ich habe mich jetzt aber entscheiden, doch erstmal eine etwas einfachere Lösung zu wählen.
Ich denke es ist sinvoller alles Schrittweise zu machen, als gleich noch mit einer Datenbank anzufangen.
Aber ich werde sicherlich später auf diesen Lösungsansatz zurückkommen.
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#7

Re: Erinnerungsfunktion

  Alt 25. Jan 2004, 21:43
Hallo,
ich denke auch, dass man sich zum Anfang nicht gleich mit einer Db kloppen sollte.
Aber das ist eine gute Möglichkeit die Arbeit mit (sequentiellen) Dateien zu üben, in denen
du deine Erinnerungen, als ADT z.B., speicherst. Auch könntest du die Erinnerung als ein neues Formular anzeigen, und dich dabei gleich mit dem Verwenden eigener Units vertraut machen.

Das alles sind Aspekte zu denen du hier im Forum genug Fragen und Antworten findest, aber ansonste eigentlich auch überall anders im Netz oder der Delphi-Hilfe.

Viel Erfolg

Czapie.
Was man zu verstehen gelernt hat, fürchtet man nicht mehr.
(Marie Curie)
http://www.cafes-in-berlin.com
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Erinnerungsfunktion

  Alt 25. Jan 2004, 22:03
Hi Marc.

Also es wäre schon ein krasser Schritt für dein Vorhaben eine DB zu benutzen, aber die BDE???
Du müsstest das Ding auf jedem Rechner installieren, auf dem dein Tool laufen soll.

Ich schlage die folgenden Weg vor:

1. Speichere deine Einträge in einer INI ab ( Hier im Forum suchenINI ).
Jede Erinnerung eine Section.

2. Sauge dir diese Unit.
(Du musst in der Unit "TaskSched" noch Variants der Uses-Clause hinzufügen:
Delphi-Quellcode:
Uses MsTask,
  Classes,
  SysUtils,
  Variants;
)

Damit hast du Zugriff auf den Windows-Taskscheduler.
Die beiliegende Demo erklärt mit relativ wenig Code wie man Tasks erstellt, ändert, löscht, ...

3. Suche mal , wie man herausfindet ob ein Programm schon einmal läuft ( z.B. Toms' Linksammung) und wie du Parameter verwenden kannst, die an dein Programm übergeben werden ( Hier im Forum suchenparamstr )
Dadurch kannst du Tasks erstellen, die zur angegebenen Zeit dein Programm starten und ihm den Erinnerungstext als Parameter übergeben.
Sie sollten irgendwie eindeutig zu deiner Anwendung gehören z.B.: Name ist 'Marcs_Reminder_'+ fortlaufende Nummer + ' - ' + erste paar Zeichen der Meldung.
Dein Programm soll jetzt prüfen ob es schon läuft, wenn ja braucht es nur den Errinerungstext zeigen, wenn nicht kannst du es ja starten und in die TNA packen (wie das geht steht auch in der Linksammlung).


Ich hoffe ich habe dich jetzt nicht überladen, aber wenn du hier in der DP und auf den Links suchst wirst du schon alle Infos zusammenbekommen.
Den Tasksched. empfehle ich dir, weil du damit einfach Meldungen relativ zur Systemzeit bringen kannst auch wenn dein Programm nicht gestartet wurde.

Versuche möglichst viel alleine zu schreiben, aber bevor du eine Gehirnerschütterung bekommst ( ) -> Es gibt ja noch die DP.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.
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