Autor Beitrag
Kostas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Di 22.02.11 13:06 
Hallo Zusammen,

ich verwende den TDBPlaner von TMS-Software.

Wenn ich ein Item mit der Maus auf eine andere Resource oder innerhalb der Timeline verschiebe, soll
über ein Dialog das Verschieben vom User bestätigt werden. Es könnte ja ein Versehen sein.

Der Event DBPlaner.OnItemMove wird nach dem Move gefeuert, doch wie kann ich die Änderung rückgängig machen.
Es gibt keine Methode z.B.: Item.CancelChanges oder so ähnlich.
Hat jemand eine Idee?

Gruß Kostas
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Di 22.02.11 13:48 
ausblenden Delphi-Quelltext
1:
2:
procedure TForm5.DBPlanner1ItemMove(Sender: TObject; Item: TPlannerItem;
  FromBegin, FromEnd, FromPos, ToBegin, ToEnd, ToPos: Integer);


Du hast doch alles, was du brauchst... Bei einem NEIN in der Abfrage schiebst du das Item wieder auf

ausblenden Delphi-Quelltext
1:
FromBegin, FromEnd, FromPos					


zurück.

_________________
Gruss Manfred
Kostas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Di 22.02.11 16:13 
user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:


Du hast doch alles, was du brauchst... Bei einem NEIN in der Abfrage schiebst du das Item wieder auf zurück.


Hallo DonManfred,

ja genau das ist es. Es war vor meiner Nase und habs nicht gesehen.

In onItemMoving gibt es ein var Allow: Boolean nach dem habe ich gesuch nicht weiter gelesen.

ausblenden Delphi-Quelltext
1:
2:
3:
procedure TfrKalender.DBPlanner1ItemMoving(Sender: TObject;
  Item: TPlannerItem; DeltaBegin, DeltaPos: Integer; var Allow: Boolean);
begin


Tausend Dank DonManfred.
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Di 22.02.11 16:55 
Mit dem Event OnItemMoving geht´s natürlich auch (sogar einfacher weil du da das allow einfach auf False setzen kannst).

Aber Du sprachst ja vom ItemMove und meine Antwort bezog sich explizit darauf.

Freut mich, das ich helfen konnte

_________________
Gruss Manfred
Kostas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Di 22.02.11 16:57 
user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:
Mit dem Event OnItemMoving geht´s natürlich auch (sogar einfacher weil du da das allow einfach auf False setzen kannst).

Aber Du sprachst ja vom ItemMove und meine Antwort bezog sich explizit darauf.


nein das geht nicht, da dieses Event vor dem Bewegen gefeuert wird. Ich kann damit verhindern das ein User ein Item verschibt.
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Di 22.02.11 17:06 
Ja, eben. Du kannst verhindern das der User es "aus versehen" verschiebt.
Wenn Du aber erst NACH dem verschieben eingreifen willst (prüfen, ob "Zielzeiten erlaubt" o.ä.) dann ist die von dir gewählte Variante (OnItemMoving) besser. aber auch dafür hast Du ja nun eine Lösung wie Du das Item wieder an die alte Stelle bekommst wenn es nötig ist... ;)

_________________
Gruss Manfred
Kostas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Di 22.02.11 17:15 
user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:
Ja, eben. Du kannst verhindern das der User es "aus versehen" verschiebt.
Wenn Du aber erst NACH dem verschieben eingreifen willst (prüfen, ob "Zielzeiten erlaubt" o.ä.) dann ist die von dir gewählte Variante (OnItemMoving) besser. aber auch dafür hast Du ja nun eine Lösung wie Du das Item wieder an die alte Stelle bekommst wenn es nötig ist... ;)


Grundsätzlich ist das Verschieben von Items erlaubt.
Der User soll nur eine Sicherheitsfrage bestätigen die als Dialog hoch kommt.
Wenn ich diesen Dialog am Anfang bringe, wird das verschieben beendet bzw. verhindert durch den modalen Dialog.
Der user klick auf ja, und muss mit dem Verschieben neu anfangen, was zur Folge hat das er schon wieder gefragt wird. :-)
Ich bin zwar manchmal gemein aber so gemein dann doch nicht.

Gruß Kostas