| Autor |
Beitrag |
Vamos
      
Beiträge: 44
|
Verfasst: Mi 28.10.09 17:36
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
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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; |
_________________ We are, we were and will not be.
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Mi 28.10.09 17:46
Also ich kapier die Frage leider nicht.
Sonst würde ich dir gerne Helfen.
|
|
Vamos 
      
Beiträge: 44
|
Verfasst: 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
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: 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
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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; |
_________________ We are, we were and will not be.
|
|
Vamos 
      
Beiträge: 44
|
Verfasst: 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! 
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Mi 28.10.09 18:03
Am self sollte es nicht gelegen haben das funktioniert auch.
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: 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
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: 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.
Naja ist ja auch egal frage wurde ja beantworter. 
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: 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.  |
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
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Mi 28.10.09 19:00
*Zustimm*
Aber:  Wer nicht wagt der nicht gewinnt.
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. 
|
|