Delphi-PRAXiS

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/)
-   -   Kalender? (https://www.delphipraxis.net/148543-kalender.html)

Sanguis 3. Mär 2010 23:42


Kalender?
 
Hallo,

ich möchte einen Kalender einbauen und per drag&drop verschiedene Events einpflegen. Kurz gefragt - wie mach ich das? *g*
Ich hab noch nie mit ner Kalender Componente gearbeited und noch nie mit drag&drop...

Wäre klaasse, wenn man mir schnell hilft.

Gruß,
Andreas

s.h.a.r.k 3. Mär 2010 23:56

Re: Kalender?
 
Mit "schnell" helfen wird es da nicht getan sein :zwinker:

Welche Komponente willst denn nehmen? Die gibts wohl wie Sand am Meer :mrgreen: Such erst mal eine, die passen könnte und dann teste mal, wie du da was einfügen kannst, in so fern diese Komponente das kann.

Kleiner Tipp: TMS hat sowas

Sanguis 4. Mär 2010 00:35

Re: Kalender?
 
Hallo,

danke erstmal für die Hilfe :)

Den TMS Planer hab ich schon probiert aber ich finde nix, zum einzelne Tage zu markieren.
Was ich nutze, ist mir egal. Das Ergebnis muss stiimmen *g*

Naja, ich geh erstmal schlafen.

Gute Nacht allerseits,
Andreas

gmc616 4. Mär 2010 03:19

Re: Kalender?
 
Kalender ...
Zitat:

Zitat von s.h.a.r.k
Die gibts wohl wie Sand am Meer :mrgreen:

Das sind wohl eher Steine, um nicht zu sagen Felsen.

Ich klinke mich mal in die Frage ein, weil ich auch schon seit längerem, mehr oder weniger intensiv, nach einer vernünftigen Kalender-Komponente umschaue und noch keine gefunden haben.

Den TMSPlanner kenne ich. Der sieht gut aus, ist aber m.M.n. Mist !
Sorry Sanguis, aber bis zum Drag&Drop bin ich garnicht gekommen, da der TMSPlanner bei mir von vorn her rein nicht so funktioniert hat, wie ich das von einer Kalender-Komponente erwarte.

Ich erwarte von einem "Planner" (dt. "Planer" oder auch "Terminkalender") das er z.B. in der Monatsansicht die Jahreszahl berücksichtigt. Machte der TMSPlanner damals (2..3 Jahre her) einfach nicht.
Und es gab/bibt ne ganze Menge mehr wo man sich das TerminPlaner-Entwickler mit dem TMSPlanner an den Kopf fasst. :wall:
Vtl. kann das ja aktuelle TMSPlanner mittler weile. Rückinfo erwünscht!

Das ist das JvTimeFrameWork von Jedi's schon weiter, sieht aber zugegeeben scheiße aus!


Hai s.h.a.r.k,
Welche Terminkalender-Komponenten kennst du noch? Evtl. auch solche die Serientermine und/oder Gruppentermine unterstützen? Evtl. welche mit DB-Anbindung?

Sorry, ist nicht böse gemeint, aber wenn ich TMSSoftware lesen, sträuben sich mir die Nackenhaare, denn ich habe noch nichts von TMS gesehen, was die Investition in diese Software lohnen würde!

... aber bevor ich vom Thema abkomme ...

Gruß
gmc

olaf 4. Mär 2010 08:40

Re: Kalender?
 
Hallo,

ich arbeite seit einem Jahr mit TMS und habe ALLE genannten Kalender-Probleme damit gelöst. Ich weiß nicht womit Ihr gearbeitet habt oder wie gut Ihr euch mit Delphi auskennt.
Man muß sich natürlich mit dem Komponenten beschäftigen, einfach nur im OI klicken und fertig geht nicht, da es auch eine Vielzahl von Einstellungsmöglichkeiten gibt und vieles muß per Code gelöst werden. Aber dann sind die Komponenten und ich meine alle von TMS einfach super, vorallem das Grid mit HTML-Unterstüzung.
Wenn Ihr die Teile gekauft habt, bekommt ihr auch den vollen Support, und der ist Superkasse. Probleme werden meist inerhalb von 1-5 Stunden gelöst, das habe ich bisher noch nicht erlebt und ich arbeite mit Delphi schon seit Version 4.

mfg
Olaf

Sherlock 4. Mär 2010 09:01

Re: Kalender?
 
Es gibt gerade für den Planner von TMS eine Fülle von Beispielen:
http://www.tmssoftware.com/site/planner.asp
Dort mal gaaaanz runter scrollen. Da findet sich für alles eine Lösung.

Sherlock

Sanguis 4. Mär 2010 15:41

Re: Kalender?
 
Hallo,

der TMS Planner zeigt die Jahreszahl an. Aber ich schaff es einfach nicht, verschiedene Tage unterschiedlich zu markieren. Das es geht, seh ich in den Beispielen. Aber das "wie" leider nicht...
Kann mir da wer helfen?

Gruß,
Andreas

Sherlock 4. Mär 2010 15:46

Re: Kalender?
 
Leider nutze ich selber den Planner nicht. Aber der "TMS Developers Guide" sieht recht detailliert aus. Da muss einfach drinstehen was Du brauchst.

Sherlock

Sanguis 4. Mär 2010 16:26

Re: Kalender?
 
Ich such schon lange, aber leider finde ich einfach nix. Muss man dafür schon Kunde sein?

Sanguis 4. Mär 2010 17:03

Re: Kalender?
 
Ok, mein Fehler. Ich hatte die Componente bei torry runtergeladen. Jetzt noch mal neu, direkt von TMS. Jetzt hab ich mehr Componenten und Möglichkeiten. Allerdings sieht es nun eher komplizierter aus... ich blicke da nicht durch *sfz*

Bebe 4. Mär 2010 17:24

Re: Kalender?
 
Hallo erstmal,

gleich eine Frage. Meinst du eigentlich eine Kalender Komponente, also "nur" eine Monatskalender, wie von TMS der TPlannerCalendar oder meinst du eher ein echten Planer oder Scheduler, wo die Event auf einen Zeitstrahl dargestellt werden?

Bei der TPlannerCalender Komponente kannst du z. B. mit ...

Delphi-Quellcode:
   with PlannerCalendar1.Events.Add do
   begin
     Date := EncodeDate(2010, 03, 22);
     Hint := 'Meeting 1';
     Color := clRed;
     Shape := evsRectangle;
   end;
... Events hinzufügen.

Gruß
Matze

Sanguis 4. Mär 2010 17:32

Re: Kalender?
 
Guten Abend,

danke, genau das hab ich gesucht :)

Sieht gut aus, jetzt muss ich das nur noch per Drag&Drop hinbekommen *g*

Gruß und Dank,
Andreas

Sanguis 4. Mär 2010 18:02

Re: Kalender?
 
So, den Drag hab ich hinbekommen. Nur beim Drop bekomme ich das ausgewählte Datum nicht? Wie bekomme ich das raus? Leider zeigt der Planner auch keine Captions von Events an...

Bebe 4. Mär 2010 18:18

Re: Kalender?
 
Versuche es mal mit dieser Funktion

Delphi-Quellcode:
 function DateAtXY(x, y: Integer; var ADate: TDateTime): Boolean;

Sanguis 4. Mär 2010 18:50

Re: Kalender?
 
Hallo,

hab ich... aber leider hab ich die Parameter nicht und kann mit dem Rückgabewert nichts anfangen...

Gruß,
Andreas

wicht 4. Mär 2010 18:55

Re: Kalender?
 
Das var-Schlüsselwort sagt, dass eine Referenz auf ein TDateTime übergeben wird.
Das heißt für dich, dass in der Variable, die du da mitgibst, wohl nach dem Funktionsaufruf der Wert drin steht, den du gerne möchtest. Und das Ergebnis ist Boolean - sagt vermutlich aus, ob der Aufruf geklappt hat oder nicht...

Sanguis 4. Mär 2010 19:11

Re: Kalender?
 
Eben... und die Tdatetime kann ich nicht übergeben, da ich sie nicht kenne. Ich möchte sie ja beim drop auslesen...

wicht 4. Mär 2010 19:13

Re: Kalender?
 
Hast du dich mal in irgendeiner Art über das var-Schlüsselwort informiert...?

Delphi-Quellcode:
var
  d: TDateTime;
begin
  if DateAtXY(4, 5, d) then
    ShowMessage(DateToStr(d)); // Glaube es hieß DateToStr...
end;
HTH

Bebe 4. Mär 2010 19:13

Re: Kalender?
 
Genau richtig was wicht sagt.

Du übergibst die Position per X und Y an die Funktion und das ermittelte Datum (ADate: TDateTime) aus der Funktion übergibst du dem Event was ich weiter oben schon beschrieben habe.

Bebe 4. Mär 2010 19:17

Re: Kalender?
 
@Sanguis : Aber sie wird doch dabei ausgelesen...

Sanguis 4. Mär 2010 19:41

Re: Kalender?
 
Hallo,

ich versteh die Logik nicht... aber ich bastel mal nachher weiter, vielen Dank, für die Hilfe :)

Gruß,
Andreas

wicht 4. Mär 2010 19:56

Re: Kalender?
 
