Problem z Unknown directive: 'message'

0

Stworzyłem Unit2 i w nim chciałem coś napisać, ale nie kompiluje się kod, bo wywala komunikat:
Unknown directive: 'message'
przy linijce:

procedure WMDropFiles(var msg: TWMDropFiles); message WM_DROPFILES;

Wcześniej gdy kod miałem w Unit1 w Form1 to działał świetnie, ale wolałem zacząć klepać kod w nowych unitach dla czytelności, w unitami innymi nie mam na razie doświadczenia (nie potrzebę na innych unitach Form jakby co i nie wiem, czy czasem taki kod od Drag and Drop może być w innym Unicie, wolałbym go mieć w innym unicie, bo większy porządek wtedy).

Wklejam większy fragment kodu w razie czego:

unit DragAndDrop;

interface

uses
  Dialogs, ShellAPI, Windows, Messages;

  procedure Pokaz;
  procedure WMDropFiles(var msg: TWMDropFiles); message WM_DROPFILES; //tej linijki się czepia

implementation

uses
  Unit1;

procedure Pokaz();
begin
  ShowMessage('test');
end;

procedure WMDropFiles(var msg: TWMDropFiles);
var
//...........

to co jest nie tak z? Proszę o pomoc.
[DCC Error] DragAndDrop.pas(9): E2070 Unknown directive: 'message'

0

message WM_DROPFILES; - dyrektywa dotyczy metody klasy, a gdzie masz tą klasę?

0

czyli muszę dopisać coś w stylu

type
TKlasa = class //co dalej?
private
//tutaj ta procedurka
end;

?

Prosiłbym o nieco więcej informacji. Dodam, że ten Unit2 nie ma tworzyć Formy jakby co. Nigdy nie bawiłem się w Unity dodatkowe, stąd ta niewiedza, a nie przypominam sobie, by w dwóch książkach dla początkujących pisali o tym.

1

Dokładnie jak @_13th_Dragon napisał. Komunikat WM_DROPFILES musi być obsłużony przez Dialog / Formatkę / Kontrolkę, na którą mają zostac przeciągane pliki "z zewnątrz". Tutaj akurat tworzenie osobnego modułu w taki sposób, ma średni sens. Co innego gdybyś projektował uniwersalną formatkę w osobnym module, którą będziesz często używał. Poza tym od razu uprzedzam pytania. Dla systemów gdzie możliwe jest włączenie UAC, czyli od Visty wzwyż, reagowanie na ten komunikat należy obsłużyć innym sposobem. Przeanalizuj sobie kod, który dołączyłem do tego posta. A wszystko będzie jasne.

0

Tak a propos, może próbujesz wyważyć otwarte drzwi: http://melander.dk/delphi/dragdrop/

0

aha, ok, dzięki. btw. Olesio, szkoda, że nowsze windy komplikują wszystko tym UAC, bo co niebezpiecznego jest w drag and drop? widziałeś by trojany lub keyloggery z drag and drop korzystały lol? Na szczęście ja nie jestem programistą i nigdy nim nie będę, pozostanę amatorem, który klepie drobne programy użyteczne dla siebie więc UAC mam wyłączone i (gdybym programików nie pisał i tak UAC miałbym wyłączone). A twój projekt przejrzałem na szybko, szkoda, ze tyle dodatkowego kodu trzeba klepać, gdybym go nie miał, to nie zapamiętałbym co jest potrzebne do tego. Zapisałem go w dropboxie, w przyszłości może się przyda. Dziękuję

1 użytkowników online, w tym zalogowanych: 0, gości: 1