Button1Click() rückgängig machen
-
- Beiträge: 58
- Registriert: Sa 28. Aug 2010, 18:30
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Button1Click() rückgängig machen
Hallo zusammen,
In meinem Programm wird,wenn man auf einen Button klickt, eine Zufallslienie (über canvas) in eine Paintbox gezeichnet.
Nun möchte ich einen Rückgängig-Button machen!
Meine Frage ist nun wie ich die Button1Click() procedure rückgängig machen kann.
Danke schon mal im vorraus.
mfg Jaslaz
In meinem Programm wird,wenn man auf einen Button klickt, eine Zufallslienie (über canvas) in eine Paintbox gezeichnet.
Nun möchte ich einen Rückgängig-Button machen!
Meine Frage ist nun wie ich die Button1Click() procedure rückgängig machen kann.
Danke schon mal im vorraus.
mfg Jaslaz
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Button1Click() rückgängig machen
... indem du das Bild ohne die Linie neuzeichnest. Da du sicherlich sowieso ein Bitmap als Buffer verwendest (wenn nicht, wirds Zeit!), kannst du natürlich davon auch vor jeder Aktion einfach eine Kopie machen, die du dann wieder zurückspielst (.Assign lässt grüßen).
-
- Beiträge: 58
- Registriert: Sa 28. Aug 2010, 18:30
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Button1Click() rückgängig machen
Wie funktioniert das genau?Hitman hat geschrieben:Da du sicherlich sowieso ein Bitmap als Buffer verwendest
Re: Button1Click() rückgängig machen
Also, um was "geCanvates" wieder weg zumachen schreibst du einfach [name des Control].Canvas.Refresh;
Sprich bei einer Paintbox: Paintbox1.Canvas.Refresh;
Sprich bei einer Paintbox: Paintbox1.Canvas.Refresh;
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!
it´s not a bug, it´s a feature!
-
- Beiträge: 58
- Registriert: Sa 28. Aug 2010, 18:30
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Button1Click() rückgängig machen
Danke Felix96, aber ich meine das eigentlich so: Ich zeichne zum Beispiel eine Zufallslienie und dann noch eine!Wie kann ich nun nur die zweite wegmachen???
Re: Button1Click() rückgängig machen
Das geht nicht ohne weiteres. Da brauchst du irgend ein Undo System.jaslaz hat geschrieben:Danke Felix96, aber ich meine das eigentlich so: Ich zeichne zum Beispiel eine Zufallslienie und dann noch eine!Wie kann ich nun nur die zweite wegmachen???
Entweder du speicherst jede Stufe der Bearbeitung einzeln als Bmp (Speicherintensiv) oder zeichnest Anhand einer Liste von Koordinaten immer alles neu.
Dann entfernst du z.B. den letzen Listeneintrag und zeichnest wieder.
-
- Beiträge: 58
- Registriert: Sa 28. Aug 2010, 18:30
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Button1Click() rückgängig machen
Wie kann ich den die Koordinaten abspeichern, wenn sie durch Zufall entstehen?
Hier mein Code:
Hier mein Code:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var n,oft,dicke:integer ; breite,lange:real;
begin
randomize;
oft:=strtoint(edit1.text);
dicke:=strtoint(spinedit1.text);
for n:=1 to oft do
begin
with paintbox1.canvas do
begin
pen.color:=colorbox1.Selected;
pen.width:=dicke;
MoveTo(random(501),random(501));
LineTo(random(501),random(501));
end;
end;
end;
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Button1Click() rückgängig machen
Kannst du,
indem du ein array of record anlegst, das im Formular gespeichert wird.
Beim Button1Click wird dann eine neue Koordinate eingezeichnet und in der Paintbox.redraw aufgerufen wird.
Dann baust du noch bei der Paintbox ein onPaint-Ereignis ein, das die Liste von Linien zeichnet.
indem du ein array of record anlegst, das im Formular gespeichert wird.
Beim Button1Click wird dann eine neue Koordinate eingezeichnet und in der Paintbox.redraw aufgerufen wird.
Dann baust du noch bei der Paintbox ein onPaint-Ereignis ein, das die Liste von Linien zeichnet.
-
- Beiträge: 58
- Registriert: Sa 28. Aug 2010, 18:30
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Button1Click() rückgängig machen
Könntest du das nochmal etwas genauer erklären,ich bin nämlich noch Anfänger!carli hat geschrieben:Kannst du,
indem du ein array of record anlegst, das im Formular gespeichert wird.
Beim Button1Click wird dann eine neue Koordinate eingezeichnet und in der Paintbox.redraw aufgerufen wird.
Dann baust du noch bei der Paintbox ein onPaint-Ereignis ein, das die Liste von Linien zeichnet.
Re: Button1Click() rückgängig machen
Was verstehst du denn nicht? Array of Record? PaintBox?jaslaz hat geschrieben: Könntest du das nochmal etwas genauer erklären,ich bin nämlich noch Anfänger!
Du solltest präziser fragen, dann kann man auch antworten.
Sonst läuft's darauf raus, dass dir jemand eine fertige Lösung basteln muss, und das ist ja nicht der Sinn der Sache, oder?

