Results 1 to 8 of 8

Thread: FontStyle van RichMemo werkt niet goed

  1. #1

    FontStyle van RichMemo werkt niet goed

    Hallo,

    Nadat de fp.style = [Bold] is gezet en ook zichtbaar is in RichMemo1 is het niet mogelijk om terug te keren naar fp.style := [].
    Waarop werkt dit niet, en hoe moet het dan?

    Met een hartelijke groet, Frans

    Code:
    procedure TForm1.SpeedButton3Click(Sender: TObject);
      var
      fp: TFontParams;
    begin
      FP.Size:=14;
      RichMemo1.GetTextAttributes(RichMemo1.SelStart, fp);
      IF fsBold in fp.Style then fp.Style := fp.Style - [fsBold]
                            else fp.Style := fp.Style + [fsBold];
      RichMemo1.SetTextAttributes(RichMemo1.SelStart, RichMemo1.SelLength, fp);
    end;

  2. #2
    Misschien omdat bij je RichMemo1.SelStart de bold nog niet gezet was?
    Dan gaat ie gewoon weer bold zetten.

    De selstart komt erg nauw in richmemo.

    Wat gebeurd er als je abcde vet maakt, dan alleen de bcd selecteert en nogmaals dit uitvoert, werkt het dan wel?

  3. #3
    Dan werkt het wel. Kan Bold en niet Bold uitvoeren.

  4. #4
    En als je dus voor die text staat (voor die a) en je gaat tikken (tussenvoegen), is dat dan bold of normal?

    Waarschijnlijk normaal wat aangeeft dat die GetTextAttributes (en dus cursor) beschouwd wordt als net ervoor.

    Dan zou je dus selstart +1 moeten doen voor gettextattr (moet je wel zeker weten dat sellength > 0 is).

    (De settextattr moet uiteraard wel vanaf selstart)

  5. #5
    Na het verwijderen van de regel RichMemo1.GetTextAttributes(RichMemo1.SelStart, fp) werkt het goed.

    H.g. Frans

  6. #6
    Quote Originally Posted by Dubbeld View Post
    Na het verwijderen van de regel RichMemo1.GetTextAttributes(RichMemo1.SelStart, fp) werkt het goed.
    Kan misschien zijn dat het toevallig goed gaat.
    Maar... fp is ongedefinieerd wanneer je geen GetTextAttributes doet.
    Dan is het maar de vraag wat er in fp.Style staat.
    Dat zou dus soms wel kunnen werken en soms niet.

    (Stof voor een toekomstige bughunt )

    Zeker als je nu eerst iets vet maakt... dan ergens anders op iets niet vets gaat staan en het vet probeert te maken... dat gaat dan dus niet werken.

  7. #7
    Bij de start van het programma wordt dit uitgevoerd.

    Code:
      GetTextAttributes(SelStart, FP);
      FP.Name := 'SEGOE UI';
      FP.Size := 11;
      FP.Color := clBlack;
      FP.Style := [];
      FP.VScriptPos := vpNormal;
      FP.HasBkClr:=False;
      FP.BkColor:=clDefault;
      SetTextAttributes(SelStart, SelLength, FP);
    Frans

  8. #8
    Jij hebt in de TForm1.SpeedButton3Click een lokale fp variabele.
    Een globale variabele bereik je dus niet en wordt daar niet gebruikt.

    Zelfs als je de fp lokaal weghaalt dan werkt het nog niet goed.
    Want dan wordt er alleen maar om en om bold/niet bold geschakeld.
    Je kunt dan niet twee verschillende delen achter elkaar bold maken.

    Probeer maar eens.

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
  •