Chce sobie zrobić obługę MIDI w osobnym unicie, często z tego korzystam i tak byłoby mi wygodniej. Główna forma służy mi teraz tylko do testowania, czy działa ok. No i mam dwa pytania.
1
W tym unicie MIDI mam zdefiniowaną klasę:
interface
type
TMIDI = class(TControl)
// tu jest definicja
public
procedure WndProc(var Msg: TMessage); override;
end;
var
MIDI: TMIDI;
implementation
itd.
procedure TMIDI.WndProc(var Msg: TMessage);
begin
// tu zajmuję się komunikatem
inherited WndProc(Msg);
end;
Na końcu unita mam:
initialization
MIDI := TMIDI.Create(Application);
finalization
MIDI.Free;
Dostaję błąd przy zamykaniu programu (Access Violation at Address = 00000000). Czy to oznacza, że Application sama zwalnia ten obiekt? Jak zmienię AOwner na nil - jest ok.
2
WndProc użyte z główną formą działa, a z tą utworzoną przeze mnie klasą w osobnym unicie nie :( To znaczy, nie przejmuje żadnych komunikatów. Próbowałem w sekcji initalization zrobić tak:
MIDI := TMIDI.Create(Application.MainForm);
ale też nic nie daje. Zatem moje drugie pytanko brzmi - w jaki sposób przechwytywać komunikaty poza główną formą?
Mam nadzieję, że nie zamotałem... ;)
Pozdrowienia,
Jacek