Results 1 to 8 of 8

Thread: "out of system resources"

  1. #1

    "out of system resources"

    Hello,

    In mijn programma maak ik gebruik van het NLDtrayicon. Als er een chatberichtje binnenkomt en het programma staat in de tray is het de bedoeling dat de trayicon rood/groen gaat knipperen. Dit werkt met de volgende code:

    Code:
    procedure TClientFrmMain.trayblinktimerTimer(Sender: TObject);
    begin
    if
    NLDTrayIcon1.ImageIndex=113 then
    begin
    NLDTrayIcon1.ImageIndex:=114
    end
    else
    if
    NLDTrayIcon1.ImageIndex=114 then
    begin
    NLDTrayIcon1.ImageIndex:=113
    end
    end;
    Als mijn programma echter een tijdje in de "tray" staat dan verschijnt de error "out of system resourses".

    Wat gaat hier fout ?

  2. #2
    NLDTrayIcon of een ander component geeft zijn gebruikte resources niet vrij. Doe je iets speciaal met bepaalde componenten?
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  3. #3
    NLDTrayIcon of een ander component geeft zijn gebruikte resources niet vrij. Doe je iets speciaal met bepaalde componenten?
    Niet dat ik weet, als ik deze code eruithaal is het probleem weg ?

  4. #4
    Silly member NGLN's Avatar
    Join Date
    Aug 2004
    Location
    Werkendam
    Posts
    5,133
    Ik vermoed dat Henkie gelijk heeft en dat het wel degelijk aan NLDTrayIcon ligt. Zie ook MSDN: ImageList_GetIcon.

    Wil je de schuine code eens toevoegen aan TNLDCustomTrayIcon.MakeInTray?
    Code:
    procedure TNLDCustomTrayIcon.MakeInTray(Flag: Byte);
    begin
      if ([csDesigning,csLoading] * ComponentState) <> [] then
        Exit;
      if FActive and ShouldShowInTray then
      begin
        with MNic do
        begin
          cbSize := SizeOf(TNotifyIconData);
          Wnd := Self.Wnd;
          uID := 1;
          uCallbackMessage := WM_TRAYICON;
          if FileExists(FFilename) then
          begin
            FIcon.LoadFromFile(FFilename);
            hIcon := FIcon.Handle;
          end
          else
            if (Assigned(FImageList)) and (FImageIndex > -1) then
            begin
              if hIcon <> 0 then
                DestroyIcon(hIcon);
              hIcon := ImageList_GetIcon(FImageList.Handle, FImageIndex, 0)
            end
            else
              hIcon := Application.Icon.Handle;
          uFlags := NIF_MESSAGE or NIF_ICON;
          if FShowHint then
          begin
            uFlags := uFlags or NIF_TIP;
            FillChar(szTip, Length(szTip), 0);
            StrPCopy(szTip, FHint);
          end;
        end;
        if Flag = 0 then
          Shell_NotifyIcon(NIM_ADD, @MNic)
        else
          Shell_NotifyIcon(NIM_MODIFY, @MNic);
      end
      else
        Shell_NotifyIcon(NIM_DELETE, @MNic);
    end;
    (Sender as TNLDUser).Signature := 'Groeten van Albert';

  5. #5
    Hai,

    Code gewijzigd:

    Code:
    if hIcon <> 0 then
                DestroyIcon(hIcon);
    Programma loopt weer in de testfase nu... hou jullie op de hoogte!


    Alvast dank.

  6. #6

    Thumbs up

    Hello

    ... hou jullie op de hoogte!
    Het probleem is hiermee inderdaad opgelost!

    Alles werkt nu zoals het hoort

    Geweldig bedankt NGLN en Henkie!
    Last edited by R.C.; 06-Feb-07 at 20:04.

  7. #7
    Silly member NGLN's Avatar
    Join Date
    Aug 2004
    Location
    Werkendam
    Posts
    5,133
    Thanks voor het testen, dan zal ik het even aanpassen in VCS.
    (Sender as TNLDUser).Signature := 'Groeten van Albert';

  8. #8
    • Verplaatst van Algemeen naar NLDTrayIcon.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •