Avatar billede webcreator Nybegynder
20. april 2004 - 18:20 Der er 9 kommentarer og
1 løsning

Tjek om der er foretaget ændringer i RichEdit

Hej Eksperter.

Jeg har lavet en lille editor, som er blevet næsten perfekt. Dog er jeg ikke helt tilfreds med "Nyt dokument"-funktionen. For denne skal naturligvis brokke sig, hvis man har glemt at gemme siden. Det gør den også nu, men den tjekker ikke, om der er foretaget ændringer efterfølgende.

Så mit spørgsmåler er derfor, om der findes en funktion, der giver en værdi, når der ændres i RichEdit'en ? Så kan jeg efterfølgende lave en lille IF-Sætning.

På forhånd tak :)
Avatar billede jonat Nybegynder
20. april 2004 - 18:35 #1
if RichEdit1.Modified then
begin
...
end;

// Jonat
Avatar billede webcreator Nybegynder
20. april 2004 - 19:12 #2
Hej Jonat. Ja, den kendte jeg. Men det er lidt overkill synes jeg, at skulle skrive :

if RichEdit.Modified then
DocMod := 1;

Findes der ikke blot en funktion, der sender en værdi tilbage hvis der er foretaget ændringer?

Hvis ikke, så er din løsning naturligvis fuldt acceptabel alligevel :)
Avatar billede nca Juniormester
20. april 2004 - 19:20 #3
Du kan bruge eventen OnChange og heri sætte DocMod=1, men jeg kan ikke se, det er bedre end forslaget fra webcreator.
Avatar billede nca Juniormester
20. april 2004 - 19:20 #4
Undskyld. Forslaget var fra jonat :-)
Avatar billede webcreator Nybegynder
20. april 2004 - 19:48 #5
NCA > Jeg vil da betegne dit forslag som noget simplere. Det gælder jo om at optimere hvor man kan :)
Avatar billede webcreator Nybegynder
20. april 2004 - 19:52 #6
NCA > Hm, har lige prøvet dit forslag. Det virker ikke. Jeg har naturligvis lavet variablen;

  DocMod: Integer;
Avatar billede webcreator Nybegynder
20. april 2004 - 20:26 #7
Hm, jeg har tilføjet Jonat's i min FormCreate. Men her virker det ikke. Burde det ikke være placeret dér ?
Avatar billede arne_v Ekspert
20. april 2004 - 21:30 #8
Jeg forstår ikke spørgsmålet.

if RichEdit1.Modified then

kan bruges til at teste uden variabel.

if RichEdit1.Modified then DocMod := 1;

laver en ny variabel som kan testes på.

Er det:

DocMod := IfThen(RichEdit1.Modified, 1, 0);

du leder efter ?
Avatar billede webcreator Nybegynder
20. april 2004 - 21:41 #9
Hej igen.
Jeg har fundet ud af det. Jeg vrøvlede lidt :)

Jeg har placeret flg. sætning i min TForm1.RichEditChange :
  if RichEdit.Modified then
  DocMod := 1;

Dette virkede helt efter hensigten :)
Avatar billede jonat Nybegynder
21. april 2004 - 07:11 #10
webcreator -> under din TForm1.RichEditChange behøver du ikke lave  if RichEdit.Modified then
  DocMod := 1;
du behøver kunn at skrive DocMod := 1;

fordi lige så snart at der er skrevet et bogstav, så kalder den proceduren TForm1.RichEditChange og sætter RichEdit.Modified til true.
Selvom du så sletter de bogstaver som der er blevet skrevet, vil den ikke sætte RichEdit.Modified til false igen. Så du kan bare nøjes med DocMod := 1 under TForm1.RichEditChange. :-)
Så sparer du den IF sætning :-)

// Jonat
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester