webForumDet fria alternativet

funktioner...

14 svar · 539 visningar · startad av Alvar s

Alvar sMedlem sedan mars 2000398 inlägg
#1

http://user.tninet.se/~xkk718a/richedit.zip

Håller just nu på med textprogrammet men nu kommer jag inte längre 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
4: Printer Setup kommando, nybörjare på det här
5: Förhandsgransknings kommando
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 Om ni fixar npt, kan ni posta en url till det modifierade programmet??

[Redigerat av Alvar s den 08 jun 2000]

Alpha IIMedlem sedan maj 20002 993 inlägg
#2

För att göra en ångra funktion måste du använda Arrays! Vilket inte jag vet riktigt hur man använder

------------------
<!-- ALPHA II -->

UIN: 58287913 - för alla!

WiNNeMedlem sedan maj 2000192 inlägg
#3

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.

------------------
-------------------
http://winne.home.dhs.org

Alvar sMedlem sedan mars 2000398 inlägg
#4

Jag fattar ingenting

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

[Redigerat av Alvar s den 09 jun 2000]

WiNNeMedlem sedan maj 2000192 inlägg
#5

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

------------------
-------------------
http://winne.home.dhs.org

Alpha IIMedlem sedan maj 20002 993 inlägg
#6

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

------------------
<!-- ALPHA II -->

UIN: 58287913

svampträskMedlem sedan juni 200070 inlägg
#7

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!

Alpha IIMedlem sedan maj 20002 993 inlägg
#8

Nu vet jag hur Arrays funkar i Delphi

------------------
<!-- ALPHA II -->

UIN: 58287913

WiNNeMedlem sedan maj 2000192 inlägg
#9

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...

------------------
-------------------
http://winne.home.dhs.org

Alpha IIMedlem sedan maj 20002 993 inlägg
#10

Dynamiska Arrays, då?

------------------
<!-- ALPHA II -->

UIN: 58287913

WiNNeMedlem sedan maj 2000192 inlägg
#11

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.

------------------
-------------------
http://winne.home.dhs.org

Alpha IIMedlem sedan maj 20002 993 inlägg
#12

Okej jag ger mig!

------------------
Alpha II

UIN: 58287913

Alvar sMedlem sedan mars 2000398 inlägg
#13

En fråga till

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

WiNNeMedlem sedan maj 2000192 inlägg
#14

Hyperlänkar finns det redan färdiga
free-ware komponenter som fixar.
Kolla på www.torry.ru eller Delphi Super Page.

-------------------
winne.net

[Redigerat av WiNNe den 29 jun 2000]

Alpha IIMedlem sedan maj 20002 993 inlägg
#15

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

du kan ochså använda mailto!

------------------
Alpha II

-Glad midsommar! :)

141 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)