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/)
-   -   Delphi TMonthCalendar + Drag&Drop (https://www.delphipraxis.net/31484-tmonthcalendar-drag-drop.html)

rudi_ 10. Okt 2004 10:18


TMonthCalendar + Drag&Drop
 
Hi Leute,


also ich habe da so ein klitzekleines Problem: eine kleine Terminverwaltung mit einem TMonthCalendar und ein TListView, das zu jedem gewählten Tag die eingetragenen Termine anzeigt.
Soweit so gut - jetzt würde ich allerdings gerne einen Termin mit Drag&Drop aus dem TListView zu einem anderen Tag verschieben können..also einfach über den gewünschten Tag im TMonthCalendar ziehen und dann wird das dorthin verschoben (soweit an dem Tag zu der Uhrzeit nicht schonwas belegt ist - aber das ist ja ein anderes Problem). (gespeichert wird alles in einer mysql datenbank)

So oder so, mein Problem im Moment ist erstmal: wie bekomme ich heraus, über welchem Kalendertag ich mich beim "draggen" gerade befinde; sowas wie die GetItemAt Funktion des TListView.

danke schonmal für die hilfe,

rudi

rudi_ 10. Okt 2004 17:19

Re: TMonthCalendar + Drag&Drop
 
schon gut, habs selbst rausgefunden

ist vieleicht nicht optimal, aber funtkioniert einwandfrei...das hätten die Delphi Leutchen ruhig mal direkt mit implementieren können:

dafür benötigt man die unit CommCtrl (nicht zu verwechseln mit ComCtrls, aus der TMonthCalendar stammt)


Delphi-Quellcode:
procedure TSchedMain.calendarDragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  inf: MCHITTESTINFO;
  datestr: string;
begin
  inf.pt.X := X;
  inf.pt.Y := Y;
  inf.cbSize := sizeOf(inf);
  MonthCal_HitTest(calendar.Handle,inf);
  datestr :=inttostr(inf.st.wYear)+'-'+inttostr(inf.st.wMonth)+'-'+inttostr(inf.st.wDay)+' '+inttostr(TListView(Source).selected.Index+9)+':00:00';
inf.pt ist halt vom typ TPoint und da sollten dann schon die Drop-Koordinaten rein

inf.st ist vom Typ _SYSTEMTIME, was wiederrum ein record mit der Zeitinfo darstellt
also wunderbar gelöst ;)


hat auch lange genug gedauert :wall:

und für alle die es wissen wollen: hier die funktion aus der CommCtrl:
Delphi-Quellcode:
function MonthCal_HitTest(hmc: HWND; var info: TMCHitTestInfo): DWORD;


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