---
title: "funktioner..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/27781-funktioner"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Alvar s"
published: "2000-06-08T17:14:00.000Z"
updated: "2000-06-29T16:12:00.000Z"
replies: 14
views: 567
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/27781-funktioner"
---

# funktioner...

## #1 — Alvar s, 2000-06-08T17:14Z

[http://user.tninet.se/\~xkk718a/richedit.zip](http://user.tninet.se/~xkk718a/richedit.zip) 

Håller just nu på med textprogrammet men nu kommer jag inte längre ![](http://cgi.webforum.nu/program/wf/frown.gif) Behöver hjälp med följande saker:

1: Oändlig undo/redo
2: Infogning av bild, dvs: ett kommando som gör att man kan infoga en bild..
3: Fullständig printer... Använder en exempelfil från borland där printer är begränsat ![](http://cgi.webforum.nu/program/wf/frown.gif)
4: Printer Setup kommando, nybörjare på det här ![](http://cgi.webforum.nu/program/wf/smile.gif)
5: Förhandsgransknings kommando ![](http://cgi.webforum.nu/program/wf/smile.gif)
6: Teckensnitten ser inte lika ut som i tex: word, beror det på delphi? Går det kanske att fixa på nåt sätt??

Ganska mycket begärt men hoppas nån vill fixa det ![](http://cgi.webforum.nu/program/wf/wink.gif) Om ni fixar npt, kan ni posta en url till det modifierade programmet?? ![](http://cgi.webforum.nu/program/wf/smile.gif)

\[Redigerat av Alvar s den 08 jun 2000\]

Permalänk: https://www.webforum.nu/p/27781

## #2 — Alpha II, 2000-06-08T19:00Z

För att göra en ångra funktion måste du använda Arrays! Vilket inte jag vet riktigt hur man använder ![](http://cgi.webforum.nu/program/wf/frown.gif)

Permalänk: https://www.webforum.nu/p/400121

## #3 — WiNNe, 2000-06-09T10:40Z

Du måste inte använda Arrays. 

Jag skulle använt länkade listor för att hålla reda på ändringar i texten/typsnitt och sånt. Helst en dubbellänkad lista men det kan vara knepigt att fixa om man inte är riktigt hemma på det. 

Dynamiska arrays går bra men det är snyggare med listor. 

Bygg upp en klass med olika parametrar på ändringar som t.ex. stil,typsnitt,tecken osv. allt du vill kunna undo. Sen får du ha två listor en för undo en för redo, allting du undo:ar flyttar du till redo listan och tvärtom. 

Till Alpha II: Om du inte riktigt vet hur man ska göra är det inte bra att bara kläcka ur sig något.

Permalänk: https://www.webforum.nu/p/400122

## #4 — Alvar s, 2000-06-09T16:30Z

Jag fattar ingenting ![](http://cgi.webforum.nu/program/wf/wink.gif)

Kan du modifiera filen jag nämnde i mitt första inlägg och posta en url?? Jag är verkligen nybörjare på det här så jag kommer nog inte att fatta nåt utan en exempel fil ![](http://cgi.webforum.nu/program/wf/smile.gif)

\[Redigerat av Alvar s den 09 jun 2000\]

Permalänk: https://www.webforum.nu/p/400123

## #5 — WiNNe, 2000-06-10T17:34Z

Ska fixa några exempel på länkade listor, men det kan ta några dagar så...

Permalänk: https://www.webforum.nu/p/400124

## #6 — Alpha II, 2000-06-11T13:41Z

Jag vet hur arrays funkar men inte i Delphi!!!!!!

Permalänk: https://www.webforum.nu/p/400125

## #7 — svampträsk, 2000-06-15T16:53Z

kan du inte "fuska" lite och använda TMemo funktioner så mycket som möjligt?

Svar till Alpha II:

Det finns många bra böcker t.ex.
"Delphi 2 programmering" och
"Programering i Delphi"
m.m.

kolla på ditt bibliotek!

Permalänk: https://www.webforum.nu/p/400126

## #8 — Alpha II, 2000-06-15T17:57Z

Nu vet jag hur Arrays funkar i  Delphi ![](http://cgi.webforum.nu/program/wf/smile.gif)

Permalänk: https://www.webforum.nu/p/400127

## #9 — WiNNe, 2000-06-17T14:36Z

Här är ett litet enkelt exempel på oändlig undo-redo funktion för en richedit komponent.

Snabbt ihopslängt men det fungerar, har man stora texter bör man fundera ut ett smartare sätt som inte kräver så mycket minne eller kanske begränsa sig till 10 steg undo eller nåt.

På formuläret ska det finns två knappar och en richedit. Glöm inte att länka eventen från formen, ska inte vara så svårt att få det att funka.

\---------------------------------------

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    procedure RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;
  Undo,Redo : TList;

implementation

{$R \*.DFM}

procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var temp : TRichEdit;
begin
     temp:=TRichEdit.Create(self);
     temp.Text:=Richedit1.text;
     Undo.Add(temp);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     Undo:=TList.Create;
     Redo:=TList.Create;
end;

procedure TForm1.Button2Click(Sender: TObject); // UNDO
var temp,temp2 : TRichEdit;
begin
     If undo.count\>0 then
     begin
          temp:=undo.items\[undo.count-1\];

          // spara undan nuvarande text för "redo"
          temp2:=TRichEdit.Create(self);
          temp2.text:=richedit1.text;
          redo.add(temp2);

          // gör "undo" och radera ur listan
          richedit1.text:=temp.text;
          undo.delete(undo.count-1);
     end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i : integer;
begin
     // städa upp efter
     For i:=undo.count-1 downto 0 do undo.Delete(undo.count-1);
     For i:=redo.count-1 downto 0 do redo.Delete(redo.count-1);
     Undo.Free;
     Redo.Free;
end;

procedure TForm1.Button1Click(Sender: TObject); // REDO
var temp,temp2 : TRichEdit;
begin
     If redo.count\>0 then
     begin
          temp:=redo.items\[redo.count-1\];

          // spara undan nuvarande text för "undo"
          temp2:=TRichEdit.Create(self);
          temp2.text:=richedit1.text;
          undo.add(temp2);

          // gör "undo" och radera ur listan
          richedit1.text:=temp.text;
          redo.delete(redo.count-1);
     end;
end;

end.

\---------------------------------------
Det finns säkert en massa andra bättre sätt att lösa det här på och med vanliga arrays går det inte att få oändlig undo.

Hoppas det hjälper...

Permalänk: https://www.webforum.nu/p/400128

## #10 — Alpha II, 2000-06-17T14:50Z

Dynamiska Arrays, då? ![](http://cgi.webforum.nu/program/wf/tounge.gif)

Permalänk: https://www.webforum.nu/p/400129

## #11 — WiNNe, 2000-06-22T16:13Z

Finns ingen anledning till att använda
dynamiska arrays här. Om man optimerar mitt exempel ovan lite räcker det utmärkt. Det är ju en dynamisk lösning då den endast begränas av tillgängligt minne i Windows. När man programmerar objektoriterat i Delphi behövs inte arrays, det blir bättre utan.

Permalänk: https://www.webforum.nu/p/400130

## #12 — Alpha II, 2000-06-22T16:52Z

Okej jag ger mig! ![](http://cgi.webforum.nu/program/wf/wink.gif)

Permalänk: https://www.webforum.nu/p/400131

## #13 — Alvar s, 2000-06-25T18:53Z

En fråga till ![](http://program.webforum.nu/wf/smile.gif)

7: Hur gör man länkar i delphi? Måste man skriva nåt speciellt för hyperlänkar?

Permalänk: https://www.webforum.nu/p/400132

## #14 — WiNNe, 2000-06-29T11:11Z

Hyperlänkar finns det redan färdiga 
free-ware komponenter som fixar. 
Kolla på [www.torry.ru](http://www.torry.ru)  eller Delphi Super Page.

\-------------------
[winne.net](http://www.winne.net)

\[Redigerat av WiNNe den 29 jun 2000\]

Permalänk: https://www.webforum.nu/p/400133

## #15 — Alpha II, 2000-06-29T16:12Z

ShellExecute(Application.Handle, nil, 'http://www.sida.se'), nil, nil, SW_SHOWMAXIMIZED);

du kan ochså använda mailto!

Permalänk: https://www.webforum.nu/p/400134

---

Tråden på webben: https://www.webforum.nu/amne/programmering/27781-funktioner
