Mozliwość cofnięcia CanUndo.

0

W SynMemo jest takie coś jak Undo (cofnij). Jednak, jeżeli daje polecenie:

<font color="blue">SynMemo.Text := s;</span>

A "s" jest jakąś zmienną String, nie da się już tego cofnąć. Próbowałem różnie to obejść.. i można tak:

<font color="blue">SynMemo.SelectAll;
SynMemo.SelText := s;</span>

I teraz już można cofnąć [???] , ale teraz z kolei przy operacji ponów jest mała usterka: tekst będzie zaznaczony po "ponów".

Czy można to jakoś inaczej skombinować, żeby normalnie działało ponów i cofnij ??? [glowa]

0

Ja tam używam

procedure TForm1.Button1Click(Sender: TObject);
begin
SynMemo1.Undo;
end;

:d :d :d

0

Pochwalony! W najgorszym wypadku możesz wysłać polecenie:
SendMessage(SynEdit1.Handle, WM_UNDO, 0, 0);
Da ten sam efekt :P

0

Przecież nie o to chodziło... tylko o samą możliwość cofnięcia operacji.

0

Pochwalony! W najgorszym wypadku możesz wysłać polecenie:
SendMessage(SynEdit1.Handle, WM_UNDO, 0, 0);
Da ten sam efekt :P

tak sądzisz???

wrzuć na formę SynEdit lub SynMemo i daj ten kod.. zadziała???? nie...
jak nie wiesz to nie pisz....

Detox.. zamiast do stringa zapisuj bufor do StringList i po każdym cofnięciu go opróżniaj :-)

Czyli w zarysie..

//.....tworzenie StringListy np w Oncreate;
TempList.Create;
//.........................................
//w zdarzeniu poprzedzającym wykonanie jakiejsc operacji...
TempList.Text:=TwojePole.Text;
//------------------------------
// jezeli trzeba cofnac text do momemntu ostatniej zmiany to
TwojePole.Text:=TempList.Text;
TempList.Clear;//Czyscisz bufor...
//.w OnDestroy
TempList.Free;

a zwykle undo to ofkors

SynMemo.Undo;

pisałem z głowy i to jest tylko zarys...

0

Oczywiście masz racje Lofix, można tak zrobić, ale wtedy bym musiał dawać to kazdej najmniejszej operacji w tekście (OnChange). Zobaczy sie....

0

Oczywiście masz racje Lofix, można tak zrobić, ale wtedy bym musiał dawać to kazdej najmniejszej operacji w tekście (OnChange). Zobaczy sie....

alez Detoxie.. nie zrozumiales mojej ideii :-) ;-)

Bufor ma sie wypelniac textem z pola tylko przed jakas operacja....
np COPY,PASTE or smth...

zwykle onchange nie musi byc obslugiwane z racji tego ze SynMemo ma do tego wlasna procedure UNDO..

niech to jakos zobrazuje moj pomysl :-)

                              |----------BUFOR-------------|

--WEJSCIE--| |----------Wynik (do wyboru kopia lub nowy tekst
|--OPERACJE NA NIM----|

0

Założmy, że mam button "Cofnij" - to teraz jaką tam dam procedurę... może:

<font color="blue"> IF SynMemo.CanUndo = true then SynMemo.Undo ELSE ... skrypt(c) Lofixa</span> O to chodzi chyba...

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