Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Letzter Eintrag in TSynCompletionProposal nicht richtig sichtbar (https://www.delphipraxis.net/188318-letzter-eintrag-tsyncompletionproposal-nicht-richtig-sichtbar.html)

Dennis07 19. Feb 2016 17:16

Letzter Eintrag in TSynCompletionProposal nicht richtig sichtbar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP-Community,
ich habe mal wieder ein kleines Frägeleinchen.
Naja, vielleicht kein kleines wenn dieser Bug sogar in Software wie SMS weiterhin besteht ;)

Es geht um die TSynCompletionProposal-Komponente, welche es für TSynEdits bzw. TSynMemos anbietet, eine Art Insight zu erstellen. Die Grundlegende Funktionsweise wird ja in der Demo recht anschaulich und gut gezeigt.
Allerdings habe ich beim anzeigen das Problem, dass bis zum manuellen Resizen per Cursor Die Größe so gesetzt ist, dass das letzte Item nicht mehr sichtbar ist, oder zumindest kaum noch (siehe Anhang).

Wie ich feststellen konnte, existiert dieses Problem auch weiterhin in vielen Programmen, die SynEdit verwenden, so auch SMS, dem Demoprojekt und anderen.
Ich habe schon nahezu alles probiert und auch versucht die entsprechende Unit abzuändern, bisher ohne Erfolg. Hat jemand von euch eventuell einen Lösungsansatz?

Dennis07 19. Feb 2016 17:53

AW: Letzter Eintrag in TSynCompletionProposal nicht richtig sichtbar
 
Mist... wieso komm ich immer erst auf die Lösung wenn ich es schon gefragt habe....
aber nochmal für die, die evl. auch danach suchen.
Die Prozedur "TSynBaseCompletionProposalForm.Resize" hat einen Fehler: Es wird vergessen, dass die Zählung bei 0 beginnt und somit muss es nicht "... div FEffectiveItemHeight" sondern "... div FEffectiveItemHeight - 1" heißen. Dann funktioniert auch alles.

Delphi-Quellcode:
procedure TSynBaseCompletionProposalForm.Resize;
begin
  inherited;

  if FEffectiveItemHeight <> 0 then
    FLinesInWindow := (Height - FHeightBuffer) div FEffectiveItemHeight {EDIT}- 1{/EDIT};

  if not(csCreating in ControlState) then
    AdjustMetrics;

  AdjustScrollBarPosition;
  Invalidate;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz