Results 1 to 14 of 14

Thread: Memo: Gegevens zijn niet altijd zichtbaar

  1. #1

    Memo: Gegevens zijn niet altijd zichtbaar

    Ik gebruik een Memo om gegevens zichtbaar te maken.

    Als ik de eerste keer bijvoorbeeld 66 regels plaats (waarvan je er 20 kunt zien doordat het memo veld niet groter is), en je verschuift deze regels om de onderste ook te kunnen zien, dan gaat het mis als ik even later
    Slechts 2 regels plaats.

    Deze 2 regels zijn dan niet te zien.

    Hoe pak ik dit het beste aan ?

  2. #2
    De code erbij:

    Memo1.Lines.Clear;

    Memo1.Lines.Add( '1111' ); //Dit 66x herhalen

    // De tekst wordt nu handmatig verschoven

    Memo1.Lines.Clear;

    Memo1.Lines.Add( '2222' ); //Dit 2x herhalen

    // De Tekst is niet zichtbaar

    Memo1.BeginUpdate; //Dit werkt niet, maar hoe kan ik deze tekst wel zichtbaar maken (en wie weet waarom de tekst niet zichtbaar is) ?

  3. #3
    Senior member mzwollo's Avatar
    Join Date
    Oct 2004
    Location
    Larserbos
    Posts
    155
    Delphi Code:
    1. Memo1.Lines.Add( '2222' );
    2.   memo1.ScrollToTop();

  4. #4
    Memo1.ScrollToTop(); //geeft een fout melding, het ziet ernaar uit dat deze mogelijkheid niet bestaat ?

    Memo1.ScrollTo(x,y); //Dit bestaat wel en heb deze geprobeerd, maar welke waardes ik ook maar invul bij x en y, de gegevens worden niet getoond.
    Last edited by MMSoft; 30-Apr-16 at 22:44.

  5. #5
    Senior member mzwollo's Avatar
    Join Date
    Oct 2004
    Location
    Larserbos
    Posts
    155
    Memo1.ScrollToTop() bestaat wel in nieuwere versies van Delphi.
    In oudere versies zul je het moeten doen met bijvoorbeeld Memo1.ScrollBy(0,0);

  6. #6
    Helaas wat ik ook probeer deze 2 regels worden niet getoond, terwijl "Memo1.Lines.Count" toch duidelijk de waarde 2 geeft.

    Kan het een bug zijn in Delphi XE5 ?
    Ik zag dat er Update's zijn, moet ik die allemaal gebruiken of alleen de laatste, en hoe werkt dat precies ?
    Last edited by MMSoft; 01-May-16 at 00:46.

  7. #7
    Senior member mzwollo's Avatar
    Join Date
    Oct 2004
    Location
    Larserbos
    Posts
    155
    Zie je wel scrollbars?
    En kun je scrollposition handmatig naar linksboven verplaatsen?
    En zie je dan de twee regels nog steeds niet?

    Overigens zie ik nu dat ik ScrollBy(0,0) schreef, de bedoeling was natuurlijk:
    ScrollTo(0,0);

    Als dat niet werkt zou dat kunnen wijzen op een bug in XE5.
    Je moet altijd de laatste updates ophalen, als dat tenminste mogelijk is.
    Die haal je op van: edn.embarcadero.com --> downloads --> registered user downloads

    Probeer ook eens:
    Delphi Code:
    1. procedure TForm1.Button1Click(Sender: TObject);
    2. var
    3.   i: Integer;
    4. begin
    5.   Memo1.Lines.Clear;
    6.   for i := 0 to 66 do
    7.     Memo1.Lines.Add(inttostr(i));
    8.   Memo1.GoToTextBegin;
    9. end;
    Last edited by mzwollo; 01-May-16 at 10:09.

  8. #8
    >Zie je wel scrollbars?
    Als ik de tekst verschuif zie ik één lijntje aan de zijkanten, maar niet de scrollbars die ik gewend was van Delphi 7 (ik ben pas overgeschakeld op XE5)
    Ik heb geprobeerd om de scrollbars te actieveren, maar ik heb nog geen echt duidelijke scrollbars gezien, mogelijk zit hier het probleem.

    >Overigens zie ik nu dat ik ScrollBy(0,0) schreef, de bedoeling was natuurlijk: ScrollTo(0,0);
    ScrollTo(0,0); heb ik geprobeerd, maar dat werkten niet.

    De code heb ik nog niet kunnen testen (moet nu gaan werken).

  9. #9
    Na een update van XE5, werkte alle bovenstaande en zelf bedachte oplossing nog steeds niet.
    Daarom ben ik maar eens verder aan het experimenteren gegaan en nu werkt het.
    Als ik eerst de 'cursor' op de eerste regel zet, en dan het memo veld wis werkt alles prima.

    Memo1.GoToTextBegin; //
    Memo1.Lines.Clear; //

    Andersom, of alleen wissen werkt niet, vreemd !!!

    Iedereen die mee gedacht heeft bedankt !

  10. #10
    Ik gebruik inmiddels versie XE8 en nog steeds werkt het niet goed.

    Wat is er aan de hand ?

    Als ik 5 regels toon in een Memo waar 10 regels in passen dan kan ik deze regels natuurlijk niet scrollen (prima dus).
    Maar als ik er één keer 20 regels in gehad heb en ik plaats er na een: Memo1.Lines.Clear, er weer 5 regels in dan heb ik 15 lege posities onder deze 5 regels en kan ik deze wel scrollen (Fout dus).

    Hou kan ik dit oplossen, dat als ik later minder regels toon (dan de Memo groot is) ik deze niet kan scrollen en niet die lege posities in mijn memo zie ?

  11. #11
    Senior member mzwollo's Avatar
    Join Date
    Oct 2004
    Location
    Larserbos
    Posts
    155
    Voeg na Memo1.Lines.Clear toe Application.ProcessMessages.
    Dan lukt het wel.
    Dus:

    Delphi Code:
    1. procedure TForm1.Button1Click(Sender: TObject);
    2. var
    3.   i: Integer;
    4. begin
    5.   Memo1.Lines.Clear;
    6.   Application.ProcessMessages;
    7.   for i := 0 to 20 do
    8.     Memo1.Lines.Add(inttostr(i));
    9.   Memo1.GoToTextBegin;
    10. end;
    11.  
    12. procedure TForm1.Button2Click(Sender: TObject);
    13. var
    14.   i: Integer;
    15. begin
    16.   Memo1.Lines.Clear;
    17.   Application.ProcessMessages;
    18.   for i := 0 to 5 do
    19.     Memo1.Lines.Add(inttostr(i));
    20.   Memo1.GoToTextBegin;
    21. end;

  12. #12
    Alleen de regel: Application.ProcessMessages;
    Meteen na het wissen van de Memo lost het probleem al op.

    Wat doet deze regel precies ?

  13. #13
    Senior member mzwollo's Avatar
    Join Date
    Oct 2004
    Location
    Larserbos
    Posts
    155
    Memo1.Clear bestaat in feite uit een reeks opdrachten, die in een wachtrij worden geplaatst om uitgevoerd te worden.
    Door een bug in FireMonkey wordt deze wachtrij van Memo1.Clear niet volledig afgewerkt.
    ProcessMessages onderbreekt even de uitvoering van de applicatie om de wachtrij af te werken.

  14. #14
    Ik was al behoorlijk aan het zoeken geweest, maar deze oplossing had ik niet gevonden, en wist ook niet dat dit door een bug kwam.
    Is deze bug in een nieuwere versie opgelost ? Want als deze er in XE5 al inzat en bij XE8 nog steeds dan ben ik erg benieuwd of deze inmiddels wel opgelost is.
    Ook ben ik benieuwd of ik door deze bug meer problemen kan gaan verwachten ?

    Bedankt voor deze perfect werkende oplossing !

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
  •