Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Memo Feld aus anderem Formular auslesen (https://www.delphipraxis.net/140755-memo-feld-aus-anderem-formular-auslesen.html)

Delphi-Narr 25. Sep 2009 12:13


Memo Feld aus anderem Formular auslesen
 
Hallo, ich habe mir ein Memofeld (Name: Textfeld) in Form1 erstellt. Da schreibt man jetzt was rein und wenn man dann auf Speichern klickt, öffnet sich Form2, Wo der Text aus "Textfeld" in eine Datei geschrieben wird. Wie kann ich das Textfeld auslesen, welches sich in einem anderen Formular befindet?

Delphi-Quellcode:
Textfeld.Lines.SaveToFile(Datei);
Datei ist eine Stringvariable, welche sich folgendermaßen zusammensetzt:

Delphi-Quellcode:
Datei:=('C:\Users\') +Dateiname.text + ('.dat');
Das habe ich als vorherigen Schritt gemacht. C:\Users\ ist das Zielverzeichnis, Dateiname.text ist ein Textfeld mit Eingabe und .dat soll eine beliebige Endung darstellen.
Liebe Grüße!

angos 25. Sep 2009 12:50

Re: Memo Feld aus anderem Formular auslesen
 
Hi,

ich weis noch nicht so ganz was du willst. Vielleicht
Delphi-Quellcode:
AnderesFormular.Textfeld.Lines.SaveToFile(Datei);
Ansonsten beschreib doch mal genauer :)

Gruß
angos

Klaus01 25. Sep 2009 12:52

Re: Memo Feld aus anderem Formular auslesen
 
Hallo,

die Art welche nicht unbedingt schön ist (zirkularer Verweis)

TForm1 in TForm2 einbinden
Form1.TextFeld.savetoFile().

.. oder den Inhalt des Textfeldes irgendwie der Form2 übergeben.

.. oder das Desgin etwas übderdenken.
Warum kann das Memofeld denn nicht in Form1 abgespeichert werden?

Grüße
Klaus

Delphi-Narr 25. Sep 2009 12:55

Re: Memo Feld aus anderem Formular auslesen
 
Vom Prinzip her meine ich das, doch der sagt mir: [Fehler] Speichern.pas(32): Undefinierter Bezeichner: 'Textfeld'

Also Inhalt Formular1:

Memo (Name: Textfeld)

Button (Name: sichern)

ButtonSichern: Zeigt Formular2 über Formular1


Inhalt Forumular2

Editfeld (Name: Dateiname)

Button (Name: bestaetigen)

Buttonbestaetigen: Datei:=('C:\Users\') +Dateiname.text + ('.dat');
Formular1.Textfeld.Lines.SaveToFile(Datei);



Variable Datei wurde global deklariert.

TonyR 25. Sep 2009 13:11

Re: Memo Feld aus anderem Formular auslesen
 
Also um ganz einfach deinen Ansatz zur Lösung zu bringen musst du in deiner Speichern-Formular-Unit unter "Implementation" USES unit1; einfügen, falls der Quelltext deines ersten Forms in Unit1.pas gespeichert ist, ansonsten entsprechendes schreiben ...


Im Speichern Formular beginnst du nun das ansprechen der Komponente Textfeld mit dem Namen des Formulars, also z.B. Form1 ---> sodass du schreiben musst: Form1.Textfeld. ... usw.

Um deine Globale Variable im Speichern Form nutzen zu können muss sie im ersten Form über "Implementation" deklariert sein.

Gruß Tony,

PS: Kleiner Hinweis, da dies zum äußersten Grundlagenwissen gehört, solltest du die vielleicht noch ein paar Grundlagen-tutorials bei http://www.delphi-treff.de/ ansehen ;-)

Delphi-Narr 25. Sep 2009 13:14

Re: Memo Feld aus anderem Formular auslesen
 
Dass ich das Formular referenzieren muss war mir klar, hab ich auch gemacht. Formular1 uses Formular2 und auch andersrum.
Trotzdem klappts nicht...

Und die Variable wird in Formular2 deklariert, also direkt vor Ort. Sollte also auch keine Rolle spielen...

TonyR 25. Sep 2009 13:16

Re: Memo Feld aus anderem Formular auslesen
 
Dann poste doch mal bitte deinen Code.

Forlan 25. Sep 2009 13:17

Re: Memo Feld aus anderem Formular auslesen
 
Mach mal nicht (Name: Textfeld) sondern (aName: Textfeld) oder so^^

Delphi-Narr 25. Sep 2009 13:23

Re: Memo Feld aus anderem Formular auslesen
 
Formular1 (Eingabe)
Delphi-Quellcode:
unit Formular1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls;

type
  TWort = class(TForm)
    Textfeld: TMemo; //<-Hier ist das Textfeld...
    Hauptmenu: TMainMenu;
    Dokument: TMenuItem;
    Neu: TMenuItem;
    Sichern: TMenuItem; //<- Hier ist der Verweis auf Form2
    Oeffnen: TMenuItem;
    Schliessen: TMenuItem;
    Drucken: TMenuItem;
    Extras: TMenuItem;
    EMail: TMenuItem;
    Spende: TMenuItem;
    Hilfe: TMenuItem;
    Hilfedatei: TMenuItem;
    SaveDialog1: TSaveDialog;
    Schriftart: TMenuItem;
    Arial: TMenuItem;
    ComicSansMS: TMenuItem;
    TimesNewRoman: TMenuItem;
    Standard: TMenuItem;
    Textgroesse: TMenuItem;
    G7: TMenuItem;
    G9: TMenuItem;
    G11: TMenuItem;
    G13: TMenuItem;
    G15: TMenuItem;
    G20: TMenuItem;
    G30: TMenuItem;
    procedure SichernClick(Sender: TObject);
    procedure TextfeldChange(Sender: TObject);
    procedure ComicSansMSClick(Sender: TObject);
    procedure ArialClick(Sender: TObject);
    procedure TimesNewRomanClick(Sender: TObject);
    procedure StandardClick(Sender: TObject);
    procedure G7Click(Sender: TObject);
    procedure G9Click(Sender: TObject);
    procedure G11Click(Sender: TObject);
    procedure G13Click(Sender: TObject);
    procedure G15Click(Sender: TObject);
    procedure G20Click(Sender: TObject);
    procedure G30Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Wort: TWort;
  vText: string;
  datei:string;

implementation

uses Speichern;

{$R *.DFM}

procedure TWort.SichernClick(Sender: TObject);
begin
     Speicherdialog.show; //<-Formular2 wird gezeigt
end;

procedure TWort.TextfeldChange(Sender: TObject);
begin
     vText:=Textfeld.Text;
end;

procedure TWort.ComicSansMSClick(Sender: TObject);
begin
     Textfeld.Font.Name:=('Comic Sans MS');
end;

procedure TWort.ArialClick(Sender: TObject);
begin
     Textfeld.Font.Name:=('Arial');
end;

procedure TWort.TimesNewRomanClick(Sender: TObject);
begin
     Textfeld.Font.Name:=('Times New Roman');
end;

procedure TWort.StandardClick(Sender: TObject);
begin
     Textfeld.Font.Name:=('MS Sans Serif');
end;

procedure TWort.G7Click(Sender: TObject);
begin
      Textfeld.Font.Size:=7;
end;

procedure TWort.G9Click(Sender: TObject);
begin
     Textfeld.Font.Size:=9;
end;

procedure TWort.G11Click(Sender: TObject);
begin
     Textfeld.Font.Size:=11;
end;

procedure TWort.G13Click(Sender: TObject);
begin
     Textfeld.Font.Size:=13;
end;

procedure TWort.G15Click(Sender: TObject);
begin
     Textfeld.Font.Size:=15;
end;

procedure TWort.G20Click(Sender: TObject);
begin
     Textfeld.Font.Size:=20;
end;

procedure TWort.G30Click(Sender: TObject);
begin
     Textfeld.Font.Size:=30;
end;

end.




Formular2 (Speicherformular)
Delphi-Quellcode:
unit Speichern;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TSpeicherdialog = class(TForm)
    Dateiname: TEdit; //<-Hier kommt der Dateiname rein, unter dem gespeichert werden soll
    Label1: TLabel;
    Speichern: TButton; //<-In dieser Prozedur kommt die Fehlermeldung
    procedure SpeichernClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Speicherdialog: TSpeicherdialog;
  Datei : string; //<-Meine Variable... Global!!!

implementation
uses Formular1; // heißt eigentlich anders...
{$R *.DFM}

procedure TSpeicherdialog.SpeichernClick(Sender: TObject);
begin
     Datei:=('C:\Users\') +Dateiname.text + ('.dat'); // Klappt wunderbar...
     Formular1.Textfeld.Lines.SaveToFile(Datei);     // Hier die oben genannte Fehlermeldung...
end;

end.

@Forlan: Was soll das bringen???

Forlan 25. Sep 2009 13:29

Re: Memo Feld aus anderem Formular auslesen
 
@ Delphi-Narr

Ich hab das so verstanden das du eine Variable "Name" hast von irgendeinem Typ. Das ist eine häufige Fehlerquelle... Aber so scheint es ja nicht zu sein. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz