Einzelnen Beitrag anzeigen

BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#9

AW: IDE Tooltips (Hints) immer wieder verschwunden

  Alt 27. Aug 2022, 13:21
Jetzt wird's strange:

Eben habe ich durch Zufall rausgefunden, dass die Tooltipps verschwunden sind, wenn eine andere Delphi-Anwendung läuft. Mit dieser simuliere ich ein Stück Hardware, mit der von meiner aktuellen Applikation kommuniziert wird. Da diese eigentlich fast immer im Hintergrund läuft, waren die Tooltipps auch so gut wie immer weg. Gestartet habe ich die meist wenn ich das Hauptprogramm zum ersten mal getestet habe, daher ging es am Anfang. Die Anwendung selbst starte ich aber normalerweise nicht aus der IDE sonder starte direkt die EXE.

Und natürlich habe ich auch schon weiter gesucht. In der Applikation wird zyklisch ein Log, welches in einem Memo ausgegeben wird aktualisiert. Sobald "Memo.Lines.BeginUdpate" / "Memo.Lines.EndUpdate" zyklisch aufgerufen wird, sind die Tooltipps in der IDE verschwunden. Hatte da eine etwas ungünstige Konstellation, ist aber ja nur ein Testprogramm:

Delphi-Quellcode:
  LogLines := FLogLines.LockList;
  try
    mLog.Lines.BeginUpdate;
    try
      if LogLines.Count > 0 then
      begin
        while LogLines.Count > 0 do
          mLog.Lines.Add(LogLines.ExtractAt(0));
        while mLog.Lines.Count > 10000 do
          mLog.Lines.Delete(0);
        SendMessage(mLog.Handle, EM_LINESCROLL, 0, mLog.Lines.Count);
      end;
    finally
      mLog.Lines.EndUpdate;
    end;
  finally
    FLogLines.UnlockList;
  end;
ich habe das jetzt geändert in:

Delphi-Quellcode:
  LogLines := FLogLines.LockList;
  try
    if LogLines.Count > 0 then
    begin
      mLog.Lines.BeginUpdate;
      try
        while LogLines.Count > 0 do
          mLog.Lines.Add(LogLines.ExtractAt(0));
        while mLog.Lines.Count > 10000 do
          mLog.Lines.Delete(0);
        SendMessage(mLog.Handle, EM_LINESCROLL, 0, mLog.Lines.Count);
      finally
        mLog.Lines.EndUpdate;
      end;
    end;
  finally
    FLogLines.UnlockList;
  end;
und siehe da, die Tooltips in der IDE sind wieder da (LogLines.Count ist nur ab und zu > 0). Ist absolut reproduzierbar. Externe Applikation. Ein Memo und einen Timer drauf. Dann im Timer zyklische Memo.Lines.BeginUpdate und Memo.Lines.EndUpdate aufrufen. Das Ding starten und Good By Tooltips...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat