![]() |
StringReplace im MDIChild klappt nicht!
Hallo!
Ich habe ein Problem mit Stringreplace in einem Childfenster. Der Quelltext:
Delphi-Quellcode:
Der Quelltext liegt auf einer anderen Form. Das Childfenster verliert beim Aufruf
procedure TForm3.Button1Click(Sender: TObject);
begin if ActiveMDIChild <> nil then begin if (Checkbox1.Checked) and (Checkbox3.Checked) then begin TMDIChild(ActiveMDIChild).SynEdit1.SelText := StringReplace(TMDIChild(ActiveMDIChild).SynEdit1.SelText,Edit1.Text,Edit2.Text,[rfReplaceAll]); end den Focus. Geht das deswegen nicht? Wie kann ich das ändern? |
Re: StringReplace im MDIChild klappt nicht!
Wenn das Childfenster den Focus verliert und ActiveMDIChild das aktuelle sein soll, dann wirds so wohl nicht gehen.
Ist das betreffende Childfenster denn nicht irgendwo über eine Variable referenziert? Ich nehm mal an, es gibt mehrere ChildFenster und nur eine TForm3. Dann leg doch eine Variable MyActiveMDIChild an und setzt sie, wenn betreffendes Childfenster aktiv ist. So weist Du nach verlorenem Focus, welches das letzt Childfenster war. |
Re: StringReplace im MDIChild klappt nicht!
Hi,
ich schätze mal TForm3 ist nicht dein Hauptformular, oder? ![]() ![]() |
Re: StringReplace im MDIChild klappt nicht!
Wenn ich mich recht entsinne, ist MdiChildren[0] das zuletzt aktivierte ChildForm.
Somit könntest du also statt ActiveMdiChild, MdiChildren[0] probieren. Ist dein Such dialog ebenfalls ein MdiChild wäre es demnach MdiChild[1], aber hier fängt dann das Gefrickel an... :mrgreen: btw: Ich habe MDI+VCL vor Äonen das letzte Mal ngefasst, deshalb wäre ich nicht überrascht, dass sich das oben geschriebene als nett gemeinter Bullshit entpuppt. ;) |
Re: StringReplace im MDIChild klappt nicht!
@ Robert_G
Schade, klappt leider nicht. Wäre sehr schön einfach gewesen :stupid: Die anderen Vorschläge teste ich später mal.... Danke |
Re: StringReplace im MDIChild klappt nicht!
Hi Grolle,
rate mal, warum ich einen Link dazu gepostet habe, den du dir natürlich nicht durchgeslesen hast? Du rufst die Funktionen innerhalb von TForm3 auf, lässt aber gleichzeitig die Formularbezeichner weg, somit schreibt der Compiler:
Delphi-Quellcode:
Und Form3 ist mit Garantie nicht dein Hauptforumlar, oder?
Form3.ActiveMDiChild.Eigenschaft;
Bitte im Thread von oben weiterlesen... :angel2: |
Re: StringReplace im MDIChild klappt nicht!
Hi Bigg!
Ich habe jetzt alles gelesen. Hat dann aber immer noch nicht geklappt und zwar:
Delphi-Quellcode:
Die Abfrage kommt jetzt direkt beim Aufruf von Form3 und nicht erst wenn man
procedure TForm3.Button1Click(Sender: TObject);
begin if ActiveMDIChild <> nil then // Zu diesem Zeitpunkt kann kein aktives MDIChild existieren, begin // weil -> Form3 ist aktiv! if (Checkbox1.Checked) and (Checkbox3.Checked) then begin TMDIChild(ActiveMDIChild).SynEdit1.SelText := StringReplace(TMDIChild(ActiveMDIChild).SynEdit1.SelText,Edit1.Text,Edit2.Text,[rfReplaceAll]); end auf den Button klickt. Viele Grüße.... |
Re: StringReplace im MDIChild klappt nicht!
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Grolle,
du machst noch immer den selben Fehler. Im Bild unten sind diese Fehler deutlich gekennzeichnet. PS: Du schreibst übrigens sehr umständlich. Wozu zwei TypeCasts? Einer tut es doch auch! mfg bigg |
Re: StringReplace im MDIChild klappt nicht!
Hi!
Nein, ich habe den Fehler nicht nochmal gemacht. Ich habe den Source oben aus dem Beitrag rauskopiert. Der war natürlich noch falsch. :oops: Viele Grüße |
Re: StringReplace im MDIChild klappt nicht!
Ist dein Problem denn damit nun gelöst?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz