Autor Beitrag
Goaznic
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win XP, Win 7
Delphi 5, Delphi 10
BeitragVerfasst: Fr 16.09.11 13:10 
Hey, ich bin's mal wieder. :P

Ich habe in meinem Programm mehrere Formen. Von Form1 aus kann ich ganz normal auf die anderen Formen zugreifen, muss dafür ja lediglich Form2 usw den uses zufügen ...
Aber wie kann ich von Form2 auf Form1 zugreifen? Da geht das nicht. Ich hab i-wo gelesen, dass man das uses unter dem implementations-teil machen muss, aber auch damit habe ich keinen zugriff auf form1-komponenten.
Bsp.: Ich habe ein memForm2 und möchte per Klick auf btnForm2 den Inhalt von memForm2 in das memForm1 schreiben.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 16.09.11 13:16 
Zeig doch mal ein paar Zeilen Quellcode. Und sag uns, was "kein Zugriff" heißt. Wie lautet die Fehlermeldung genau?

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Goaznic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win XP, Win 7
Delphi 5, Delphi 10
BeitragVerfasst: Fr 16.09.11 13:28 
Naja, also bei Form1 (uCrossword) hab ich erstmal die beiden anderen Formen (uSearches und uGridSize) unter "uses" hinzugefügt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
unit uCrossword;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, AppEvnts, Menus, ComCtrls, Math, uSearches,
  uGridSize;


und dann hab ich in Form1 ein Menü. wenn man in dem Menü z.B. auf "Suchbegriffe erstellen" klickt, dann soll sich ein neues Fenster öffnen, also die Form "uSearches". Das hab ich wie folgt gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFormMain.Begrifflisteerstellen1Click(Sender: TObject);
begin
  FormSearches.Visible := True;
end;


Und jetzt hab ich in dieser neuen Form halt das Memo mit Begriffen und ich möchte, dass die Begriffe, die dort drinn stehen, per Klick auf einen Button in das Memo auf der MainForm geschrieben werden.




Jetzt hab ich irgendwo wie gesagt gelesen, dass man bei der zweiten Form einfach unter implementation nochmal uses uCrossword; schreiben müsste.
Das hab ich gemacht.
aber dann müsste ich doch im Quelltext von Form2 einfach schreiben können TFormMain.memTerms.lines.add(memSearches.lines). das geht i-wie nicht ...
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 16.09.11 13:34 
Ich persönlich mache sowas immer gern etwas anders. Ich würde wollen, dass man das Suchformular überall im Programm aufrufen kann. Dazu ist es notwendig, dass es dem Suchformular egal sein muss, WER es geöffnet hat.
Bei Deiner Vorgehensweise, muss das Suchformular wissen, wohin das Ergebnis gehört (nämlich in die erste Form).

Daher:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if FormSearches.ShowModal = mrOk then 
begin

  DeinMemo.Text := FormSearches.DeinMemo.Text;

end;

So muss das aufgerufene Formular gar nicht vom aufrufenden Formular wissen.

Im Ok-Button vom Suchformular fehlt dann nur ncoh ein:
ausblenden Delphi-Quelltext
1:
ModalResult := mrOk					


Und fertig. So vermeidest Du diese Zirkelbezüge.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Goaznic
Goaznic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win XP, Win 7
Delphi 5, Delphi 10
BeitragVerfasst: Fr 16.09.11 13:47 
Das versteh ich nicht ganz. Wo trag ich denn den ersten teil ein? Also das mit if FormSearches ...
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 16.09.11 13:48 
in TFormMain.Begrifflisteerstellen1Click

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Goaznic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win XP, Win 7
Delphi 5, Delphi 10
BeitragVerfasst: Fr 16.09.11 13:52 
Fehlermeldung: Aus einem sichtbaren Fenster kann kein modales gemacht werden.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 16.09.11 13:54 
Hast Du die Zeile FormSearches.Visible := True; entfernt? Das solltest Du tun.
Denn ShowModal zeigt das Formular auch an. Daher kann man auf das .visible := true verzichten.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Goaznic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win XP, Win 7
Delphi 5, Delphi 10
BeitragVerfasst: Fr 16.09.11 13:59 
Stimmt, die stand da noch...
Ich hab allerdings grad per Zufall die Lösung für meine Variante gefunden. :D
Naja, funktioniert beides. Also vielen Dank! :)
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 16.09.11 14:00 
user profile iconGoaznic hat folgendes geschrieben Zum zitierten Posting springen:
Naja, funktioniert beides. Also vielen Dank! :)

Meine Variante ist aber aus oben genannten Gründen die schönere. :P

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)