AGB  ·  Datenschutz  ·  Impressum  







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

kl. Problem mit button und OnClick

Ein Thema von bodenheim · begonnen am 3. Okt 2008 · letzter Beitrag vom 4. Okt 2008
Antwort Antwort
bodenheim

Registriert seit: 9. Mär 2008
73 Beiträge
 
#1

kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 17:20
Hallo,
ich habe dieses ästhetische Problem, dass wenn ich einen button clicke eine Aktion ausgelöst wird,
die mehrere Minuten dauert und in dieser Zeit bleibt der button gedrückt, und kommt erst wenn fertig wieder rauf.

Möchte aber dass der button erst wieder raufschnappt, und dann wird der Vorgang ausgelöst..
Wie geht das, eine Idee? Danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 17:23
Führe die Aktion in einem weiteren Thread durch
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 17:24
Hallo,

da hätte ich mehrere Lösungsvorschläge im Angebot:

1. Den Code in einen Thread auslagern
2. Im Code des OnClicks des Buttons "Application.ProcessMessages" aufrufen
3. das Ganze in OnKeyUp verlagern

Bei Angebot 2 und 3 bleibt dir aber trotzdem die Application hängen.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
bodenheim

Registriert seit: 9. Mär 2008
73 Beiträge
 
#4

Re: kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 17:33
Zitat von Helmi:
Hallo,

da hätte ich mehrere Lösungsvorschläge im Angebot:

1. Den Code in einen Thread auslagern

weiss ich nicht wie das geht, was ist das??

2. Im Code des OnClicks des Buttons "Application.ProcessMessages" aufrufen
klappt nicht

3. das Ganze in OnKeyUp verlagern
klappt nicht



Bei Angebot 2 und 3 bleibt dir aber trotzdem die Application hängen.
  Mit Zitat antworten Zitat
bodenheim

Registriert seit: 9. Mär 2008
73 Beiträge
 
#5

Re: kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 17:37
mein OnClick löst eine längere procedure aus, muss ich die ganze procedure also in einen thread verlagern..
muss ich mal nachlesen wie das geht.
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 17:53
Zu den Threads:

Delphi-Quellcode:
function ThreadProc(p:Pointer):DWORD; stdcall; //* @Apollonius: TNX */
begin //* dieser code wird Thread ausgeführt */
  MessageBox(0, 'Hallo', '', MB_OK);
  Sleep(10000); //* Thread schläft; Hauptprogramm arbeitet weiter */
  result:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var tid:DWORD;
  hThread:THANDLE;
begin
  hThread:=CreateThread(nil, 0, @ThreadProc, nil, 0, tid);
  CloseHandle(hThread);
end;
mfg
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 17:55
Du hast das stdcall vergessen. Allerdings sollte man im Allgemeinen lieber BeginThread verwenden.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
bodenheim

Registriert seit: 9. Mär 2008
73 Beiträge
 
#8

Re: kl. Problem mit button und OnClick

  Alt 3. Okt 2008, 21:46
Zitat von new32:
Zu den Threads:

Delphi-Quellcode:
function ThreadProc(p:Pointer):DWORD; stdcall; //* @Apollonius: TNX */
begin //* dieser code wird Thread ausgeführt */
  MessageBox(0, 'Hallo', '', MB_OK);
  Sleep(10000); //* Thread schläft; Hauptprogramm arbeitet weiter */
  result:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var tid:DWORD;
  hThread:THANDLE;
begin
  hThread:=CreateThread(nil, 0, @ThreadProc, nil, 0, tid);
  CloseHandle(hThread);
end;
mfg
Hallo nochmal,
aber das nun so gemacht, klappt auch ganz gut bis zum Ende, da bekomme ich einen
Anwendungsfehler: Code 1400 Ungültiges Fensterhandle ??
Wie muss mand die function denn im Kopf deklarieren?
Danke nochmal
  Mit Zitat antworten Zitat
bodenheim

Registriert seit: 9. Mär 2008
73 Beiträge
 
#9

Re: kl. Problem mit button und OnClick

  Alt 4. Okt 2008, 14:19
Thema hat sich erledigt; danke nochmal für die Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:22 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