Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Prozedurale programmierung Prozeduraufruf einerClickprozedur
Vamos - Mi 28.10.09 17:36
Titel: Prozedurale programmierung Prozeduraufruf einerClickprozedur
Hallo Ihr lieben,
ich stehe vor folgendem Problem:
ich habe bereits eine sehr lange Prozedur per onClick Ereignis im OI erstellt. Diese Prozedur brauche ich nun nochmal so in etwa:
Delphi-Quelltext
1: 2: 3: 4: 5:
| if 1= 2 thenbegin procedure TForm1.BProzedur1Click(Sender: TObject); procedure TForm1.BProzedur2Click(Sender: TObject); end; |
Ich weiss, dass ich das ganze als Funktion deklarieren könnte, nur muss ich dann nicht trotzdem meinen Quelltext noch einmal kopieren?
Die Prozeduren sollen manuell (Per ButtonClick) und bei Bedarf (bestimmter merker in der Log, die beim Starten auf der Form geladen wird = 1) ausgeführt werden.
Per Button kein Problem, automatisch ohne den SC zu kopieren, k.a.
Vielen Dank
PS: Ist schwierig da was zu finden, habe nach Prozeduraufruf + Click und abgewandelt gesucht.. : (
Moderiert von
Narses: Topic aus Dateizugriff verschoben am Mi 28.10.2009 um 16:40
Gausi - Mi 28.10.09 17:45
Meinst du sowas?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Lang; begin end;
procedurr TForm2.NochMehr; begin end;
procedure TForm1.Button1Click(Sender: TObject); begin if 42 = 43 then Lang else NochMehr; end; |
thepaine91 - Mi 28.10.09 17:46
Also ich kapier die Frage leider nicht. :nixweiss:
Sonst würde ich dir gerne Helfen.
Vamos - Mi 28.10.09 17:51
Gausi hat folgendes geschrieben : |
Meinst du sowas?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Lang; begin end;
procedurr TForm2.NochMehr; begin end;
procedure TForm1.Button1Click(Sender: TObject); begin if 42 = 43 then Lang else NochMehr; end; | |
Erstmal danke für die schnelle Antwort!
Ich meine es genau andersrum.
ich habe 18x Clickprozeduren, also prozeduren, die ich hinter den Button des OI gelegt habe.
2 Davon sind ralativ lang und ich benötige Sie noch einmal.
Das Programm soll Dateien löschen. Es gibt im programm 2 Buttons: Daten Sammeln, Daten löschen. Später habe ich mir überlegt, dass das Programm sich merken könnte welche Dateien immer gelöscht werden sollen und deshalb hab ich auf die Form selbst Quelltext gelegt, der nach dem Starten direkt Sammeln und Löschen soll.
Also meine prozeduren:
Delphi-Quelltext
1: 2:
| procedure TForm1.BSammelnClick(Sender: TObject); procedure TForm1.BLoeschenClick(Sender: TObject); |
Und die sollen direkt aufgerufen werden. Das klappt ja leider nicht:
Delphi-Quelltext
1: 2: 3: 4: 5:
| if...then begin Sammeln; Loeschen; end; |
Ich hoffe ihr versteht, was ich meine... Thx nochmal
Moderiert von
Klabautermann: Delphi-Tags eingefügt.
thepaine91 - Mi 28.10.09 17:54
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure ?; begin Button1.click; Button2.click; Button1click(); Button2click(); end; |
so?
Gausi - Mi 28.10.09 17:54
Naja, du musst die Proezduren schon so aufrufen, wie sie heißen, und mit den richtigen Parametern. Also dann wohl so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.BSammelnClick(Sender: TObject); procedure TForm1.BLoeschenClick(Sender: TObject);
if...then begin BSammelnClick(Sender); BLoeschenClick(Sender); end; |
Vamos - Mi 28.10.09 17:59
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
Das wars!! Danke vielmals!
1. Hatte ich Form1.BSammelnClick(Sender); stehen,
2. Das mit dem Sender hatte ich mit (self) versucht...
Jetzt habe ich dank dir bestimmt 100 Zeilen Code gespart! :flehan: :-)
thepaine91 - Mi 28.10.09 18:03
Am self sollte es nicht gelegen haben das funktioniert auch.
Klabautermann - Mi 28.10.09 18:25
thepaine91 hat folgendes geschrieben : |
| Am self sollte es nicht gelegen haben das funktioniert auch. |
Das kommt darauf an, was in den aufgerufenen Methoden mit dem Sender angestellt wird (bzw. ob sie vielleicht nur laufen, wenn Sender ein tButton ist oder ähnliches).
Gruß
Klabautermann
thepaine91 - Mi 28.10.09 18:29
Stimmt in dem Fall funktioniert es nicht mehr das ist richtig.
Verbesserung: Im normalfall funktioniert es mit Self als Sender. ;)
Aber ich ging jetzt davon aus das er dann gesagt hätte es bricht an der und der stelle ab oder es kam der und der Fehler. :nixweiss:
Naja ist ja auch egal frage wurde ja beantworter. :-)
Klabautermann - Mi 28.10.09 18:36
Hi,
thepaine91 hat folgendes geschrieben : |
| Aber ich ging jetzt davon aus das er dann gesagt hätte es bricht an der und der stelle ab oder es kam der und der Fehler. :nixweiss: |
naja, da die Frage darauf hindeutet, dass
Vamos noch nicht sooo viel Erfahrung mit der Programmierung in Delphi hat, halte ich es für möglich, dass er 1. mit dem Debugger noch nicht vertraut genug ist, um in Proceduren hinein zu steppen und 2. eventuell auch die Bedeutung von Konstrukten wie
if sender is tButton then nicht auf Anhieb erkennt.
Daher halte ich Aussagen, die so Pauschal formuliert sind wie deine Ursprüngliche für "gewagt" ;).
Gruß
Klabautermann
thepaine91 - Mi 28.10.09 19:00
*Zustimm*
Aber: :rofl: Wer nicht wagt der nicht gewinnt. :D
Ne mal im ernst ^^ ist schon richtig so ne Aussage sollte man eigentlich ohne zu wissen was überhaupt in der z.B. procedure passiert nicht tätigen.
Du verstehst meinen Gedankengang z.B. sehr gut. :P
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!