Dialog - anuluj, najdłuższa linijka RichEdit, Scrollbar

0
  1. Gdy edytuję plik i chcę otworzyć nowy (OpenDialog) to pyta czy chce zapisać zmiany w tym aktualnym i mam do wyboru: Tak, Nie, Anuluj. I nie działa mi Anuluj bo gdy kliknę Anuluj to i tak włączy OpenDialog a nie wróci do programu...

  2. Mam zdarzenie OnClose - pyta czy chce zapisać plik - jak klikam Anuluj to i tak zamknie program...

  3. Jak pobrać ile znaków ma najdłuższa linijka w RichEdit?

  4. Dlaczego gdy mam w RichEdit: ScrollBars na ssBoth to wyświetla mi tylko ten pionowy? (dopiero jak włącze StatusBara to się pojawia na stałe)

0

1, 2 - Gdzie jest do jasnej ....... jest kod, którym to robisz -? Mamy zgadywać jak to robisz? Popatrz na funkcję OnClose - na liście parametrów jest var Action: TCloseAction - możesz zapobiec wyłączeniu aplikacji, jeżeli ustawisz w OnClose Action := caNone;

3 - Przeleć pętlą przez wszystkie linie w RichEdit, zapamiętaj gdzie jest max
4 - Właściwość WordWrap - poeksperymentuj...

0

Z pierwszym sobie już poradziłem.

Odnośnie drugiego:

 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  okienko: integer;
begin
  if zmiany = 1 then
  begin
    okienko := MessageBox(Handle, pchar('Czy chcesz zapisać zmiany do pliku "'+plik+'"?'), 'Notatnik', MB_YESNOCANCEL + MB_ICONWARNING);
    if okienko = mrYes then
    begin
      if otwartyplik = 1 then sRichEdit1.Lines.SaveToFile(plik)
      else
      begin
        if SaveDialog1.Execute then sRichEdit1.Lines.SaveToFile(SaveDialog1.FileName+'.txt');
      end;
    end;
  end;
end;
0

Dzięki madmike.
Ten z tym Scrollbarem kombinowałem. Robię klon Notatnika. Wszystko zachowuje się tak:

Po włączeniu programu:

  • RichEdit1.ScrollBars := ssBoth;
  • RichEdit1.WordWrap := False;
    *--- nie działa --- --- pojawia się tylko jeden (pionowy) scrollbar ---

Po zaznaczeniu Widok -> Zawijaj wiersze:

  • RichEdit1.ScrollBars := ssVertical;
  • RichEdit1.WordWrap := True;
    --- działa ---

Po odznaczeniu Widok -> Zawijaj wiersze:

  • RichEdit1.ScrollBars := ssBoth;
  • RichEdit1.WordWrap := False;
    --- działa ---
0

Ha, ja wiem jak się zachowuje, chciałem, żebyś ty się przekonał: :)

- RichEdit1.ScrollBars := ssBoth;
- RichEdit1.WordWrap := fale;
--- działa ---

I gra?

0

No napisałem, że to własnie nie działa xD Przy włączeniu programu tylko pionowy pasek mi się pojawia a poziomego nie ma... mam ssBoth i WordWrap na false.

0

Pokaże się dopiero w momencie kiedy tekst będzie wyjeżdżał poza richedit. Taka uroda RichEdit.

Można spróbować 'oszukiwać', spróbuj na początek w OnCreate formatki na której masz RichEdit wstawić:

ShowScrollBar(RichEdit1.Handle, SB_HORZ, TRUE); //odpowiada za stałe pokazywanie poziomego scrollbara
ShowScrollBar(RichEdit1.Handle, SB_VERT, TRUE); //odpowiada za stałe pokazywanie pionowego scrollbara

Dopasuj sobie to RichEdit1 do nazwy swojego RichEdit :)

BTW 1: W katalogu gdzie masz zainstalowane delphi powinien być katalog Demo - tam gdzieś jest przykład edytora właśnie na richedit - przejrzyj sobie!

BTW 2: Takie tematy do działu NEWBIE!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1