Replacedialog vil ikke søge!

Tags:    delphi

Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!

Her er koden:
Fold kodeboks ind/udKode 


Mem er en RichEdit!

MVH.
Armen L.A.



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!

Her er koden:
Fold kodeboks ind/udKode 


Mem er en RichEdit!

MVH.
Armen L.A.

Jeg kan ikke gennemskue din kode, men her er en funktion til at søge og erstatte:

<pre>procedure TForm1.SearchAndReplace(RichEdit: TRichedit; InSearch, InReplace: string; ReplaceAll: Boolean; Start: Integer = 0);
var X, ToEnd: integer;
begin
Screen.Cursor := crHourglass;
with RichEdit do
begin
X := Start;
ToEnd := length(Text);
X := FindText(inSearch, X, ToEnd, []);
while X <> -1 do
begin
SetFocus;
SelStart := X;
SelLength := length(inSearch);
SelText := InReplace;
if ReplaceAll then
X := FindText(inSearch, X + length(InReplace), ToEnd, [])
else X := -1;
end;
end;
Screen.Cursor := crDefault;
end;</pre>

For at bruge den skriver du:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False);

eller hvis du vil starte fra et bestemt sted:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False, RichEdit1.SelStart);

False viser at der ikke skal bruges ReplaceAll.

Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk

Det skal ligesom markere teksten foer den replacer og der skal vaere en funktion som bare markere den uden at replace.

MVH.
Armen L.A.


Det er skam nemt nok.

SelText := InReplace;

Denne linie gør at den markerede tekst bliver erstattet af den nye tekst, du skal bare lave en MessageBox med en if kommando fx:

MessageBox(Handle, 'Vil du erstatte denne tekst?', 'Søg og Erstat', MB_ICONQUESTION + MB_YESNO) = mrYes then
SelText := InReplace;



Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!

Her er koden:
............

Mem er en RichEdit!

MVH.
Armen L.A.


Kan du ikke bare bruge en ActionList den kan også gøre det..




Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!

Her er koden:
............

Mem er en RichEdit!

MVH.
Armen L.A.

Kan du ikke bare bruge en ActionList den kan også gøre det..


Nej, kan jeg ikke.. og jeg giver ikke op med min kode..
Vil gerne vide hvad der er galt!

MVH.
Armen L.A.




Argh! Der er 56 der har set traaden, men ingen kan svare :(
Der maa vaere en !

MVH.
Armen L.A.



Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!

Her er koden:
Fold kodeboks ind/udKode 


Mem er en RichEdit!

MVH.
Armen L.A.


Jeg kan ikke gennemskue din kode, men her er en funktion til at søge og erstatte:

<pre>procedure TForm1.SearchAndReplace(RichEdit: TRichedit; InSearch, InReplace: string; ReplaceAll: Boolean; Start: Integer = 0);
var X, ToEnd: integer;
begin
Screen.Cursor := crHourglass;
with RichEdit do
begin
X := Start;
ToEnd := length(Text);
X := FindText(inSearch, X, ToEnd, []);
while X <> -1 do
begin
SetFocus;
SelStart := X;
SelLength := length(inSearch);
SelText := InReplace;
if ReplaceAll then
X := FindText(inSearch, X + length(InReplace), ToEnd, [])
else X := -1;
end;
end;
Screen.Cursor := crDefault;
end;</pre>

For at bruge den skriver du:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False);

eller hvis du vil starte fra et bestemt sted:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False, RichEdit1.SelStart);

False viser at der ikke skal bruges ReplaceAll.

Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!

Her er koden:
Fold kodeboks ind/udKode 


Mem er en RichEdit!

MVH.
Armen L.A.

Jeg kan ikke gennemskue din kode, men her er en funktion til at søge og erstatte:

<pre>procedure TForm1.SearchAndReplace(RichEdit: TRichedit; InSearch, InReplace: string; ReplaceAll: Boolean; Start: Integer = 0);
var X, ToEnd: integer;
begin
Screen.Cursor := crHourglass;
with RichEdit do
begin
X := Start;
ToEnd := length(Text);
X := FindText(inSearch, X, ToEnd, []);
while X <> -1 do
begin
SetFocus;
SelStart := X;
SelLength := length(inSearch);
SelText := InReplace;
if ReplaceAll then
X := FindText(inSearch, X + length(InReplace), ToEnd, [])
else X := -1;
end;
end;
Screen.Cursor := crDefault;
end;</pre>

For at bruge den skriver du:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False);

eller hvis du vil starte fra et bestemt sted:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False, RichEdit1.SelStart);

False viser at der ikke skal bruges ReplaceAll.

Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk


Det skal ligesom markere teksten foer den replacer og der skal vaere en funktion som bare markere den uden at replace.

MVH.
Armen L.A.



Når jeg klikker på FindNext i min Replace dialog, så sker der intet.. det er den eneste fejl, alt andet virker!

Her er koden:
Fold kodeboks ind/udKode 


Mem er en RichEdit!

MVH.
Armen L.A.

Jeg kan ikke gennemskue din kode, men her er en funktion til at søge og erstatte:

<pre>procedure TForm1.SearchAndReplace(RichEdit: TRichedit; InSearch, InReplace: string; ReplaceAll: Boolean; Start: Integer = 0);
var X, ToEnd: integer;
begin
Screen.Cursor := crHourglass;
with RichEdit do
begin
X := Start;
ToEnd := length(Text);
X := FindText(inSearch, X, ToEnd, []);
while X <> -1 do
begin
SetFocus;
SelStart := X;
SelLength := length(inSearch);
SelText := InReplace;
if ReplaceAll then
X := FindText(inSearch, X + length(InReplace), ToEnd, [])
else X := -1;
end;
end;
Screen.Cursor := crDefault;
end;</pre>

For at bruge den skriver du:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False);

eller hvis du vil starte fra et bestemt sted:

SearchAndReplace(RichEdit1, 'Søg', 'Erstat', False, RichEdit1.SelStart);

False viser at der ikke skal bruges ReplaceAll.

Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk

Det skal ligesom markere teksten foer den replacer og der skal vaere en funktion som bare markere den uden at replace.

MVH.
Armen L.A.

Det er skam nemt nok.

SelText := InReplace;

Denne linie gør at den markerede tekst bliver erstattet af den nye tekst, du skal bare lave en MessageBox med en if kommando fx:

MessageBox(Handle, 'Vil du erstatte denne tekst?', 'Søg og Erstat', MB_ICONQUESTION + MB_YESNO) = mrYes then
SelText := InReplace;



Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk


Kan du ikke lige komme med en ny kode hvor den marker det søgte og spørger om man vil replace.. jeg kan sku ikke få det til at virke :( mærkeligt..

MVH.
Armen L.A.



Kan du ikke lige komme med en ny kode hvor den marker det søgte og spørger om man vil replace.. jeg kan sku ikke få det til at virke :( mærkeligt..

MVH.
Armen L.A.


Det kan jeg godt se, det var mig der ikke lige afprøvede min kode. Når beskeden kommer fjerner den markeringen, den kommer kun igen hvis man trykker nej.

Den eneste løsning jeg kan se er at sætte en farve uden om teksten teksten så det ser ud som om at den er markeret og så fjerne farven igen bagefter.

Jeg kunne ikke lige umiddelbart finde ud af hvordan man gør det, men denne kode ændrer farven på teksten så man da i hvert fald kan se hvor det er:

<pre>procedure TForm1.SearchAndReplace(RichEdit: TRichedit; InSearch, InReplace: string; ReplaceAll: Boolean; Start: Integer = 0);
var X, ToEnd: integer;
begin
Screen.Cursor := crHourglass;
with RichEdit do
begin
X := Start;
ToEnd := length(Text);
X := FindText(inSearch, X, ToEnd, []);
while X <> -1 do
begin
SetFocus;
SelStart := X;
SelLength := length(inSearch);
SelAttributes.Color := clHighlight;
if MessageBox(Handle, 'Vil du erstatte denne tekst?', 'Søg og Erstat', MB_ICONQUESTION + MB_YESNO) = mrYes then
SelText := InReplace;
SelAttributes.Color := clWindowText;
if ReplaceAll then
X := FindText(inSearch, X + length(InReplace), ToEnd, [])
else X := -1;
end;
end;
Screen.Cursor := crDefault;
end;</pre>
Emil Melgaard
emil.melgaard@fyrrevang.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



t