Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TMS TDBPlaner das verschieben eines Items bestätigen


Kostas - Di 22.02.11 13:06
Titel: TMS TDBPlaner das verschieben eines Items bestätigen
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 - Di 22.02.11 13:48


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


Delphi-Quelltext
1:
FromBegin, FromEnd, FromPos                    


zurück.


Kostas - 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.


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


Tausend Dank DonManfred.


DonManfred - 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


Kostas - 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 - 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... ;)


Kostas - 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