Einzelnen Beitrag anzeigen

Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

Systray Komponente - 8 Fehler

  Alt 8. Dez 2004, 10:03
Hi, ich versuche grade Luckie's TNA Code in eine Komponente zu packen, leider treten da eine
Menge Fehler auf die ich partout nicht wegbekomme :/

Hier mal der QT:

Delphi-Quellcode:
[...]

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, menus, ShellAPI;

type
  TSystray = class(TComponent)
  private
    { Private-Deklarationen }
  IconData: TNotifyIconData;
  FTray_on_minimize: boolean;
  FTray_on_close: boolean;
  FPopupmenu: TPopupmenu;

  procedure WndProc(var Msg: TMessage); override;
  procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
  procedure Set_Tray_on_minimize(Value: boolean);
  procedure Set_Tray_on_close(Value: boolean);

  protected
    { Protected-Deklarationen }

  public
    { Public-Deklarationen }

  published
    { Published-Deklarationen }
    property Tray_on_minimize: boolean read FTray_on_minimize write FTray_on_minimize;
    property Tray_on_close: boolean read FTray_on_close write FTray_on_close;
    property Popupmenu: TPopupmenu read FPopupmenu write FPopupmenu;
  end;

procedure Register;

implementation

[...]

procedure TSystray.WndProc(var Msg: TMessage);
var
  Point: TPoint;
begin
  if Msg.Msg = WM_USER + 20 then
  begin
    case Msg.lParam of
      WM_RBUTTONDOWN:
        begin
          SetForegroundWindow(Handle);
          GetCursorPos(Point);
          FPopUpMenu.PopUp(Point.X, Point.Y);
        end;
      WM_LBUTTONDOWN:
        begin
          //ShowMessage('links runter');
        end;
      WM_LBUTTONDBLCLK:
        begin
          Form1.Show;
          // Icon nur anzeigen wenn Fenster minimiert
          Shell_NotifyIcon(NIM_DELETE, @IconData);
        end;
    end;
  end;
  inherited;
end;

procedure TSystray.Set_Tray_on_minimize(Value: boolean);
begin
  if Value <> FTray_on_minimize then
    FTray_on_minimize := Value;
end;

procedure TSystray.Set_Tray_on_close(Value: boolean);
begin
  if Value <> FTray_on_close then
    FTray_on_close := Value;
end;
Jetzt werden vom Compiler folgende Meldungen angezeigt:

Code:
[Fehler] Systray.pas(39): Methode 'WndProc' nicht in Basisklasse gefunden
[Fehler] Systray.pas(67): Undefinierter Bezeichner: 'Handle'
[Fehler] Systray.pas(77): Undefinierter Bezeichner: 'Form1'
[Fehler] Systray.pas(79): Undefinierter Bezeichner: 'Shell_NotifyIcon'
[Fehler] Systray.pas(79): Undefinierter Bezeichner: 'NIM_DELETE'
[Hinweis] Systray.pas(31): Das private Symbol 'Set_Tray_on_minimize' wurde deklariert, aber nie verwendet
[Hinweis] Systray.pas(32): Das private Symbol 'Set_Tray_on_close' wurde deklariert, aber nie verwendet
[Fehler] Systray.pas(40): Ungenügende Forward- oder External-Deklaration: 'TSystray.WMSysCommand'
[Fataler Fehler] dclusr50.dpk(33): Verwendete Unit '\\S-INF-01\VOL4\SCHUELER\JFREIKNE\Systray Komponente\Systray.pas' kann nicht compiliert werden
Dass er Form1 nicht kennt, kapier ich, aber wie ich das mit dem WNDPROC hinbekomme weiß ich nicht!
Hat eine Komponente immer einen Besitzer, dem ich dann die neue WndProc zuweisen kann?

Hoffe ihr könnt mir helfen!!
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat