Avatar billede betatron Nybegynder
03. september 2002 - 12:18 Der er 3 kommentarer og
1 løsning

4 små spørgsmål

Jeg har det windows-baserede Delphi 6.0.

Her er 4 spørgsmål :)

1.) Jeg er i gang med at lave en tekst-editor (en primitiv af slagsen, ligesom Notepad). I en undermenu til Rediger har jeg Fortryd. Jeg vil gerne have Fortryd til at fortryde den sidste handling. Hvordan gør man??

2.) I den samme tekst-editor har jeg også en undermenu "marker alt". Hvordan får man den til det??

3.) Hvordan indsætter jeg Dato og klokkeslæt?? 

4.) Og hvordan søger jeg i min editor??
Avatar billede hermandsen Juniormester
03. september 2002 - 13:06 #1
Prøv en ActionList på Standard-fanen til at starte med...

Indsæt en MainMenu på din form og dobbeltklik derefter på ActionListen...

Vælg pilen ved siden af New Action-knappen og vælge New standard action fra pop-up'en.

Marker alle dem der står Edit ud for og tryk OK.

Hop tilbage til din menu og åbn Menu-editor'en... Under Action vælger du så den action der skal tildeles til menuitem'en... Så sætter den billede, tekst, genvej og det hele ind... :)

//hermandsen
Avatar billede betatron Nybegynder
03. september 2002 - 13:50 #2
Mange tak hermandsen, det besvarede en hel del og lidt til.

Men jeg mangler stadigvæk at finde ud af hvordan man indsætter Dato og klokkeslæt. Og hvordan jeg ved hjælp af en FindDialog søger i teksten.
Kan du besvarer dem?? Eller andre..??
Avatar billede hermandsen Juniormester
03. september 2002 - 14:26 #3
Jeg kan ikke lige huske hvilket spørgsmål det er fra, men det har været før på Eksperten det med Find/Replace-dialogs...

Her er i hvert fald et eksempel:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    FindDialog1: TFindDialog;
    ReplaceDialog1: TReplaceDialog;
    MainMenu1: TMainMenu;
    Edit1: TMenuItem;
    Find1: TMenuItem;
    Replace1: TMenuItem;
    procedure Find1Click(Sender: TObject);
    procedure Replace1Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Find1Click(Sender: TObject);
begin
FindDialog1.FindText := RichEdit1.SelText;
FindDialog1.Execute;
end;

procedure TForm1.Replace1Click(Sender: TObject);
begin
ReplaceDialog1.FindText := RichEdit1.SelText;
ReplaceDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
st: TSearchTypes;
newpos: integer;
cd: TFindDialog;
begin

cd := (Sender as TFindDialog);

if frMatchCase in cd.Options then
  st := st+[stMatchCase];

if frWholeWord in cd.Options then
  st := st+[stWholeWord];

if RichEdit1.SelLength > 0 then
  RichEdit1.SelStart := RichEdit1.SelStart + 1;

newpos := RichEdit1.FindText(cd.FindText,
                    RichEdit1.SelStart,
                    Length(RichEdit1.Text),
                    st);

if newpos <> -1 then
  begin
  RichEdit1.SelStart := newpos;
  RichEdit1.SelLength := Length(cd.FindText);
  end
else
  begin
  MessageDlg('Færdig',mtInformation,[mbOK],0);
  RichEdit1.SelStart := 0;
  end;

end;

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
begin
if RichEdit1.SelLength = 0 then
  FindDialog1Find(Sender)
else
  begin
  RichEdit1.SelText :=  ReplaceDialog1.ReplaceText;
  FindDialog1Find(Sender);
  end;

if frReplaceAll in ReplaceDialog1.Options then
  while (RichEdit1.SelLength <> 0) do
    ReplaceDialog1Replace(Sender);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.SelStart := 0;
end;

end.


Det er tyvstjålet og der er ikke et komma der ikke var fra det spørgsmål, men det burde virke, så det betyder vel egentlig ikke så meget... Mener det var stoney, cms eller dkn der lavede det, men er ikke helt sikker... :)


Det andet kan du gøre således:

var
  S: String;
  P: TPoint;
begin
  P := Memo1.CaretPos;
  S := Memo1.Lines.Strings[P.y];
  Insert(DateTimeToStr(Now), S, P.x);
  Memo1.Lines.Delete(P.y);
  Memo1.Lines.Insert(P.y, S);
end;

//hermandsen
Avatar billede hermandsen Juniormester
13. september 2002 - 10:49 #4
Sker der mere?
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