SaveDialog für TEdit Felder?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Steady
Beiträge: 5
Registriert: Do 10. Okt 2013, 21:45

SaveDialog für TEdit Felder?

Beitrag von Steady »

Wie binde ich einen Save- und einen Open- Dialog so ein, dass der Inhalt mehrerer Eingabefelder des Typs TEdit (kein TMemo) gespeichert/geladen wird?

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: SaveDialog für TEdit Felder?

Beitrag von theo »

Diese Dialoge dienen nur zur Auswahl des Dateinamens und Pfades. Etwas anderes tun die nicht.
Hast du dich schon ein bisschen mit der Pascal Programmierung befasst?

Infos gibt es z.B. hier:
http://www.lazarusforum.de/viewtopic.php?f=21&t=79
http://www.delphi-treff.de/tutorials/

Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 170
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Lazarus 3.8 FPC 3.2.2 x86_64-win64-win32/win64 x86_64-linux-gtk2
CPU-Target: i386, win64, arm

Re: SaveDialog für TEdit Felder?

Beitrag von willi4willi »

Hallo Steady,

Wenn Du die Eingabefelder speichern möchstst, dann geht das ganz einfach mit XMLPropStarage oder IniPropStorage.

Die entsprechende Komponente aufs Formular ziehen und bei den Formulareingenschaften die SessionProperties setzen (z.B. Komponente: Edit1 - Eigenschaft: Text hinzufügen).

Das war es schon. Standardmäßig wird in Projektname.xml bzw. Projektname.ini gespeichert, wenn das Programm beendet wird. Beim Start wieder geladen.

Wenn Du unter verschiedenen Dateinamen speichern und laden möchtest, muss die die Eigenschaft XMLPropStorage.FileName entsprechend bestücken und anschliesend ein XMLPropStorage.Save bzw. XMLPropStorage.Restore ausführen.
Dazu kannst Du dann Deinen SaveDialog nehmen.

Viele Grüße

Willi4Willi
 

Viele Grüße

Willi4Willi

------------

Steady
Beiträge: 5
Registriert: Do 10. Okt 2013, 21:45

Re: SaveDialog für TEdit Felder?

Beitrag von Steady »

Danke für die Antworten.
Ich habe mich bisher fast gar nicht mit Delphi bzw. Lazarus beschäftigt, sodass Ich mich damit auch nicht gut auskenne, lediglich die Konzepte der Programmierung und ein paar Schlüsselwörter sind mir bekannt,
da ich mich davor etwas mit Java beschäftigt habe (Delphi mit Lazarus ist schulisch jetzt wichtig).
XMLPropStarage (Rechtschreibfehler?) oder IniPropStorage finde Ich leider nicht....

Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 170
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Lazarus 3.8 FPC 3.2.2 x86_64-win64-win32/win64 x86_64-linux-gtk2
CPU-Target: i386, win64, arm

Re: SaveDialog für TEdit Felder?

Beitrag von willi4willi »

Misc?
 

Viele Grüße

Willi4Willi

------------

Steady
Beiträge: 5
Registriert: Do 10. Okt 2013, 21:45

Re: SaveDialog für TEdit Felder?

Beitrag von Steady »

willi4willi hat geschrieben:Misc?
Ohh das ist ... peinlich, aber Danke.
Wie soll ich wieter vorgehen mit XML habe ich noch nie gearbeitet, die SessionProperties wurden so bearbeitet (Edit1.Text...)?

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: SaveDialog für TEdit Felder?

Beitrag von theo »

Ich finde den Tipp von Willi für dich nicht so gut.
Versuch doch mal ein Stück Text zu speichern und wieder einzulesen, mit den Hilfen die ich dir gelinkt habe.
Das gehört irgendwie zu den Grundproblemen der Programmiererei und das sollte man schon "von Hand" beherrschen, ohne komplexe Komponenten zu bemühen.

Steady
Beiträge: 5
Registriert: Do 10. Okt 2013, 21:45

Re: SaveDialog für TEdit Felder?

Beitrag von Steady »

theo hat geschrieben:Ich finde den Tipp von Willi für dich nicht so gut.
Versuch doch mal ein Stück Text zu speichern und wieder einzulesen, mit den Hilfen die ich dir gelinkt habe.
Das gehört irgendwie zu den Grundproblemen der Programmiererei und das sollte man schon "von Hand" beherrschen, ohne komplexe Komponenten zu bemühen.
ICh bin auch deiner Meinung (grundlegend),
aber für mich ist Delphi nichts was ich perfekt beherrschen möchte.
Ich möchte nur eine gute Note mit meinem Projekt kriegen und mit zukünftigen,
außerdem ist der Info Unterricht so gestaltet, dass man es innerhalb von 5 Min. lernt und 40 Min. Zeit kriegt es selbst zu machen....sodass man in den 5 Minuten auch nicht mal ins Detail oder auf die Konzepte eingeht....
Unter diesen Aspekten brauche ich "das von Hand" nicht...

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: SaveDialog für TEdit Felder?

Beitrag von Michl »

theo hat geschrieben:Versuch doch mal ein Stück Text zu speichern und wieder einzulesen, mit den Hilfen die ich dir gelinkt habe.
+1

Ansonsten: Schau mal hier (ganz Oben)

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: SaveDialog für TEdit Felder?

Beitrag von gocher »

Wenn Du kein Interesse daran hast, wird es allerdings schwierig eine gute Note zu verdienen, meistens geht das Eine nicht ohne das Andere, oder vielmehr kommt das Eine vom Anderen.
Ich glaube, so wie ich die meisten Lehrer an den Schulen kenne, wollen die gar nichts perfektes, die wollen das Ihr Euch damit befasst, meistens wählt man in der Schule doch die Fächer für die man sich interessiert, oder ist das heute anders?

Ach so hatte ich noch vergessen, ich glaube nicht das Dir ein Lehrer eine gute Note dafür gibt wenn Du eine tolle fertige Komponente einsetzt! Ich vermute eher, wenn Du ein Objekt wie TStringList richtig nutzen würdest, das er begeistert wäre.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Steady
Beiträge: 5
Registriert: Do 10. Okt 2013, 21:45

Re: SaveDialog für TEdit Felder?

Beitrag von Steady »

Ich interessiere mich für Informatik, aber nicht für Delphi/Pascal, hoffentlich ists jetzt geklärt....

Den Link habe ich zuvor auch schon gefunden, nur wie binde ich XMLPropStorage nun mit einem SaveDialog mit einem (bei der OnClick Methode eines Buttons)?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2816
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: SaveDialog für TEdit Felder?

Beitrag von m.fuchs »

"Ich interessiere mich ja für Deutsch, aber nicht für Goethe." - Pech, dann wird der Aufsatz über Faust halt mit einer Fünf benotet.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: SaveDialog für TEdit Felder?

Beitrag von Michl »

Steady hat geschrieben:Ich möchte nur eine gute Note mit meinem Projekt kriegen und mit zukünftigen,
außerdem ist der Info Unterricht so gestaltet, dass man es innerhalb von 5 Min. lernt und 40 Min. Zeit kriegt es selbst zu machen....sodass man in den 5 Minuten auch nicht mal ins Detail oder auf die Konzepte eingeht....
Unter diesen Aspekten brauche ich "das von Hand" nicht...
Ich hätte noch eine alternative Möglichkeit, statt der TXMLPropStorage und hatte gerade die 5 Minuten Zeit und habe mal ein kleines Bsp. geschrieben.

Also im Beispiel sind 5-TEdits, da kann man ein paar Texte eingeben. Darunter ist ein Button "Speichern", wenn man dann Speichert, wird bei jedem neuen Laden alles wieder so angezeigt, wie man auf "Speichern" geklickt hat. Sind zwar noch ein paar Kleinigkeiten, z.B. müsste Datei-Speicher wieder frei gegeben werden, DateiPfad evtl. anpassen, aber ansonsten sollts das erstmal tun, wenn nicht, einfach melden :)

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  Datei: TBitmap;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not assigned(Datei) then begin
    Datei:=TBitmap.Create;
    Datei.SetSize(ClientWidth, ClientHeight);
    Datei.Canvas.CopyRect(ClientRect, Canvas, ClientRect);
    Datei.SaveToFile('Datei');
    Datei.Free;
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  if FileExists('Datei') then begin
 
    for i:=0 to (ControlCount - 1) do
      if (Controls[i] is TCustomEdit) then
        TCustomEdit(Controls[i]).Visible:=False;
 
    Datei:=TBitmap.Create;
    Datei.LoadFromFile('Datei');
  end;
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  if Assigned(Datei) then
    Canvas.StretchDraw(ClientRect, Datei);
end;
 
end.
Oder als fertiges Projekt:
Dateianhänge
projekt.zip
(125.8 KiB) 84-mal heruntergeladen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: SaveDialog für TEdit Felder?

Beitrag von gocher »

+1 :) und der Lehrer wird begeistert sein, er hat nicht mal eine komplizierte Komponente genutzt!!!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Antworten