Naja. Damit kann man quasi mehrere Rückgabewerte ermöglichen.
Weil wenn du zum Beispiel bei X und Y Mist eingibst, quasi etwas, was es nicht gibt, was soll dann der Rückgabewert der Funktion sein (wenn keine Exceptions benutzt werden)? Das Ergebnis kann nur eine Zahl sein, und jede Zahl repräsentiert irgendein Datum. Da würde sich schwer unterscheiden lassen, ob die Funktion ein Ergebnis gebracht hat oder nicht.
Und das var-Schlüsselwort sagt eben vereinfacht gehalten, dass die Funktion, die aufgerufen wird, diese Variable verändern kann und sich diese Änderungen auch auf die aufrufende Funktion auswirken, die mit den Werten weiter arbeiten kann.

Sanguis 4. Mär 2010 22:14

Re: Kalender?
 
Jetzt hab ich was gan queer. Ich versuche folgenden Code:

Delphi-Quellcode:
if (Source is TLabel) then begin
    kalender.Caption := TLabel(Source).Caption;

    if PlannerCalendar1.DateAtXY(4, 5, d) then
    ShowMessage(PlannerCalendar1.DatesAsText(d));
Aber es geht nicht, ich bekomme die Fehlermeldung "Operator oder Semikolon fehlt"...Normalerweise ist es dann ne einfache Kleinigkeit. Aber ich finde einfach nix....

Sanguis 4. Mär 2010 23:05

Re: Kalender?
 
hmmm... wenn ich bei DateAsText den Parameter weglasse, compiliert er ordentlich. Allerdings kommt die MessageBox nicht... also bekomm ich auch nix übergeben..

DeddyH 5. Mär 2010 06:48

Re: Kalender?
 
Wie sieht es so aus?
Delphi-Quellcode:
if (Source is TLabel) then begin
    kalender.Caption := TLabel(Source).Caption;

    if PlannerCalendar1.DateAtXY(4, 5, d) then
      ShowMessage(DateToStr(d));
end;

Bebe 5. Mär 2010 07:22

Re: Kalender?
 
Guten Morgen,

hilfreich wäre es, wenn du uns nächstens sagst in welche Zeile der Fehler auftratt. Er meckert über die Zeile
Delphi-Quellcode:
ShowMessage(PlannerCalendar1.DatesAsText(d));
Delphi-Quellcode:
property DatesAsText: string read GetDatesAsText; //Returns the selected days as text
Hier wird kein Parameter übergeben (d), sondern gelesen. Du wirst höchstwahsrcheinlich nicht das richtige Ergebnis bekommen, da du das Datum erst selektieren mußt (bei Drag n Drop wird nichts selektiert, ausser du machst es selber)

War das Copy and Paste? Ich frage nur, weil du das Beispiel vom wicht mehr oder weniger übernommen hast.
Delphi-Quellcode:
if PlannerCalendar1.DateAtXY(4, 5, d) then
Die Werte 4 und 5 waren nur Beispiele, du mußt natürlich die Cursorposition ermitteln, wo zum Zeitpunkt des Drop's der Cursor auf dem Kalender steht und dann der Funktion übergeben.
Mit dem Rückgabewert (Boolean) wird nur übermittelt, ob du in der Kalenderkomponente überhaupt ein Datum getroffen hast. Wenn kein Datum getroffen wird, sollte der Vorgang abgebrochen werden.
Da das Event DragDrop die Position liefert, brauchst du nur die beiden Werte an die Funktion DateAtXY übergeben .

So z. B.
Delphi-Quellcode:
procedure TForm3.PlannerCalendar1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  d: TDatetime;
begin
  if (Source is TLabel) then
  begin
    begin
      if PlannerCalendar1.DateAtXY(x, y, d) then
      begin
        with PlannerCalendar1.Events.Add do
        begin
          Date := d;
          Hint := TLabel(Source).Caption;
          Color := clBlue;
          Shape := evsTriangle;
        end;
      end;
    end;
  end;
end;
Gruß
Matze

Sanguis 5. Mär 2010 15:35

Re: Kalender?
 
Hallo,

vielen Dank! So funktioniert es. Danke Matze, du bist mene Rettung! Ich konnte schon nicht gut schlafen deshalb *g*

Nu muss ich nur noch rausfinden, wieso der Planner keine Captions anzeigt, obwohl die Events das Property haben.

Gruß,
Andy

Sanguis 8. Mär 2010 01:07

Re: Kalender?
 
Hallo,

ich finde das mit den Captions einfach nicht raus. Hat jemand ne Idee?

Gruß und gute Nacht,
Andreas

Bebe 8. Mär 2010 05:16

Re: Kalender?
 
Guten Morgen,

die Events vom TMSPlannerCalender haben keine Caption, nur die Hints zum anzeigen von Texten.

Gruß
Matze

Sanguis 8. Mär 2010 21:34

Re: Kalender?
 
Hallo,

ich kann den Events aber eine Caption geben.

Zur Not, gehen Hints auch mehrzeilig? /n funzt leider nicht als EscapeCharakter.

Gruß,
Andy


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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