Autor Beitrag
Vamos
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if 12 then// :-P
begin
   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 user profile iconNarses: Topic aus Dateizugriff verschoben am Mi 28.10.2009 um 16:40
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 28.10.09 17:45 
Meinst du sowas?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Lang;
begin
  // 100 Zeilen Code
end;

procedurr TForm2.NochMehr;
begin
  // 200 Zeilen Code
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   if 42 = 43 then
      Lang
   else
      NochMehr;
end;

_________________
We are, we were and will not be.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mi 28.10.09 17:46 
Also ich kapier die Frage leider nicht. :nixweiss:
Sonst würde ich dir gerne Helfen.
Vamos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 28.10.09 17:51 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Meinst du sowas?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Lang;
begin
  // 100 Zeilen Code
end;

procedurr TForm2.NochMehr;
begin
  // 200 Zeilen Code
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:

ausblenden 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if...then
begin
Sammeln;
Loeschen;
end;


Ich hoffe ihr versteht, was ich meine... Thx nochmal

Moderiert von user profile iconKlabautermann: Delphi-Tags eingefügt.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mi 28.10.09 17:54 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure ?;
begin
  Button1.click;
  Button2.click;
// oder
  Button1click({Tobject});
  Button2click({Tobject});
end;

so?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.BSammelnClick(Sender: TObject); 
procedure TForm1.BLoeschenClick(Sender: TObject); 

// Und die sollen direkt aufgerufen werden. Das klappt ja leider nicht: 

if...then 
begin 
BSammelnClick(Sender);   // wenn Sender hier bekannt ist, d.h. das in einer andern OnClick-Methode steht.  
BLoeschenClick(Sender);  // Sonst halt die Bezeichnunug eines passenden Buttons eintragen, z.B. BLoeschen, oder auch
                         // Wenn der Sender gar nicht gebracuht wird, nur NIL
end;

_________________
We are, we were and will not be.
Vamos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 28.10.09 17:59 
Moderiert von user profile iconNarses: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mi 28.10.09 18:03 
Am self sollte es nicht gelegen haben das funktioniert auch.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 28.10.09 18:25 
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 28.10.09 18:36 
Hi,
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconVamos 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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