-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Button1Click() rückgängig machen
Genau das wollte ich vermeidentheo hat geschrieben: Sonst läuft's darauf raus, dass dir jemand eine fertige Lösung basteln muss, und das ist ja nicht der Sinn der Sache, oder?

Jedoch gibt es immer wieder Dumme, die genau das tun und Google spürt sie auch noch aus allen Ecken und Enden der Welt auf. Dumm ist nur, wenn man Google nicht benutzen kann

-
- Beiträge: 58
- Registriert: Sa 28. Aug 2010, 18:30
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Button1Click() rückgängig machen
Nein sorry so war das nicht gemeint,das soll ja auch mein eigenes Programm werden!
Was genau heißt das?indem du ein array of record anlegst
Was macht diese Funktion?Paintbox.redraw
Re: Button1Click() rückgängig machen
Ist nicht böse gemeint, aber wenn du mit diesen Begriffen gar nichts anfangen kannst, solltest du dir eine Einführung in Pascal oder Delphi in Buchform kaufen oder ausleihen. Das sind Ur-Datentypen in Pascal seit 1972.jaslaz hat geschrieben: Was genau heißt das?

Das Lazarus Forum kann keine Einführung in die Grundlagen der Programmierung geben.
Redraw = Neu zeichnen. Ist aber noch belanglos, wenn du die Grundlagen noch nicht kennst.jaslaz hat geschrieben: Was macht diese Funktion?
-
- Beiträge: 58
- Registriert: Sa 28. Aug 2010, 18:30
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Button1Click() rückgängig machen
Wir lernen Lazarus immoment in der Schule und ich kann jetzt schon vielmehr als wir können müssen!´
Im Grunde genommen lernen wir da garnichts.
Und nun wollte ich mir so aus Spaß ein kleines Programm machen!
Aber was würdest du mir denn als Buch empfehlen(Ich hab auch schon von dem Lazarus-Buch gehört,aber das ist zu neu für Bücherein und ich finde es auch zu teuer um mal eben ein paar kleine Programme zu schreiben)
Im Grunde genommen lernen wir da garnichts.
Und nun wollte ich mir so aus Spaß ein kleines Programm machen!
Aber was würdest du mir denn als Buch empfehlen(Ich hab auch schon von dem Lazarus-Buch gehört,aber das ist zu neu für Bücherein und ich finde es auch zu teuer um mal eben ein paar kleine Programme zu schreiben)
Re: Button1Click() rückgängig machen
Habt ihr kein Unterrichtsbuch?jaslaz hat geschrieben:Wir lernen Lazarus immoment in der Schule und ich kann jetzt schon vielmehr als wir können müssen!´
Für solche Sachen wie Array Records etc. reicht eigentlich jede Einführung in Pascal.jaslaz hat geschrieben: Aber was würdest du mir denn als Buch empfehlen(Ich hab auch schon von dem Lazarus-Buch gehört,aber das ist zu neu für Bücherein und ich finde es auch zu teuer um mal eben ein paar kleine Programme zu schreiben)
Geh mal in die Bibliothek (gibt's das noch?
