AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Image (Canvas) Rückgängig Funktion
Thema durchsuchen
Ansicht
Themen-Optionen

Image (Canvas) Rückgängig Funktion

Ein Thema von Dunkelbunt27 · begonnen am 19. Mär 2011 · letzter Beitrag vom 24. Mär 2011
Antwort Antwort
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

AW: Image (Canvas) Rückgängig Funktion

  Alt 19. Mär 2011, 15:03
Das funktioniert in meinem Fall nicht. Es ist jeder Platz belegt. Ich habe praktisch ein Raster, dessen Werte und Eigenschaften der Felder in dem dynamischen, mehrdimensionalen Array gespeichert sind.

Ich hab es jetzt so:
Delphi-Quellcode:
procedure ZustandSpeichern;
var i,n : integer;
begin
  for i := 1 to MaxZeilen do
    for n := 1 to MaxSpalten do
      begin
        SpeicherArray[i,n].zeichen := buchstabe[i,n].zeichen;
        SpeicherArray[i,n].attribut := buchstabe[i,n].attribut;
      end;
end;

procedure ZustandLaden;
var i,n : integer;
begin
  for i := 1 to MaxZeilen do
    for n := 1 to MaxSpalten do
      begin
        buchstabe[i,n].zeichen := SpeicherArray[i,n].zeichen;
        buchstabe[i,n].attribut := SpeicherArray[i,n].attribut;
      end;
end;
Vor dem Zeichnen bzw verändern von Werten in den Feldern wird ZustandSpeichern ausgeführt.
Delphi-Quellcode:
procedure TForm1.UndoClick(Sender: TObject);
begin
   ZustandLaden;
end;
Das sollte funktionieren, tut es aber nicht...

Geändert von Dunkelbunt27 (19. Mär 2011 um 15:12 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Image (Canvas) Rückgängig Funktion

  Alt 19. Mär 2011, 15:08
Achtung: dynamische Arrays beginnen bei Index 0
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#3

AW: Image (Canvas) Rückgängig Funktion

  Alt 19. Mär 2011, 15:10
Meins nicht =)
Ich habe alles um 1 nach rechts verschoben, damit es später logischer nachzuvollziehen ist.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Image (Canvas) Rückgängig Funktion

  Alt 19. Mär 2011, 15:13
Du belegst vielleicht den 1. Index nichtnicht.
Hast du den Array dann entsprechend größer gemacht?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#5

AW: Image (Canvas) Rückgängig Funktion

  Alt 19. Mär 2011, 15:16
Ja, das mit dem Array ist alles richtig, da bin ich mir sicher.
SetLength(Beispiel,MaxZeilen+1,MaxSpalten+1);
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Image (Canvas) Rückgängig Funktion

  Alt 19. Mär 2011, 15:23
Was macht dein Code bzw. nicht?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#7

AW: Image (Canvas) Rückgängig Funktion

  Alt 19. Mär 2011, 15:31
Also kurz zur Erklärung:
Ich klicke ein Feld an, tippe einen Buchstaben und der belegt dann den dazugehörigen Platz im Array. Wenn ich dazu noch dem Feld eine Eigenschaft zuweise, dann wird im Array die Eigenschaft vermerkt (Bsp: feld[1,1].zeichen := 'A'; feld[1,1].attribut := clblue; ).
Ich möchte bevor auf Tastendruck dem eigentlichen Array "feld" das zeichen zugewiesen wird, das Array erst kopieren in "Speicherarray" und dann erst das "feld" Array beschreiben. Dann möchte ich auf Tastendruck die Werte des "feld" Arrays mit denen des "Speicherarrays" überschreiben um den Zustand vor der letzten Taste herzustellen.

Schreiben, Eigenschaften und alles andere funktioniert. Was nicht funktioniert ist die gesuchte Undo-Funktion.

EDIT: Mit Copy(Array) kann man ein Array kopieren. Dies geht aber nur mit eindimensionalen Arrays, ich möchte ein zweidimensionales Array kopieren. Kann mir da wer helfen?

Geändert von Dunkelbunt27 (19. Mär 2011 um 17:14 Uhr)
  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 11:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz