AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Button-Click warten

Ein Thema von svern · begonnen am 24. Okt 2004 · letzter Beitrag vom 25. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
svern

Registriert seit: 22. Mai 2004
14 Beiträge
 
#1

Auf Button-Click warten

  Alt 24. Okt 2004, 18:30
Hey,

habe ein kleines Anfängerproblem.

Wie kann ich meinem Programm sagen, dass es auf einen Button-Click warten soll und dann erst weiterarbeiten soll?

Habe gedacht, dass ich das in ner Schleife löse:

Delphi-Quellcode:
    while (B2 = False ) do // B2 ist boolean für Button 2 angeklickt oder nicht, siehe unten
    begin
      //sleep(50);
      label6.caption:='klappt';
    end;




Für B2:
procedure TForm1.Button2Click(Sender: TObject);
begin
     B2:=true;
     Netzplan();
end;

Naja, geht so jedenfalls nicht, denn das Programm stürzt ab. Komme also nicht mehr an den Button 2 ran.

Hat jemand nen Tipp?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 18:33
Könntest du die Routine nicht in zwei aufteilen, eine die vor button2.click ausgeführt wird, und eine Button2.click routine ?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 18:34
Hallo svern,

du könntest beim Drücken des Buttons z.B. sein Tag auf einen Wert <> 0 setzen. Im Programm prüfst du diesen Wert in einer Schleife. Dazu müsstest du aber bei jedem Schleifendurchlauf Application.ProcessMessages aufrufen, damit andere Events überhaupt durchkommen. Deine Endlosschleife würde aber zu einer extrem hohen Prozessorlast führen, deshalb nimm lieber einen Thread, den du nach Button Drücken startest oder ggf. einfach eine Prozedur, die mit OnClick des Buttons ausgeführt wird.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#4

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 18:35
Hallo,

du mußt in deiner Schleife immer braf ein Application.ProcessMessages aufrufen damit er weiter Events (wie das Clicken) verarbeiten kann.

BTW: Warum machst du das zeug nicht einfach an der Stelle wo B2 gesetzt wird anstatt ihn in so'ner while schleife dösen zu lassen?
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
svern

Registriert seit: 22. Mai 2004
14 Beiträge
 
#5

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 18:47
Wow, ihr seid echt schnell, thx.

Genau das Application.ProcessMessages hatte ich gesucht

Ich hatte das mal schnell eingebunden,
das Komische ist nur, dass ich das Programm nicht schließen kann, solange er in dieser Schleife ist. Kann ich das noch irgendwie einbauen?
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#6

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 18:53
Ich würde es mit einer zusätzlichen Variable lösen. Eine globale Variable erstellen und im OnCreate auf 0 an der Stelle, an der das Programm erst bei Buttonklick weiterarbeiten soll, die Variable(am besten vom typ integer) auf 1 setzen. Dann den Hauptteil des Programms(das normale arbeiten) in eine if-Abfrage verpacken. Also etwa so:

Delphi-Quellcode:
procedure...
  if Variable = 0 then
    begin
      //was in deinem Programm passieren soll
    end else // also, sobald Variable den Wert 1 hat
    begin
      //hier einen Befehl eingeben, um das Programm anzuhalten
    end;

procedure Button1Click(Sender: TObject)'
begin
if variable = 1 then
variable := 0;
end;
So in etwa... um das Programm zu stoppen, musst du dir einen Befehl überlegen, den ich dir jetzt jedoch nicht vorgeben kann, weil ich ja nicht weiß, was dein programm so machen soll

ich hoffe, ich konnte helfen!

mfg

malo

edit: hab die sache mit der if-Schleife geändert
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 18:56
Zitat von malo:
in eine if-schleife verpacken.
Natürlich. Den Begriff hören wir immer wieder gern ...
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#8

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 19:11
Zitat von jfheins:
Zitat von malo:
in eine if-schleife verpacken.
Natürlich. Den Begriff hören wir immer wieder gern ...
Äh... ja, natürlich wenn du mir einen passenderen Begriff nennst, merk ich ihn mir für später

Äh... aber schick ihn mir besser per PN, damit es nicht zu viel OT hier wird
  Mit Zitat antworten Zitat
svern

Registriert seit: 22. Mai 2004
14 Beiträge
 
#9

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 23:05
Hey,

irgendwie klappt das nicht.

Hab das jetzt so in der einen Prozedur:

Delphi-Quellcode:
 
     while (B2 = False ) do
      begin
        //sleep(50);
        label6.caption:='klappt';
        Application.ProcessMessages;
      end;
      label7.caption:='jojooo';
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
     B2:=true;
     //Netzplan();
end;

Aber er macht das nicht!!! Verdammte Axt, ich check das nicht. Die Prozedur Button2Click wird nicht angewählt, wenn ich die Schleife am Laufen hab... warum nicht? Wie umgeh ich das?
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#10

Re: Auf Button-Click warten

  Alt 24. Okt 2004, 23:17
Hallo,

[schuß-ins-blaue]
kommentiere vielleicht mal das label6.caption:='klappt'; in der Schleife aus und probieren dann nochmal. Vielleicht verdrängt das immer das Klick-Ereignis aus der Verarbeitung... oder arbeitet ProcessMessages immer alle ab
[/schuß-ins-blaue]
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:24 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