Toon posts:

[Delphi] Memo Component

Pagina: 1
Acties:
  • 102 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Heel raar probleem hier als je nu text in een memo typt dan kun je dan ongedaan maken met de undo functie, maar voeg je nu zelf een lijn toe door memo1.lines.add('blablabla');
dan werkt de undo niet meer. De boolean CanUndo geeft op dit moment dan ook aan false aan.

Moet er een andere boolean gezet worden zodat de memo weet dat undo weer mogelijk is ?

Wat is hier de oplossing voor want ik kom er niet uit ?

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 04-05 00:03

Engineer

Software

Gewoon de tekst eruit vissen, de andere tekst eraan toevoegen en weer terug in je memo zetten?

var := memo1.text;
var := var+addtextvar;
memo1.text := var;

Kweenie hoor, maar kan werken :)

Verwijderd

Topicstarter
Op donderdag 01 november 2001 20:15 schreef hdd het volgende:
Gewoon de tekst eruit vissen, de andere tekst eraan toevoegen en weer terug in je memo zetten?

var := memo1.text;
var := var+addtextvar;
memo1.text := var;

Kweenie hoor, maar kan werken :)
Het zit nog iets anders in elkaar ik ben een website studio aan het maken dus als er dan wat wordt toegevoegd dan wil ik ook later nog undo kunnen doen via de normale manier als het kan met memo1.undo

maar het is een optie die je noemt dan zou ik een eigen undo moeten schrijven ?? mmmm

Verwijderd

Wanneer je rechtstreeks de Lines of Text van een Memo wijzigt, werkt Undo inderdaad niet.
Doe je 't via het Clipboard, dan weet Windows er ook van, en werkt 't wel. (Undo stuurt gewoon een EM_UNDO message naar de handle van 't Memo control).
code:
1
2
3
4
5
6
7
8
uses Clipbrd;

with Memo1 do begin
  SelLength := 0;
  SelStart := <daar waar je de cursor wilt hebben>
  Clipboard.AsText := 'blablabla';
  PasteFromClipboard;
end;

  • Crysania
  • Registratie: September 2000
  • Laatst online: 17-09 08:05
een eigen undo functie maken is ook wel handig, kun je bijvoorbeeld vaker undo-en, met meerdere variabelen die bijvoorbeeld 5 acties onthouden. anders undo je je undo (vaag die laatste 4 woorden)

Verwijderd

Op donderdag 01 november 2001 20:48 schreef Afterlife het volgende:
Wanneer je rechtstreeks de Lines of Text van een Memo wijzigt, werkt Undo inderdaad niet.
Doe je 't via het Clipboard, dan weet Windows er ook van, en werkt 't wel. (Undo stuurt gewoon een EM_UNDO message naar de handle van 't Memo control).
code:
1
2
3
4
5
6
7
8
uses Clipbrd;

with Memo1 do begin
  SelLength := 0;
  SelStart := <daar waar je de cursor wilt hebben>
  Clipboard.AsText := 'blablabla';
  PasteFromClipboard;
end;
lekker zo'n stukje code.
Mij is geleerd van het clipboard af te blijven, omdat de gebruiker daar zelf nog wel eens wat op kon hebben staan.

Is het dan niet errug prutserig als een programma z'n undo info op het clipboard zet :?

lijkt mij wel...

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:46

Creepy

Tactical Espionage Splatterer

Op donderdag 01 november 2001 20:13 schreef De_Vraag_Der_Vragen het volgende:
Heel raar probleem hier als je nu text in een memo typt dan kun je dan ongedaan maken met de undo functie, maar voeg je nu zelf een lijn toe door memo1.lines.add('blablabla');
dan werkt de undo niet meer. De boolean CanUndo geeft op dit moment dan ook aan false aan.

Moet er een andere boolean gezet worden zodat de memo weet dat undo weer mogelijk is ?

Wat is hier de oplossing voor want ik kom er niet uit ?
Kan je nog wel undo'en als je text toevoegt m.b.v de seltext property?
code:
1
2
3
memo.selstart:=0; //cursor posisitie zetten
memo.sellength:=0; // geen selectie
memo.seltext:='Hiero de tekst voor in je memo';

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Op donderdag 01 november 2001 20:48 schreef Afterlife het volgende:
Wanneer je rechtstreeks de Lines of Text van een Memo wijzigt, werkt Undo inderdaad niet.
Doe je 't via het Clipboard, dan weet Windows er ook van, en werkt 't wel. (Undo stuurt gewoon een EM_UNDO message naar de handle van 't Memo control).
code:
1
2
3
4
5
6
7
8
uses Clipbrd;

with Memo1 do begin
  SelLength := 0;
  SelStart := <daar waar je de cursor wilt hebben>
  Clipboard.AsText := 'blablabla';
  PasteFromClipboard;
end;

Cool het werkt ga is ff mee sleutelen en misschien toch wel een eigen undo functie !!

Verwijderd

Op vrijdag 02 november 2001 10:06 schreef Razor_Blade het volgende:
lekker zo'n stukje code.
Mij is geleerd van het clipboard af te blijven, omdat de gebruiker daar zelf nog wel eens wat op kon hebben staan.
Heb de code expres een beetje simpel gehouden, omdat ik vermoedde dat de topic opener niet zo'n ervaren Delphi/Windows programmeur was. :)
Maar 't kan natuurlijk ook via een eigen tijdelijk clipboard:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure InsertInMemo(Memo: TMemo; StartPos: integer; Text: string);
var
  CurrentClipboard, TempClipboard: TClipboard;
begin
  with Memo do begin
    SelLength := 0;
    SelStart := StartPos;
    CurrentClipboard := Clipboard;
    TempClipboard := TClipboard.Create;
    try
    SetClipboard(TempClipboard);
    Clipboard.AsText := Text;
    PasteFromClipboard;
    finally
    SetClipboard(CurrentClipboard);
    TempClipboard.Free;
    end;
  end;
end;

Ter plekke verzonnen, dus geen garantie dat 't werkt...
Is het dan niet errug prutserig als een programma z'n undo info op het clipboard zet :?
Valt mee. Je zet niet je undo info op 't clipboard, maar via 't clipboard laat je Windows weten dat er iets te undo-en valt. Via de Lines of Text properties van TMemo lukt dat niet, en dit leek me de manier die het gemakkelijkst te begrijpen was. Niet iedereen is even thuis in het sturen van Windows messages naar handles... :)

Verwijderd

Topicstarter
Op vrijdag 02 november 2001 22:12 schreef Afterlife het volgende:

[..]

Heb de code expres een beetje simpel gehouden, omdat ik vermoedde dat de topic opener niet zo'n ervaren Delphi/Windows programmeur was. :)
Nou ik weet niet waar je dat vandaan haalt maar ik weet meer dan je denkt maar je kan alleen niet alles weten !

Al die tweakers hier hebben het zo hoog in hun bol echt een beetje ziek hoor !
Pagina: 1