AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TStrings zwischenspeichern und wieder herstellen
Thema durchsuchen
Ansicht
Themen-Optionen

TStrings zwischenspeichern und wieder herstellen

Ein Thema von Mazen · begonnen am 18. Feb 2013 · letzter Beitrag vom 18. Feb 2013
Antwort Antwort
Mazen

Registriert seit: 6. Okt 2011
66 Beiträge
 
Delphi 7 Professional
 
#1

TStrings zwischenspeichern und wieder herstellen

  Alt 18. Feb 2013, 12:50
Hallo,

ich habe folgendes Problem:
Ich öffne über einen Button ein neues Formular mit 2 ListBoxen. Deren Inhalt möchte ich bei OnShow in einer Variable zwischenspeichern um diese in OnCloseQuery wiederherstellen zu können falls der Benutzer seine Änderung verwerfen möchte. Dazu habe ich folgenden Aufbau:

tempListShow und tempListHide sind vom Typ TStrings.
Delphi-Quellcode:
procedure TfrmBuchungscodes.FormShow(Sender: TObject);
begin
  tempListShow := listboxShow.Items;
  tempListHide := listboxHide.Items;
end;
Delphi-Quellcode:
procedure TfrmBuchungscodes.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
var
  mb_erg: Integer;
begin
  if buttonClose = false then
  begin
    mb_erg := MessageBox(Application.Handle,pchar('Sollen die Änderungen übernommen werden?'), pchar('Änderungen übernehmen?'), MB_YESNOCANCEL + MB_ICONQUESTION);
    if mb_erg = ID_YES then
      CanClose := true
    else if mb_erg = ID_NO then
    begin
      listboxShow.Items := tempListShow;
      listboxHide.Items := tempListHide;
      CanClose := true;
    end
    else if mb_erg = ID_CANCEL then
      CanClose := false;
  end;
end;
Schließe ich das Formular nun mit "OK", übernehme also die Änderungen so ist der Inhalt beim nächsten Öffnen genau so wie ich es geändert habe.
Verlasse ich das Formular aber mit "Abbrechen" um die Änderungen zu verwerfen finde ich beim nächsten Öffnen des Formulars 2 leere ListBoxen vor.

Kann mir jemand sagen wo hier mein (Denk)fehler liegt?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TStrings zwischenspeichern und wieder herstellen

  Alt 18. Feb 2013, 13:08
Du weist ja nur Pointer zu, brauchst aber eine Kopie.
[edit] Oder in Langform:
Delphi-Quellcode:
procedure TfrmBuchungscodes.FormCreate(Sender: TObject);
begin
  tempListShow := TStringlist.Create;
  tempListHide := TStringlist.Create;
end;

procedure TfrmBuchungscodes.FormDestroy(Sender: TObject);
begin
  tempListShow.Free;
  tempListHide.Free;
end;

procedure TfrmBuchungscodes.FormShow(Sender: TObject);
begin
  tempListShow.Assign(listboxShow.Items);
  tempListHide.Assign(listboxHide.Items);
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (18. Feb 2013 um 13:11 Uhr)
  Mit Zitat antworten Zitat
Mazen

Registriert seit: 6. Okt 2011
66 Beiträge
 
Delphi 7 Professional
 
#3

AW: TStrings zwischenspeichern und wieder herstellen

  Alt 18. Feb 2013, 13:09
Also muss ich per for-Schleife durch die Listen durch und jedes Item einzeln kopieren?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TStrings zwischenspeichern und wieder herstellen

  Alt 18. Feb 2013, 13:14
Nö, aber Du musst zumindest eine Instanz für die Kopie anlegen, siehe mein Edit.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.015 Beiträge
 
Delphi 12 Athens
 
#5

AW: TStrings zwischenspeichern und wieder herstellen

  Alt 18. Feb 2013, 13:19
Es sollte auch nicht unerwähnt bleiben, daß die Variablen zwar vom Typ TStrings sein dürfen, aber mit TStringList.Create erzeugt werden müssen. TStrings implementiert als abstrakte Klasse keine Speicherung der Strings.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Mazen

Registriert seit: 6. Okt 2011
66 Beiträge
 
Delphi 7 Professional
 
#6

AW: TStrings zwischenspeichern und wieder herstellen

  Alt 18. Feb 2013, 13:20
Super, funktioniert.
Danke
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: TStrings zwischenspeichern und wieder herstellen

  Alt 18. Feb 2013, 15:39
Unabhängig dessen, diese Zeile
Delphi-Quellcode:
      CanClose := true;
..
kannst du dir sparen, denn jedes Mal wenn die Prozedur neu aufgerufen wird, ist sie wieder True, auch wenn sie vorher False gestellt wurde. Im Grunde ist nur False Änderung wichig.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.
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