AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Button1Click(Sender:Tobject) direkt ohne Mausklick aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Button1Click(Sender:Tobject) direkt ohne Mausklick aufrufen

Ein Thema von Go2EITS · begonnen am 28. Jun 2006 · letzter Beitrag vom 28. Jun 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#11

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 12:50
Zitat von Muetze1:
Wieso Resourcenverschwendung? Es ist viel besser wiedervendbarer und leichter zu durchschauen.

Schon allein als ein Argument: Wenn du es in einer extra Methode implementierst ist es für spätere Anwendungen einfacher und viel leichter (bzw. wohl überhaupt möglich) diese virtuell zu markieren und somit bei Ableitungen überschreibbar zu machen. Ereignisbehandlungsroutinen dürfen bzw. sollten nicht virtuell oder dynamisch sein, afair.
^^ mag ja sein... aber ich schliess mich dan sir thoronberry an...
vor allem wenn du 2 mal der fast gleiche code drinne hast, fragt sich jeder andere der des programm lesen muss am anfang erst mal was das soll...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#12

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 12:54
Zitat von Andidreas:
mag ja sein... aber ich schliess mich dan sir thoronberry an...
vor allem wenn du 2 mal der fast gleiche code drinne hast, fragt sich jeder andere der des programm lesen muss am anfang erst mal was das soll...
Wieso zweimal der gleiche Code?? Ich werde niemals doppelten, unsinnigen Code propagandieren! Ich sagte eine Methode oder Procedure mit dem Code (diese ist dann neu) und wird dann von 2 unterschiedlichen Stellen aus aufgerufen. Wo ist denn hier der doppelte Code bitte schön? Der Aufruf? Hallo? Den haben wir auch in eurem Beispiel doppelt: Einmal in der Komponente und einmal wo der die Behandlungsroutine nochmals aufruft.

Ich fühl mich mehr als unverstanden hier...

Naja, macht doch was ihr wollt, es hat eh keinen Zweck hier...
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#13

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 12:56
Ach Quatsch...

Nun wollen wir doch mal die Kirche im Dorf lassen....

Ich will doch für meinen Source-Code keinen Preis gewinnen, sondern Geld mit dem
fertigen Produkt verdienen... Da ist dem Anwender doch egal wie es intern aussieht...

Außerdem...: Es sei den ich irre mich... Erzeugt ein Button2.Click ja lediglich einen
Event in der MessageQue der erst beim nächsten Idle, Application.Processmessages oder Rücksprung in die Verarbeitungsschleife, verarbeitet wird.

Somit bin ich nicht sichern, ob die Aktion überhaupt zum richtigen Zeipunkt aufgerufen wird...

Beispiel:

Delphi-Quellcode:
begin
  Button1.Click; // Der Button hat X neu belegt...
  if x=y then
  ....
end;
Funktioniert NICHT!

Delphi-Quellcode:
begin
  Button1Click(self); // Der Button hat X neu belegt...
  if x=y then
  ....
end;
FUNKTIONIERT!!!

Frank (so das musste raus! Sorry)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#14

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 13:02
Ich hatte es oben geschrieben, dass man das Ereignis auch erneut auslösen kann durch Aufruf der Click Methode. Wann dies zeitlich geschieht, habe ich nirgends geschrieben. Das war mit ein Grund, warum ich diese Lösung nicht gleich in meinem aller ersten Code gepostet hatte.

Und solche Abläufe wie du es gerade geschrieben hast, fördern wieder den Ruf nach einer eigenständigen Methode auf die von 2 Stellen verzweigt wird.

Ausserdem kommt es sehr wohl auf den Code in einem Programm an. Zum einen ist Spaghetti Code wirklich schlecht pfleg- und wartbar und zum anderen gibt es immer wieder Fälle wo doch mal andere mit dem Quellcode weiter arbeiten müssen. Da du dann das Wissen hast wo was, wie und weshalb aufgerufen wird, ist Klasse - aber das hilft keinem anderen.

Ausserdem sollte man auch im Kopf behalten, dass es bei vielen Aufträgen eine Mitgabe der Quellen zur weiteren Pflege und Fortentwicklung mit im Auftrag enthalten ist. Zum Teil auch nur auf Grund von Sicherheitsaspekten.

Ausser mquadrat hat hier anscheinend noch keiner den Sinn dahinter verstanden oder weiss was es bedeutet.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 13:05
Zitat von Muetze1:
Ausserdem sollte man auch im Kopf behalten, dass es bei vielen Aufträgen eine Mitgabe der Quellen zur weiteren Pflege und Fortentwicklung mit im Auftrag enthalten ist. Zum Teil auch nur auf Grund von Sicherheitsaspekten.
Ein Grund, warum ich das seit 25 Jahren NICHT mache... lol
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#16

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 13:12
Zitat von Mavarik:
Ein Grund, warum ich das seit 25 Jahren NICHT mache... lol
Wenn du keine (öffentlichen) Aufträge annimmst, dann kannst du auch weiterhin so programmieren. Ich versuche hier nur trotzdem gleich einen Weg vorzugeben bzw. auf zu zeigen womit der Threadersteller vllt. später weniger Probleme bekommen wird, wenn er es gleich "richtig" sieht bzw. liest. Es ist leicht eine komische Programmierweise sich an zu gewöhnen, aber schwer dies wieder ab zu gewöhnen. Wenn Leute die hier oft propagandierten Dinge lernen und dann später im Team arbeiten müssen, dann sind sie erstmal aufgeschmissen. Ich sehe es auch zu oft das Leute programmiertechnisch wunderbare Lösungen bauen, vorschlagen etc und dann bei der Implementation sich durch schlechten Code verzetteln oder einfach an den falschen Stellen ansetzen. Auch diese Leute suchen nicht die wahre Fehlerquelle sondern doktorn lieber an den Auswirkungen - und das meist durch miesen Code.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#17

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 13:16
Hallo Leute,

ich weiss, dass Objekte um neue Eigenschaften erweitert/verändert werden können.

In meinem Fall ist der exakt gleiche Code aufzurufen, wenn das Programm
vom Anwender als "unsichtbar" gewünscht wird. In dem Fall rufe ich Button1.click(NIL) auf.
und es funktioniert!

Ich spare mir:
Viel Zeit, weil ich in 2 Minuten die Lösung hatte,
Aufgeblähten Code, weil ich nicht die Choose in eine einfache Procedur/Function stecken musste
und ich kann weiterarbeiten, weil ich nicht OOP lernen muss.
Es gibt keine Probleme, da der betreffende Button nicht sichtbar ist.

@Muetze1
Vielen Dank für Deine Mühe. Der User kann Button1.click nicht aufrufen.
Das Programm ist unsichtbar. Nur in diesem Modus wird der Button1.Click "simuliert".
Somit kann es "Probleme" bei der Ausführung des Programmes und bei möglichen Zugriffen auf Variablen/Dateien/Eigenschaften/Methoden von Objekten etc. nicht geben.
Ich kann Dir leider nicht nicht weiter folgen, da mir das Wissen dazu fehlt. Aber ich denke statt "Scharmützel" solle es nachvollziehbare Beispiele geben, die auch wir als Anfänger verstehen.


Go2EITS
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#18

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 13:29
Zitat von Go2EITS:
ich weiss, dass Objekte um neue Eigenschaften erweitert/verändert werden können.
Das brauchen wir hier nicht.

Zitat von Go2EITS:
Ich spare mir:
Viel Zeit, weil ich in 2 Minuten die Lösung hatte,
Aufgeblähten Code, weil ich nicht die Choose in eine einfache Procedur/Function stecken musste
und ich kann weiterarbeiten, weil ich nicht OOP lernen muss.
Es gibt keine Probleme, da der betreffende Button nicht sichtbar ist.
Wodurch wird der Code denn aufgebläht, wenn du eine Procedure definierst?
Es tut nicht weh und ist kein Nachteil OOP zu lernen - und hier auch gar nicht im Detail von nöten!
Die Sichtbarkeit des Buttons ist hierbei unerheblich.

Zitat von Go2EITS:
Vielen Dank für Deine Mühe. Der User kann Button1.click nicht aufrufen.
Wie sollte der User das auch können, schliesslich hast du bestimmt kein Interpreter bei dir eingebaut. Du sollst an der Stelle wo du nun Button1Click(nil); aufrufst einfach Button1.Click; als Alternative schreiben. Was sollte das mit dem User zu tun haben?

Zitat von Go2EITS:
Das Programm ist unsichtbar. Nur in diesem Modus wird der Button1.Click "simuliert".
Ja und? Tut hier nicht zur Sache, ist unerheblich.

Zitat von Go2EITS:
Somit kann es "Probleme" bei der Ausführung des Programmes und bei möglichen Zugriffen auf Variablen/Dateien/Eigenschaften/Methoden von Objekten etc. nicht geben.
Die Methode wäre im selben Kontext, somit kann es da keine Probleme geben.

Zitat von Go2EITS:
Ich kann Dir leider nicht nicht weiter folgen, da mir das Wissen dazu fehlt. Aber ich denke statt "Scharmützel" solle es nachvollziehbare Beispiele geben, die auch wir als Anfänger verstehen.
Ok, Dein Code wie er jetzt wohl aussieht:

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
  ... viel Code
End;

Procedure TForm1.AndereMethode;
Begin
  irgendwelcher Code
  Button1Click(Nil);
End;
Ok, und davon rede ich:

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
  MachWas;
End;

Procedure TForm1.AndereMethode;
Begin
  irgendwelcher Code
  MachWas;
End;

Procedure TForm1.MachWas;
Begin
  ... viel Code
End;
Wenn du nun noch dem "MachWas" einen beschreibenden (aber nicht ausufernden) Namen verpasst, dann weisst du auch später sofort was der macht.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#19

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 13:46
@Mutze1

Vielen Dank für Deine ausführlichen Ausführungen.
Ich habe nicht gescheckt, dass ich eine Procedure wie

procedure TForm1.Button8Click(Sender: TObject);

mit Button8.Click aufrufen kann. Aber darauf muss man erst mal kommen.


Ich glaube JETZT habe ich es verstanden:

Procedure TForm1.MachWas;
Begin
... viel Code
End;

wird von der TForm1.Button8Click(Sender: TObject) aufgerufen oder
von Code in z. B. von TForm1.Irgendwasanderes aufgerufen.
Damit wird der Code nicht doppelt angelegt und "sauber" programmiert.

Danke!!!
  Mit Zitat antworten Zitat
morri

Registriert seit: 6. Jun 2006
Ort: Wuppertal
106 Beiträge
 
Delphi 7 Professional
 
#20

Re: Button1Click(Sender:Tobject) direkt ohne Mausklick aufru

  Alt 28. Jun 2006, 13:51
Zitat:
Damit wird der Code nicht doppelt angelegt und "sauber" programmiert.

Richtig.

So habe ich es damals in der Schule übrigens auch gelernt...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz