Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Fenster mit Show öffnen und Daten daraus benutzen


bigbee - Sa 07.10.06 20:29
Titel: Fenster mit Show öffnen und Daten daraus benutzen
Moin moin aus dem Westerwald,

ich habe in meinem MDI-Hauptformular HauptForm1 ein MDI-Child AnwendungForm1 und ein zweites Formular HTMLForm1. Auf letzterem befinden sich diverse Edits und Buttons. Dieses wird mit HTMLForm1.Show aufgerufen. Funktioniert auch alles wunderbar.
Drückt nun der Benutzer in der HTMLForm1 einen Button "Übernehmen", so soll Text aus einer Edit1 in das MDI-Child übernommen werden. Hier tritt dann eine EAccessViolation auf.

Mein derzeitiger Versuch:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure THTMLForm1.UebernehmenButton1Click(Sender: TObject);
var zeile: string;
begin   {Übernehmen wurde gedrückt}
 zeile:='<HTML';
 if versionedit1.Text<>''
    then zeile:=zeile+' version="'+versionedit1.Text+'"';
 case richtungradiogroup1.ItemIndex of   {ab hier kommen die Universalattribute für Internationalisierung}
  0: zeile:=zeile+' dir="ltr"';
  1: zeile:=zeile+' dir="rtl"'
 end;
 if sprachecombobox1.Text<>''
    then zeile:=zeile+' lang="'+sprachecombobox1.Text+'"';
 zeile:=zeile+'>';
 anwendungform1.EditorRichEdit1.Lines[Tag]:=zeile
end;



Wie kann ich das bewerkstelligen?
Ich möchte HTMLForm1 übrigens nicht modal aufrufen!

Ich hoffe, ich habe mich nicht zu kompliziert ausgedrückt und danke schon mal im voraus für evtl. Ideen.


alias5000 - Mo 09.10.06 13:04
Titel: Re: Fenster mit Show öffnen und Daten daraus benutzen
user profile iconbigbee hat folgendes geschrieben:
Drückt nun der Benutzer in der HTMLForm1 einen Button "Übernehmen", so soll Text aus einer Edit1 in das MDI-Child übernommen werden.


Was ist denn jetzt dein Hauptformular und was sind MDI-Childs zu welcher Form? Ich blick da nich ganz durch...

Gruß alias5000


bigbee - Mo 09.10.06 21:44

Das MDI-Hauptformular ist HauptForm1. AnwendungForm1 ist ein MDI-Child. Bei dem Formular HTMLForm1 handelt es sich um ein "normales" Formular, mit der Eigenschaft "AlwaysStayOnTop". Es ist somit kein MDI-Child.
Konnte ich ein wenig Klarheit in das Dunkel bringen?


alias5000 - Mo 09.10.06 22:02
Titel: Re: Fenster mit Show öffnen und Daten daraus benutzen
Jop, jetzt iss mir klar ;)

user profile iconbigbee hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure THTMLForm1.UebernehmenButton1Click(Sender: TObject);
var zeile: string;
begin   {Übernehmen wurde gedrückt}
 zeile:='<HTML';
 if versionedit1.Text<>''
    then zeile:=zeile+' version="'+versionedit1.Text+'"';
 case richtungradiogroup1.ItemIndex of   {ab hier kommen die Universalattribute für Internationalisierung}
  0: zeile:=zeile+' dir="ltr"';
  1: zeile:=zeile+' dir="rtl"'
 end;
 if sprachecombobox1.Text<>''
    then zeile:=zeile+' lang="'+sprachecombobox1.Text+'"';
 zeile:=zeile+'>';
 anwendungform1.EditorRichEdit1.Lines[Tag]:=zeile
end;


Die wahrscheinlichste Stelle für ne AccessViolation (AV) ist wohl die markierte. Kannst du sicherstellen, dass die angesprochene Zeile auch existiert? Wenn (EditorRichEdit1.Lines.Count - 1) < tag dann gibts ne AV, weil du auf eine nicht existente Zeile zugreifst. Füge sie dann ggf. einfach mit ...Lines.Add hinzu.

Gruß alias5000


bigbee - Sa 14.10.06 08:27

Guten Morgen und vielen Dank für den Tip.

Stimmt soweit die Vermutung. Es lag aber nicht daran, dass Tag zu gross geworden ist, sondern, dass zu diesem Zeitpunkt evtl. das Formular AnwendungForm1 noch gar nicht erstellt ist.
Ich habe jetzt dafür gesorgt, dass das Formular immer rechtzeitig vorhanden ist und schon funktioniert es. :-) :lol:

Jetzt hab' ich allerdings das nächste Problem. Mein Extraktionsalgorithmus hat irgendwo einen Fehler... :?
Das finde ich noch selbst raus.

Bis dahin und nochmals DANKE.