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