Entwickler-Ecke

Windows API - Hittest bei TMonthCalendar


cartridge - So 21.08.05 23:07
Titel: Hittest bei TMonthCalendar
Hallo Leute!

Ich hatte eigentlich vor, ein Datum bei Druck auf die rechte Maustaste markieren zu lassen. Dazu bietet sich eigentlich der sog. Hittest an. Leider ist in Delphi dieser nicth ausgewiesen. Beim mehr oder minder zufälligen Suchen habe ich in der Unit CommCtrl eine Methode gefunden: MonthCal_HittestInfo.

Leider ist diese Methode nur aus der Windows. API entnommen und in der Hilfe nicht dokumentiert. Ich habe leider das Problem, dass ich aus dem Ergebnis- Record MCMHITTESTINFO keine verwertbaren Daten heraus bekomme, obwohl relativ klar ist, um welche Werte es sich handelt. So gelingt es mir z.B. nicht, ein verwertbares Datum aus st {Systemtime} heraus zu holen, und dies nciht, weil ich das Datum nicht umzuwandeln weiß, sondern weil die Werte für das Datum nicht gültig sind, weil zu hoch!

Kann mir jemand einen Tipp geben (und wenn es nur ein Auszug aus einer Hilfe- Datei ist)???

Gruß Ingo


Sprint - So 21.08.05 23:35


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.MonthCalendar1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
var
  Info: TMCHitTestInfo;
begin

  Handled := True;
  FillChar(Info, SizeOf(TMCHitTestInfo), 0);
  Info.cbSize := SizeOf(TMCHitTestInfo);
  Info.pt := MousePos;
  if SendMessage(TMonthCalendar(Sender).Handle, MCM_HITTEST, 0, LPARAM(@Info)) = MCHT_CALENDARDATE then
    ShowMessage(DateToStr(SystemTimeToDateTime(Info.st)));

end;


cartridge - Mo 22.08.05 20:12

Supi! Heißen Dank, Sprint! *freu*

Aber: Woher hast Du das? Die OH zu Delphi6, bzw. zu Windows, die mit Delphi6 mitgeliefert wird, schweigt sich da total aus!!!

Wäre nett, wenn Du mir diese Frage noch beantworten könntest!

Gruß Ingo


Sprint - Di 23.08.05 02:14

Aus dem PSDK. Kannst du hier [http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm] downloaden.


cartridge - Di 23.08.05 06:27

Aha! Habe eben geklickt- hat nur Fragezeichen in meinem Gesicht gebracht, aber ich habe jetzt auch keine Zeit mehr. Jedenfalls heißen Dank nochmal; funzt wie ne eins!!!

Gruß Ingo